15ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.file "crypto/aes/asm/aesni-x86.s" 25ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.text 35ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.globl _aesni_encrypt 45ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align 4 55ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com_aesni_encrypt: 65ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL_aesni_encrypt_begin: 75ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl 4(%esp),%eax 85ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl 12(%esp),%edx 95ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups (%eax),%xmm2 105ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl 240(%edx),%ecx 115ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl 8(%esp),%eax 125ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups (%edx),%xmm0 135ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups 16(%edx),%xmm1 145ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 32(%edx),%edx 155ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm0,%xmm2 165ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL000enc1_loop_1: 175ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,220,209 185ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com decl %ecx 195ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups (%edx),%xmm1 205ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 16(%edx),%edx 215ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jnz L000enc1_loop_1 225ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,221,209 235ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm2,(%eax) 245ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com ret 255ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.globl _aesni_decrypt 265ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align 4 275ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com_aesni_decrypt: 285ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL_aesni_decrypt_begin: 295ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl 4(%esp),%eax 305ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl 12(%esp),%edx 315ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups (%eax),%xmm2 325ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl 240(%edx),%ecx 335ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl 8(%esp),%eax 345ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups (%edx),%xmm0 355ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups 16(%edx),%xmm1 365ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 32(%edx),%edx 375ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm0,%xmm2 385ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL001dec1_loop_2: 395ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,222,209 405ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com decl %ecx 415ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups (%edx),%xmm1 425ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 16(%edx),%edx 435ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jnz L001dec1_loop_2 445ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,223,209 455ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm2,(%eax) 465ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com ret 475ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align 4 485ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com__aesni_encrypt3: 495ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups (%edx),%xmm0 505ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com shrl $1,%ecx 515ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups 16(%edx),%xmm1 525ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 32(%edx),%edx 535ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm0,%xmm2 545ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor %xmm0,%xmm3 555ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor %xmm0,%xmm4 565ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups (%edx),%xmm0 575ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL002enc3_loop: 585ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,220,209 595ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,220,217 605ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com decl %ecx 615ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,220,225 625ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups 16(%edx),%xmm1 635ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,220,208 645ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,220,216 655ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 32(%edx),%edx 665ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,220,224 675ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups (%edx),%xmm0 685ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jnz L002enc3_loop 695ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,220,209 705ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,220,217 715ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,220,225 725ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,221,208 735ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,221,216 745ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,221,224 755ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com ret 765ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align 4 775ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com__aesni_decrypt3: 785ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups (%edx),%xmm0 795ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com shrl $1,%ecx 805ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups 16(%edx),%xmm1 815ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 32(%edx),%edx 825ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm0,%xmm2 835ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor %xmm0,%xmm3 845ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor %xmm0,%xmm4 855ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups (%edx),%xmm0 865ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL003dec3_loop: 875ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,222,209 885ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,222,217 895ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com decl %ecx 905ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,222,225 915ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups 16(%edx),%xmm1 925ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,222,208 935ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,222,216 945ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 32(%edx),%edx 955ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,222,224 965ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups (%edx),%xmm0 975ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jnz L003dec3_loop 985ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,222,209 995ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,222,217 1005ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,222,225 1015ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,223,208 1025ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,223,216 1035ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,223,224 1045ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com ret 1055ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align 4 1065ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com__aesni_encrypt4: 1075ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups (%edx),%xmm0 1085ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups 16(%edx),%xmm1 1095ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com shrl $1,%ecx 1105ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 32(%edx),%edx 1115ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm0,%xmm2 1125ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor %xmm0,%xmm3 1135ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor %xmm0,%xmm4 1145ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor %xmm0,%xmm5 1155ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups (%edx),%xmm0 1165ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL004enc4_loop: 1175ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,220,209 1185ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,220,217 1195ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com decl %ecx 1205ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,220,225 1215ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,220,233 1225ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups 16(%edx),%xmm1 1235ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,220,208 1245ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,220,216 1255ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 32(%edx),%edx 1265ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,220,224 1275ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,220,232 1285ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups (%edx),%xmm0 1295ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jnz L004enc4_loop 1305ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,220,209 1315ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,220,217 1325ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,220,225 1335ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,220,233 1345ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,221,208 1355ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,221,216 1365ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,221,224 1375ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,221,232 1385ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com ret 1395ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align 4 1405ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com__aesni_decrypt4: 1415ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups (%edx),%xmm0 1425ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups 16(%edx),%xmm1 1435ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com shrl $1,%ecx 1445ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 32(%edx),%edx 1455ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm0,%xmm2 1465ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor %xmm0,%xmm3 1475ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor %xmm0,%xmm4 1485ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor %xmm0,%xmm5 1495ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups (%edx),%xmm0 1505ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL005dec4_loop: 1515ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,222,209 1525ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,222,217 1535ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com decl %ecx 1545ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,222,225 1555ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,222,233 1565ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups 16(%edx),%xmm1 1575ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,222,208 1585ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,222,216 1595ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 32(%edx),%edx 1605ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,222,224 1615ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,222,232 1625ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups (%edx),%xmm0 1635ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jnz L005dec4_loop 1645ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,222,209 1655ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,222,217 1665ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,222,225 1675ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,222,233 1685ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,223,208 1695ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,223,216 1705ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,223,224 1715ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,223,232 1725ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com ret 1735ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align 4 1745ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com__aesni_encrypt6: 1755ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups (%edx),%xmm0 1765ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com shrl $1,%ecx 1775ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups 16(%edx),%xmm1 1785ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 32(%edx),%edx 1795ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm0,%xmm2 1805ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor %xmm0,%xmm3 1815ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,220,209 1825ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor %xmm0,%xmm4 1835ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,220,217 1845ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor %xmm0,%xmm5 1855ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com decl %ecx 1865ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,220,225 1875ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor %xmm0,%xmm6 1885ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,220,233 1895ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor %xmm0,%xmm7 1905ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,220,241 1915ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups (%edx),%xmm0 1925ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,220,249 1935ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jmp L_aesni_encrypt6_enter 1945ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align 4,0x90 1955ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL006enc6_loop: 1965ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,220,209 1975ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,220,217 1985ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com decl %ecx 1995ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,220,225 2005ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,220,233 2015ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,220,241 2025ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,220,249 2035ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align 4,0x90 2045ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL_aesni_encrypt6_enter: 2055ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups 16(%edx),%xmm1 2065ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,220,208 2075ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,220,216 2085ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 32(%edx),%edx 2095ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,220,224 2105ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,220,232 2115ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,220,240 2125ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,220,248 2135ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups (%edx),%xmm0 2145ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jnz L006enc6_loop 2155ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,220,209 2165ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,220,217 2175ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,220,225 2185ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,220,233 2195ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,220,241 2205ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,220,249 2215ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,221,208 2225ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,221,216 2235ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,221,224 2245ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,221,232 2255ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,221,240 2265ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,221,248 2275ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com ret 2285ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align 4 2295ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com__aesni_decrypt6: 2305ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups (%edx),%xmm0 2315ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com shrl $1,%ecx 2325ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups 16(%edx),%xmm1 2335ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 32(%edx),%edx 2345ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm0,%xmm2 2355ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor %xmm0,%xmm3 2365ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,222,209 2375ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor %xmm0,%xmm4 2385ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,222,217 2395ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor %xmm0,%xmm5 2405ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com decl %ecx 2415ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,222,225 2425ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor %xmm0,%xmm6 2435ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,222,233 2445ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor %xmm0,%xmm7 2455ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,222,241 2465ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups (%edx),%xmm0 2475ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,222,249 2485ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jmp L_aesni_decrypt6_enter 2495ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align 4,0x90 2505ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL007dec6_loop: 2515ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,222,209 2525ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,222,217 2535ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com decl %ecx 2545ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,222,225 2555ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,222,233 2565ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,222,241 2575ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,222,249 2585ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align 4,0x90 2595ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL_aesni_decrypt6_enter: 2605ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups 16(%edx),%xmm1 2615ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,222,208 2625ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,222,216 2635ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 32(%edx),%edx 2645ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,222,224 2655ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,222,232 2665ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,222,240 2675ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,222,248 2685ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups (%edx),%xmm0 2695ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jnz L007dec6_loop 2705ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,222,209 2715ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,222,217 2725ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,222,225 2735ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,222,233 2745ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,222,241 2755ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,222,249 2765ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,223,208 2775ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,223,216 2785ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,223,224 2795ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,223,232 2805ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,223,240 2815ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,223,248 2825ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com ret 2835ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.globl _aesni_ecb_encrypt 2845ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align 4 2855ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com_aesni_ecb_encrypt: 2865ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL_aesni_ecb_encrypt_begin: 2875ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pushl %ebp 2885ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pushl %ebx 2895ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pushl %esi 2905ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pushl %edi 2915ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl 20(%esp),%esi 2925ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl 24(%esp),%edi 2935ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl 28(%esp),%eax 2945ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl 32(%esp),%edx 2955ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl 36(%esp),%ebx 2965ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com andl $-16,%eax 2975ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jz L008ecb_ret 2985ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl 240(%edx),%ecx 2995ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com testl %ebx,%ebx 3005ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jz L009ecb_decrypt 3015ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl %edx,%ebp 3025ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl %ecx,%ebx 3035ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com cmpl $96,%eax 3045ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jb L010ecb_enc_tail 3055ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqu (%esi),%xmm2 3065ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqu 16(%esi),%xmm3 3075ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqu 32(%esi),%xmm4 3085ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqu 48(%esi),%xmm5 3095ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqu 64(%esi),%xmm6 3105ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqu 80(%esi),%xmm7 3115ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 96(%esi),%esi 3125ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com subl $96,%eax 3135ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jmp L011ecb_enc_loop6_enter 3145ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align 4,0x90 3155ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL012ecb_enc_loop6: 3165ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm2,(%edi) 3175ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqu (%esi),%xmm2 3185ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm3,16(%edi) 3195ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqu 16(%esi),%xmm3 3205ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm4,32(%edi) 3215ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqu 32(%esi),%xmm4 3225ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm5,48(%edi) 3235ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqu 48(%esi),%xmm5 3245ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm6,64(%edi) 3255ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqu 64(%esi),%xmm6 3265ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm7,80(%edi) 3275ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 96(%edi),%edi 3285ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqu 80(%esi),%xmm7 3295ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 96(%esi),%esi 3305ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL011ecb_enc_loop6_enter: 3315ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com call __aesni_encrypt6 3325ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl %ebp,%edx 3335ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl %ebx,%ecx 3345ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com subl $96,%eax 3355ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jnc L012ecb_enc_loop6 3365ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm2,(%edi) 3375ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm3,16(%edi) 3385ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm4,32(%edi) 3395ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm5,48(%edi) 3405ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm6,64(%edi) 3415ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm7,80(%edi) 3425ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 96(%edi),%edi 3435ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com addl $96,%eax 3445ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jz L008ecb_ret 3455ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL010ecb_enc_tail: 3465ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups (%esi),%xmm2 3475ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com cmpl $32,%eax 3485ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jb L013ecb_enc_one 3495ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups 16(%esi),%xmm3 3505ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com je L014ecb_enc_two 3515ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups 32(%esi),%xmm4 3525ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com cmpl $64,%eax 3535ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jb L015ecb_enc_three 3545ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups 48(%esi),%xmm5 3555ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com je L016ecb_enc_four 3565ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups 64(%esi),%xmm6 3575ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm7,%xmm7 3585ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com call __aesni_encrypt6 3595ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm2,(%edi) 3605ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm3,16(%edi) 3615ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm4,32(%edi) 3625ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm5,48(%edi) 3635ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm6,64(%edi) 3645ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jmp L008ecb_ret 3655ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align 4,0x90 3665ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL013ecb_enc_one: 3675ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups (%edx),%xmm0 3685ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups 16(%edx),%xmm1 3695ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 32(%edx),%edx 3705ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm0,%xmm2 3715ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL017enc1_loop_3: 3725ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,220,209 3735ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com decl %ecx 3745ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups (%edx),%xmm1 3755ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 16(%edx),%edx 3765ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jnz L017enc1_loop_3 3775ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,221,209 3785ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm2,(%edi) 3795ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jmp L008ecb_ret 3805ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align 4,0x90 3815ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL014ecb_enc_two: 3825ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm4,%xmm4 3835ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com call __aesni_encrypt3 3845ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm2,(%edi) 3855ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm3,16(%edi) 3865ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jmp L008ecb_ret 3875ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align 4,0x90 3885ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL015ecb_enc_three: 3895ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com call __aesni_encrypt3 3905ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm2,(%edi) 3915ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm3,16(%edi) 3925ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm4,32(%edi) 3935ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jmp L008ecb_ret 3945ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align 4,0x90 3955ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL016ecb_enc_four: 3965ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com call __aesni_encrypt4 3975ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm2,(%edi) 3985ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm3,16(%edi) 3995ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm4,32(%edi) 4005ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm5,48(%edi) 4015ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jmp L008ecb_ret 4025ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align 4,0x90 4035ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL009ecb_decrypt: 4045ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl %edx,%ebp 4055ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl %ecx,%ebx 4065ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com cmpl $96,%eax 4075ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jb L018ecb_dec_tail 4085ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqu (%esi),%xmm2 4095ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqu 16(%esi),%xmm3 4105ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqu 32(%esi),%xmm4 4115ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqu 48(%esi),%xmm5 4125ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqu 64(%esi),%xmm6 4135ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqu 80(%esi),%xmm7 4145ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 96(%esi),%esi 4155ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com subl $96,%eax 4165ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jmp L019ecb_dec_loop6_enter 4175ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align 4,0x90 4185ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL020ecb_dec_loop6: 4195ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm2,(%edi) 4205ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqu (%esi),%xmm2 4215ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm3,16(%edi) 4225ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqu 16(%esi),%xmm3 4235ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm4,32(%edi) 4245ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqu 32(%esi),%xmm4 4255ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm5,48(%edi) 4265ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqu 48(%esi),%xmm5 4275ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm6,64(%edi) 4285ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqu 64(%esi),%xmm6 4295ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm7,80(%edi) 4305ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 96(%edi),%edi 4315ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqu 80(%esi),%xmm7 4325ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 96(%esi),%esi 4335ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL019ecb_dec_loop6_enter: 4345ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com call __aesni_decrypt6 4355ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl %ebp,%edx 4365ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl %ebx,%ecx 4375ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com subl $96,%eax 4385ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jnc L020ecb_dec_loop6 4395ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm2,(%edi) 4405ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm3,16(%edi) 4415ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm4,32(%edi) 4425ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm5,48(%edi) 4435ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm6,64(%edi) 4445ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm7,80(%edi) 4455ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 96(%edi),%edi 4465ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com addl $96,%eax 4475ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jz L008ecb_ret 4485ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL018ecb_dec_tail: 4495ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups (%esi),%xmm2 4505ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com cmpl $32,%eax 4515ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jb L021ecb_dec_one 4525ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups 16(%esi),%xmm3 4535ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com je L022ecb_dec_two 4545ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups 32(%esi),%xmm4 4555ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com cmpl $64,%eax 4565ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jb L023ecb_dec_three 4575ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups 48(%esi),%xmm5 4585ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com je L024ecb_dec_four 4595ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups 64(%esi),%xmm6 4605ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm7,%xmm7 4615ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com call __aesni_decrypt6 4625ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm2,(%edi) 4635ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm3,16(%edi) 4645ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm4,32(%edi) 4655ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm5,48(%edi) 4665ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm6,64(%edi) 4675ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jmp L008ecb_ret 4685ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align 4,0x90 4695ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL021ecb_dec_one: 4705ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups (%edx),%xmm0 4715ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups 16(%edx),%xmm1 4725ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 32(%edx),%edx 4735ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm0,%xmm2 4745ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL025dec1_loop_4: 4755ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,222,209 4765ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com decl %ecx 4775ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups (%edx),%xmm1 4785ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 16(%edx),%edx 4795ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jnz L025dec1_loop_4 4805ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,223,209 4815ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm2,(%edi) 4825ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jmp L008ecb_ret 4835ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align 4,0x90 4845ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL022ecb_dec_two: 4855ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm4,%xmm4 4865ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com call __aesni_decrypt3 4875ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm2,(%edi) 4885ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm3,16(%edi) 4895ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jmp L008ecb_ret 4905ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align 4,0x90 4915ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL023ecb_dec_three: 4925ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com call __aesni_decrypt3 4935ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm2,(%edi) 4945ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm3,16(%edi) 4955ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm4,32(%edi) 4965ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jmp L008ecb_ret 4975ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align 4,0x90 4985ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL024ecb_dec_four: 4995ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com call __aesni_decrypt4 5005ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm2,(%edi) 5015ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm3,16(%edi) 5025ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm4,32(%edi) 5035ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm5,48(%edi) 5045ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL008ecb_ret: 5055ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com popl %edi 5065ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com popl %esi 5075ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com popl %ebx 5085ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com popl %ebp 5095ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com ret 5105ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.globl _aesni_ccm64_encrypt_blocks 5115ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align 4 5125ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com_aesni_ccm64_encrypt_blocks: 5135ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL_aesni_ccm64_encrypt_blocks_begin: 5145ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pushl %ebp 5155ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pushl %ebx 5165ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pushl %esi 5175ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pushl %edi 5185ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl 20(%esp),%esi 5195ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl 24(%esp),%edi 5205ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl 28(%esp),%eax 5215ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl 32(%esp),%edx 5225ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl 36(%esp),%ebx 5235ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl 40(%esp),%ecx 5245ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl %esp,%ebp 5255ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com subl $60,%esp 5265ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com andl $-16,%esp 5275ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl %ebp,48(%esp) 5285ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqu (%ebx),%xmm7 5295ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqu (%ecx),%xmm3 5305ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl 240(%edx),%ecx 5315ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl $202182159,(%esp) 5325ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl $134810123,4(%esp) 5335ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl $67438087,8(%esp) 5345ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl $66051,12(%esp) 5355ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl $1,%ebx 5365ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorl %ebp,%ebp 5375ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl %ebx,16(%esp) 5385ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl %ebp,20(%esp) 5395ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl %ebp,24(%esp) 5405ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl %ebp,28(%esp) 5415ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com shrl $1,%ecx 5425ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal (%edx),%ebp 5435ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqa (%esp),%xmm5 5445ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqa %xmm7,%xmm2 5455ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl %ecx,%ebx 5465ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,0,253 5475ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL026ccm64_enc_outer: 5485ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups (%ebp),%xmm0 5495ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl %ebx,%ecx 5505ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups (%esi),%xmm6 5515ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm0,%xmm2 5525ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups 16(%ebp),%xmm1 5535ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm6,%xmm0 5545ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 32(%ebp),%edx 5555ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm0,%xmm3 5565ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups (%edx),%xmm0 5575ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL027ccm64_enc2_loop: 5585ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,220,209 5595ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com decl %ecx 5605ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,220,217 5615ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups 16(%edx),%xmm1 5625ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,220,208 5635ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 32(%edx),%edx 5645ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,220,216 5655ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups (%edx),%xmm0 5665ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jnz L027ccm64_enc2_loop 5675ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,220,209 5685ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,220,217 5695ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com paddq 16(%esp),%xmm7 5705ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,221,208 5715ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,221,216 5725ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com decl %eax 5735ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 16(%esi),%esi 5745ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm2,%xmm6 5755ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqa %xmm7,%xmm2 5765ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm6,(%edi) 5775ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 16(%edi),%edi 5785ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,0,213 5795ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jnz L026ccm64_enc_outer 5805ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl 48(%esp),%esp 5815ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl 40(%esp),%edi 5825ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm3,(%edi) 5835ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com popl %edi 5845ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com popl %esi 5855ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com popl %ebx 5865ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com popl %ebp 5875ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com ret 5885ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.globl _aesni_ccm64_decrypt_blocks 5895ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align 4 5905ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com_aesni_ccm64_decrypt_blocks: 5915ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL_aesni_ccm64_decrypt_blocks_begin: 5925ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pushl %ebp 5935ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pushl %ebx 5945ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pushl %esi 5955ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pushl %edi 5965ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl 20(%esp),%esi 5975ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl 24(%esp),%edi 5985ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl 28(%esp),%eax 5995ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl 32(%esp),%edx 6005ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl 36(%esp),%ebx 6015ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl 40(%esp),%ecx 6025ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl %esp,%ebp 6035ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com subl $60,%esp 6045ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com andl $-16,%esp 6055ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl %ebp,48(%esp) 6065ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqu (%ebx),%xmm7 6075ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqu (%ecx),%xmm3 6085ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl 240(%edx),%ecx 6095ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl $202182159,(%esp) 6105ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl $134810123,4(%esp) 6115ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl $67438087,8(%esp) 6125ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl $66051,12(%esp) 6135ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl $1,%ebx 6145ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorl %ebp,%ebp 6155ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl %ebx,16(%esp) 6165ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl %ebp,20(%esp) 6175ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl %ebp,24(%esp) 6185ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl %ebp,28(%esp) 6195ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqa (%esp),%xmm5 6205ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqa %xmm7,%xmm2 6215ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl %edx,%ebp 6225ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl %ecx,%ebx 6235ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,0,253 6245ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups (%edx),%xmm0 6255ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups 16(%edx),%xmm1 6265ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 32(%edx),%edx 6275ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm0,%xmm2 6285ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL028enc1_loop_5: 6295ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,220,209 6305ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com decl %ecx 6315ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups (%edx),%xmm1 6325ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 16(%edx),%edx 6335ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jnz L028enc1_loop_5 6345ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,221,209 6355ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups (%esi),%xmm6 6365ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com paddq 16(%esp),%xmm7 6375ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 16(%esi),%esi 6385ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jmp L029ccm64_dec_outer 6395ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align 4,0x90 6405ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL029ccm64_dec_outer: 6415ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm2,%xmm6 6425ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqa %xmm7,%xmm2 6435ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl %ebx,%ecx 6445ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm6,(%edi) 6455ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 16(%edi),%edi 6465ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,0,213 6475ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com subl $1,%eax 6485ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jz L030ccm64_dec_break 6495ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups (%ebp),%xmm0 6505ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com shrl $1,%ecx 6515ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups 16(%ebp),%xmm1 6525ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm0,%xmm6 6535ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 32(%ebp),%edx 6545ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm0,%xmm2 6555ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm6,%xmm3 6565ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups (%edx),%xmm0 6575ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL031ccm64_dec2_loop: 6585ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,220,209 6595ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com decl %ecx 6605ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,220,217 6615ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups 16(%edx),%xmm1 6625ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,220,208 6635ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 32(%edx),%edx 6645ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,220,216 6655ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups (%edx),%xmm0 6665ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jnz L031ccm64_dec2_loop 6675ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups (%esi),%xmm6 6685ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com paddq 16(%esp),%xmm7 6695ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,220,209 6705ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,220,217 6715ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 16(%esi),%esi 6725ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,221,208 6735ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,221,216 6745ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jmp L029ccm64_dec_outer 6755ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align 4,0x90 6765ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL030ccm64_dec_break: 6775ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl %ebp,%edx 6785ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups (%edx),%xmm0 6795ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups 16(%edx),%xmm1 6805ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm0,%xmm6 6815ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 32(%edx),%edx 6825ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm6,%xmm3 6835ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL032enc1_loop_6: 6845ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,220,217 6855ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com decl %ecx 6865ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups (%edx),%xmm1 6875ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 16(%edx),%edx 6885ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jnz L032enc1_loop_6 6895ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,221,217 6905ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl 48(%esp),%esp 6915ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl 40(%esp),%edi 6925ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm3,(%edi) 6935ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com popl %edi 6945ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com popl %esi 6955ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com popl %ebx 6965ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com popl %ebp 6975ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com ret 6985ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.globl _aesni_ctr32_encrypt_blocks 6995ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align 4 7005ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com_aesni_ctr32_encrypt_blocks: 7015ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL_aesni_ctr32_encrypt_blocks_begin: 7025ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pushl %ebp 7035ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pushl %ebx 7045ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pushl %esi 7055ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pushl %edi 7065ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl 20(%esp),%esi 7075ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl 24(%esp),%edi 7085ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl 28(%esp),%eax 7095ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl 32(%esp),%edx 7105ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl 36(%esp),%ebx 7115ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl %esp,%ebp 7125ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com subl $88,%esp 7135ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com andl $-16,%esp 7145ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl %ebp,80(%esp) 7155ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com cmpl $1,%eax 7165ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com je L033ctr32_one_shortcut 7175ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqu (%ebx),%xmm7 7185ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl $202182159,(%esp) 7195ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl $134810123,4(%esp) 7205ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl $67438087,8(%esp) 7215ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl $66051,12(%esp) 7225ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl $6,%ecx 7235ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorl %ebp,%ebp 7245ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl %ecx,16(%esp) 7255ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl %ecx,20(%esp) 7265ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl %ecx,24(%esp) 7275ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl %ebp,28(%esp) 7285ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,58,22,251,3 7295ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,58,34,253,3 7305ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl 240(%edx),%ecx 7315ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com bswap %ebx 7325ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor %xmm1,%xmm1 7335ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor %xmm0,%xmm0 7345ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqa (%esp),%xmm2 7355ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,58,34,203,0 7365ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 3(%ebx),%ebp 7375ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,58,34,197,0 7385ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com incl %ebx 7395ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,58,34,203,1 7405ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com incl %ebp 7415ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,58,34,197,1 7425ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com incl %ebx 7435ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,58,34,203,2 7445ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com incl %ebp 7455ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,58,34,197,2 7465ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqa %xmm1,48(%esp) 7475ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,0,202 7485ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqa %xmm0,64(%esp) 7495ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,0,194 7505ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pshufd $192,%xmm1,%xmm2 7515ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pshufd $128,%xmm1,%xmm3 7525ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com cmpl $6,%eax 7535ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jb L034ctr32_tail 7545ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqa %xmm7,32(%esp) 7555ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com shrl $1,%ecx 7565ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl %edx,%ebp 7575ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl %ecx,%ebx 7585ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com subl $6,%eax 7595ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jmp L035ctr32_loop6 7605ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align 4,0x90 7615ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL035ctr32_loop6: 7625ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pshufd $64,%xmm1,%xmm4 7635ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqa 32(%esp),%xmm1 7645ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pshufd $192,%xmm0,%xmm5 7655ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com por %xmm1,%xmm2 7665ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pshufd $128,%xmm0,%xmm6 7675ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com por %xmm1,%xmm3 7685ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pshufd $64,%xmm0,%xmm7 7695ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com por %xmm1,%xmm4 7705ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com por %xmm1,%xmm5 7715ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com por %xmm1,%xmm6 7725ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com por %xmm1,%xmm7 7735ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups (%ebp),%xmm0 7745ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups 16(%ebp),%xmm1 7755ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 32(%ebp),%edx 7765ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com decl %ecx 7775ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor %xmm0,%xmm2 7785ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor %xmm0,%xmm3 7795ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,220,209 7805ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor %xmm0,%xmm4 7815ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,220,217 7825ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor %xmm0,%xmm5 7835ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,220,225 7845ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor %xmm0,%xmm6 7855ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,220,233 7865ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor %xmm0,%xmm7 7875ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,220,241 7885ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups (%edx),%xmm0 7895ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,220,249 7905ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com call L_aesni_encrypt6_enter 7915ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups (%esi),%xmm1 7925ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups 16(%esi),%xmm0 7935ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm1,%xmm2 7945ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups 32(%esi),%xmm1 7955ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm0,%xmm3 7965ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm2,(%edi) 7975ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqa 16(%esp),%xmm0 7985ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm1,%xmm4 7995ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqa 48(%esp),%xmm1 8005ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm3,16(%edi) 8015ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm4,32(%edi) 8025ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com paddd %xmm0,%xmm1 8035ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com paddd 64(%esp),%xmm0 8045ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqa (%esp),%xmm2 8055ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups 48(%esi),%xmm3 8065ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups 64(%esi),%xmm4 8075ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm3,%xmm5 8085ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups 80(%esi),%xmm3 8095ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 96(%esi),%esi 8105ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqa %xmm1,48(%esp) 8115ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,0,202 8125ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm4,%xmm6 8135ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm5,48(%edi) 8145ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm3,%xmm7 8155ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqa %xmm0,64(%esp) 8165ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,0,194 8175ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm6,64(%edi) 8185ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pshufd $192,%xmm1,%xmm2 8195ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm7,80(%edi) 8205ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 96(%edi),%edi 8215ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl %ebx,%ecx 8225ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pshufd $128,%xmm1,%xmm3 8235ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com subl $6,%eax 8245ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jnc L035ctr32_loop6 8255ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com addl $6,%eax 8265ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jz L036ctr32_ret 8275ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl %ebp,%edx 8285ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 1(,%ecx,2),%ecx 8295ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqa 32(%esp),%xmm7 8305ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL034ctr32_tail: 8315ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com por %xmm7,%xmm2 8325ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com cmpl $2,%eax 8335ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jb L037ctr32_one 8345ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pshufd $64,%xmm1,%xmm4 8355ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com por %xmm7,%xmm3 8365ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com je L038ctr32_two 8375ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pshufd $192,%xmm0,%xmm5 8385ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com por %xmm7,%xmm4 8395ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com cmpl $4,%eax 8405ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jb L039ctr32_three 8415ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pshufd $128,%xmm0,%xmm6 8425ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com por %xmm7,%xmm5 8435ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com je L040ctr32_four 8445ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com por %xmm7,%xmm6 8455ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com call __aesni_encrypt6 8465ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups (%esi),%xmm1 8475ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups 16(%esi),%xmm0 8485ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm1,%xmm2 8495ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups 32(%esi),%xmm1 8505ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm0,%xmm3 8515ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups 48(%esi),%xmm0 8525ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm1,%xmm4 8535ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups 64(%esi),%xmm1 8545ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm0,%xmm5 8555ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm2,(%edi) 8565ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm1,%xmm6 8575ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm3,16(%edi) 8585ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm4,32(%edi) 8595ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm5,48(%edi) 8605ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm6,64(%edi) 8615ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jmp L036ctr32_ret 8625ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align 4,0x90 8635ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL033ctr32_one_shortcut: 8645ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups (%ebx),%xmm2 8655ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl 240(%edx),%ecx 8665ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL037ctr32_one: 8675ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups (%edx),%xmm0 8685ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups 16(%edx),%xmm1 8695ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 32(%edx),%edx 8705ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm0,%xmm2 8715ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL041enc1_loop_7: 8725ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,220,209 8735ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com decl %ecx 8745ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups (%edx),%xmm1 8755ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 16(%edx),%edx 8765ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jnz L041enc1_loop_7 8775ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,221,209 8785ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups (%esi),%xmm6 8795ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm2,%xmm6 8805ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm6,(%edi) 8815ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jmp L036ctr32_ret 8825ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align 4,0x90 8835ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL038ctr32_two: 8845ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com call __aesni_encrypt3 8855ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups (%esi),%xmm5 8865ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups 16(%esi),%xmm6 8875ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm5,%xmm2 8885ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm6,%xmm3 8895ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm2,(%edi) 8905ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm3,16(%edi) 8915ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jmp L036ctr32_ret 8925ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align 4,0x90 8935ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL039ctr32_three: 8945ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com call __aesni_encrypt3 8955ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups (%esi),%xmm5 8965ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups 16(%esi),%xmm6 8975ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm5,%xmm2 8985ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups 32(%esi),%xmm7 8995ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm6,%xmm3 9005ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm2,(%edi) 9015ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm7,%xmm4 9025ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm3,16(%edi) 9035ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm4,32(%edi) 9045ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jmp L036ctr32_ret 9055ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align 4,0x90 9065ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL040ctr32_four: 9075ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com call __aesni_encrypt4 9085ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups (%esi),%xmm6 9095ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups 16(%esi),%xmm7 9105ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups 32(%esi),%xmm1 9115ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm6,%xmm2 9125ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups 48(%esi),%xmm0 9135ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm7,%xmm3 9145ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm2,(%edi) 9155ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm1,%xmm4 9165ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm3,16(%edi) 9175ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm0,%xmm5 9185ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm4,32(%edi) 9195ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm5,48(%edi) 9205ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL036ctr32_ret: 9215ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl 80(%esp),%esp 9225ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com popl %edi 9235ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com popl %esi 9245ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com popl %ebx 9255ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com popl %ebp 9265ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com ret 9275ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.globl _aesni_xts_encrypt 9285ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align 4 9295ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com_aesni_xts_encrypt: 9305ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL_aesni_xts_encrypt_begin: 9315ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pushl %ebp 9325ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pushl %ebx 9335ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pushl %esi 9345ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pushl %edi 9355ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl 36(%esp),%edx 9365ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl 40(%esp),%esi 9375ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl 240(%edx),%ecx 9385ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups (%esi),%xmm2 9395ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups (%edx),%xmm0 9405ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups 16(%edx),%xmm1 9415ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 32(%edx),%edx 9425ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm0,%xmm2 9435ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL042enc1_loop_8: 9445ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,220,209 9455ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com decl %ecx 9465ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups (%edx),%xmm1 9475ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 16(%edx),%edx 9485ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jnz L042enc1_loop_8 9495ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,221,209 9505ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl 20(%esp),%esi 9515ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl 24(%esp),%edi 9525ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl 28(%esp),%eax 9535ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl 32(%esp),%edx 9545ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl %esp,%ebp 9555ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com subl $120,%esp 9565ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl 240(%edx),%ecx 9575ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com andl $-16,%esp 9585ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl $135,96(%esp) 9595ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl $0,100(%esp) 9605ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl $1,104(%esp) 9615ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl $0,108(%esp) 9625ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl %eax,112(%esp) 9635ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl %ebp,116(%esp) 9645ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqa %xmm2,%xmm1 9655ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor %xmm0,%xmm0 9665ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqa 96(%esp),%xmm3 9675ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pcmpgtd %xmm1,%xmm0 9685ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com andl $-16,%eax 9695ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl %edx,%ebp 9705ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl %ecx,%ebx 9715ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com subl $96,%eax 9725ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jc L043xts_enc_short 9735ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com shrl $1,%ecx 9745ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl %ecx,%ebx 9755ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jmp L044xts_enc_loop6 9765ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align 4,0x90 9775ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL044xts_enc_loop6: 9785ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pshufd $19,%xmm0,%xmm2 9795ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor %xmm0,%xmm0 9805ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqa %xmm1,(%esp) 9815ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com paddq %xmm1,%xmm1 9825ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pand %xmm3,%xmm2 9835ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pcmpgtd %xmm1,%xmm0 9845ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor %xmm2,%xmm1 9855ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pshufd $19,%xmm0,%xmm2 9865ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor %xmm0,%xmm0 9875ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqa %xmm1,16(%esp) 9885ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com paddq %xmm1,%xmm1 9895ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pand %xmm3,%xmm2 9905ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pcmpgtd %xmm1,%xmm0 9915ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor %xmm2,%xmm1 9925ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pshufd $19,%xmm0,%xmm2 9935ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor %xmm0,%xmm0 9945ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqa %xmm1,32(%esp) 9955ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com paddq %xmm1,%xmm1 9965ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pand %xmm3,%xmm2 9975ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pcmpgtd %xmm1,%xmm0 9985ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor %xmm2,%xmm1 9995ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pshufd $19,%xmm0,%xmm2 10005ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor %xmm0,%xmm0 10015ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqa %xmm1,48(%esp) 10025ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com paddq %xmm1,%xmm1 10035ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pand %xmm3,%xmm2 10045ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pcmpgtd %xmm1,%xmm0 10055ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor %xmm2,%xmm1 10065ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pshufd $19,%xmm0,%xmm7 10075ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqa %xmm1,64(%esp) 10085ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com paddq %xmm1,%xmm1 10095ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups (%ebp),%xmm0 10105ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pand %xmm3,%xmm7 10115ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups (%esi),%xmm2 10125ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor %xmm1,%xmm7 10135ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqu 16(%esi),%xmm3 10145ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm0,%xmm2 10155ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqu 32(%esi),%xmm4 10165ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor %xmm0,%xmm3 10175ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqu 48(%esi),%xmm5 10185ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor %xmm0,%xmm4 10195ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqu 64(%esi),%xmm6 10205ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor %xmm0,%xmm5 10215ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqu 80(%esi),%xmm1 10225ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor %xmm0,%xmm6 10235ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 96(%esi),%esi 10245ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor (%esp),%xmm2 10255ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqa %xmm7,80(%esp) 10265ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor %xmm1,%xmm7 10275ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups 16(%ebp),%xmm1 10285ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 32(%ebp),%edx 10295ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor 16(%esp),%xmm3 10305ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,220,209 10315ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor 32(%esp),%xmm4 10325ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,220,217 10335ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor 48(%esp),%xmm5 10345ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com decl %ecx 10355ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,220,225 10365ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor 64(%esp),%xmm6 10375ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,220,233 10385ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor %xmm0,%xmm7 10395ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,220,241 10405ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups (%edx),%xmm0 10415ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,220,249 10425ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com call L_aesni_encrypt6_enter 10435ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqa 80(%esp),%xmm1 10445ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor %xmm0,%xmm0 10455ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps (%esp),%xmm2 10465ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pcmpgtd %xmm1,%xmm0 10475ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps 16(%esp),%xmm3 10485ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm2,(%edi) 10495ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps 32(%esp),%xmm4 10505ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm3,16(%edi) 10515ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps 48(%esp),%xmm5 10525ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm4,32(%edi) 10535ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps 64(%esp),%xmm6 10545ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm5,48(%edi) 10555ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm1,%xmm7 10565ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm6,64(%edi) 10575ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pshufd $19,%xmm0,%xmm2 10585ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm7,80(%edi) 10595ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 96(%edi),%edi 10605ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqa 96(%esp),%xmm3 10615ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor %xmm0,%xmm0 10625ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com paddq %xmm1,%xmm1 10635ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pand %xmm3,%xmm2 10645ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pcmpgtd %xmm1,%xmm0 10655ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl %ebx,%ecx 10665ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor %xmm2,%xmm1 10675ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com subl $96,%eax 10685ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jnc L044xts_enc_loop6 10695ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 1(,%ecx,2),%ecx 10705ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl %ebp,%edx 10715ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl %ecx,%ebx 10725ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL043xts_enc_short: 10735ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com addl $96,%eax 10745ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jz L045xts_enc_done6x 10755ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqa %xmm1,%xmm5 10765ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com cmpl $32,%eax 10775ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jb L046xts_enc_one 10785ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pshufd $19,%xmm0,%xmm2 10795ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor %xmm0,%xmm0 10805ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com paddq %xmm1,%xmm1 10815ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pand %xmm3,%xmm2 10825ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pcmpgtd %xmm1,%xmm0 10835ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor %xmm2,%xmm1 10845ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com je L047xts_enc_two 10855ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pshufd $19,%xmm0,%xmm2 10865ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor %xmm0,%xmm0 10875ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqa %xmm1,%xmm6 10885ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com paddq %xmm1,%xmm1 10895ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pand %xmm3,%xmm2 10905ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pcmpgtd %xmm1,%xmm0 10915ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor %xmm2,%xmm1 10925ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com cmpl $64,%eax 10935ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jb L048xts_enc_three 10945ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pshufd $19,%xmm0,%xmm2 10955ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor %xmm0,%xmm0 10965ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqa %xmm1,%xmm7 10975ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com paddq %xmm1,%xmm1 10985ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pand %xmm3,%xmm2 10995ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pcmpgtd %xmm1,%xmm0 11005ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor %xmm2,%xmm1 11015ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqa %xmm5,(%esp) 11025ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqa %xmm6,16(%esp) 11035ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com je L049xts_enc_four 11045ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqa %xmm7,32(%esp) 11055ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pshufd $19,%xmm0,%xmm7 11065ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqa %xmm1,48(%esp) 11075ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com paddq %xmm1,%xmm1 11085ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pand %xmm3,%xmm7 11095ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor %xmm1,%xmm7 11105ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqu (%esi),%xmm2 11115ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqu 16(%esi),%xmm3 11125ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqu 32(%esi),%xmm4 11135ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor (%esp),%xmm2 11145ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqu 48(%esi),%xmm5 11155ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor 16(%esp),%xmm3 11165ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqu 64(%esi),%xmm6 11175ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor 32(%esp),%xmm4 11185ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 80(%esi),%esi 11195ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor 48(%esp),%xmm5 11205ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqa %xmm7,64(%esp) 11215ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor %xmm7,%xmm6 11225ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com call __aesni_encrypt6 11235ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movaps 64(%esp),%xmm1 11245ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps (%esp),%xmm2 11255ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps 16(%esp),%xmm3 11265ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps 32(%esp),%xmm4 11275ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm2,(%edi) 11285ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps 48(%esp),%xmm5 11295ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm3,16(%edi) 11305ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm1,%xmm6 11315ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm4,32(%edi) 11325ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm5,48(%edi) 11335ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm6,64(%edi) 11345ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 80(%edi),%edi 11355ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jmp L050xts_enc_done 11365ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align 4,0x90 11375ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL046xts_enc_one: 11385ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups (%esi),%xmm2 11395ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 16(%esi),%esi 11405ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm5,%xmm2 11415ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups (%edx),%xmm0 11425ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups 16(%edx),%xmm1 11435ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 32(%edx),%edx 11445ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm0,%xmm2 11455ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL051enc1_loop_9: 11465ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,220,209 11475ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com decl %ecx 11485ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups (%edx),%xmm1 11495ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 16(%edx),%edx 11505ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jnz L051enc1_loop_9 11515ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,221,209 11525ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm5,%xmm2 11535ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm2,(%edi) 11545ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 16(%edi),%edi 11555ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqa %xmm5,%xmm1 11565ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jmp L050xts_enc_done 11575ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align 4,0x90 11585ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL047xts_enc_two: 11595ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movaps %xmm1,%xmm6 11605ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups (%esi),%xmm2 11615ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups 16(%esi),%xmm3 11625ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 32(%esi),%esi 11635ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm5,%xmm2 11645ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm6,%xmm3 11655ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm4,%xmm4 11665ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com call __aesni_encrypt3 11675ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm5,%xmm2 11685ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm6,%xmm3 11695ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm2,(%edi) 11705ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm3,16(%edi) 11715ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 32(%edi),%edi 11725ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqa %xmm6,%xmm1 11735ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jmp L050xts_enc_done 11745ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align 4,0x90 11755ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL048xts_enc_three: 11765ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movaps %xmm1,%xmm7 11775ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups (%esi),%xmm2 11785ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups 16(%esi),%xmm3 11795ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups 32(%esi),%xmm4 11805ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 48(%esi),%esi 11815ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm5,%xmm2 11825ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm6,%xmm3 11835ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm7,%xmm4 11845ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com call __aesni_encrypt3 11855ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm5,%xmm2 11865ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm6,%xmm3 11875ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm7,%xmm4 11885ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm2,(%edi) 11895ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm3,16(%edi) 11905ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm4,32(%edi) 11915ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 48(%edi),%edi 11925ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqa %xmm7,%xmm1 11935ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jmp L050xts_enc_done 11945ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align 4,0x90 11955ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL049xts_enc_four: 11965ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movaps %xmm1,%xmm6 11975ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups (%esi),%xmm2 11985ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups 16(%esi),%xmm3 11995ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups 32(%esi),%xmm4 12005ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps (%esp),%xmm2 12015ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups 48(%esi),%xmm5 12025ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 64(%esi),%esi 12035ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps 16(%esp),%xmm3 12045ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm7,%xmm4 12055ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm6,%xmm5 12065ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com call __aesni_encrypt4 12075ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps (%esp),%xmm2 12085ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps 16(%esp),%xmm3 12095ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm7,%xmm4 12105ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm2,(%edi) 12115ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm6,%xmm5 12125ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm3,16(%edi) 12135ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm4,32(%edi) 12145ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm5,48(%edi) 12155ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 64(%edi),%edi 12165ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqa %xmm6,%xmm1 12175ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jmp L050xts_enc_done 12185ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align 4,0x90 12195ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL045xts_enc_done6x: 12205ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl 112(%esp),%eax 12215ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com andl $15,%eax 12225ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jz L052xts_enc_ret 12235ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqa %xmm1,%xmm5 12245ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl %eax,112(%esp) 12255ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jmp L053xts_enc_steal 12265ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align 4,0x90 12275ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL050xts_enc_done: 12285ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl 112(%esp),%eax 12295ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor %xmm0,%xmm0 12305ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com andl $15,%eax 12315ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jz L052xts_enc_ret 12325ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pcmpgtd %xmm1,%xmm0 12335ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl %eax,112(%esp) 12345ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pshufd $19,%xmm0,%xmm5 12355ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com paddq %xmm1,%xmm1 12365ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pand 96(%esp),%xmm5 12375ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor %xmm1,%xmm5 12385ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL053xts_enc_steal: 12395ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movzbl (%esi),%ecx 12405ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movzbl -16(%edi),%edx 12415ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 1(%esi),%esi 12425ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movb %cl,-16(%edi) 12435ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movb %dl,(%edi) 12445ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 1(%edi),%edi 12455ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com subl $1,%eax 12465ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jnz L053xts_enc_steal 12475ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com subl 112(%esp),%edi 12485ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl %ebp,%edx 12495ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl %ebx,%ecx 12505ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups -16(%edi),%xmm2 12515ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm5,%xmm2 12525ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups (%edx),%xmm0 12535ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups 16(%edx),%xmm1 12545ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 32(%edx),%edx 12555ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm0,%xmm2 12565ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL054enc1_loop_10: 12575ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,220,209 12585ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com decl %ecx 12595ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups (%edx),%xmm1 12605ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 16(%edx),%edx 12615ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jnz L054enc1_loop_10 12625ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,221,209 12635ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm5,%xmm2 12645ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm2,-16(%edi) 12655ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL052xts_enc_ret: 12665ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl 116(%esp),%esp 12675ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com popl %edi 12685ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com popl %esi 12695ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com popl %ebx 12705ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com popl %ebp 12715ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com ret 12725ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.globl _aesni_xts_decrypt 12735ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align 4 12745ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com_aesni_xts_decrypt: 12755ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL_aesni_xts_decrypt_begin: 12765ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pushl %ebp 12775ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pushl %ebx 12785ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pushl %esi 12795ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pushl %edi 12805ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl 36(%esp),%edx 12815ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl 40(%esp),%esi 12825ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl 240(%edx),%ecx 12835ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups (%esi),%xmm2 12845ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups (%edx),%xmm0 12855ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups 16(%edx),%xmm1 12865ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 32(%edx),%edx 12875ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm0,%xmm2 12885ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL055enc1_loop_11: 12895ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,220,209 12905ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com decl %ecx 12915ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups (%edx),%xmm1 12925ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 16(%edx),%edx 12935ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jnz L055enc1_loop_11 12945ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,221,209 12955ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl 20(%esp),%esi 12965ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl 24(%esp),%edi 12975ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl 28(%esp),%eax 12985ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl 32(%esp),%edx 12995ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl %esp,%ebp 13005ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com subl $120,%esp 13015ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com andl $-16,%esp 13025ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorl %ebx,%ebx 13035ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com testl $15,%eax 13045ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com setnz %bl 13055ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com shll $4,%ebx 13065ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com subl %ebx,%eax 13075ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl $135,96(%esp) 13085ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl $0,100(%esp) 13095ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl $1,104(%esp) 13105ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl $0,108(%esp) 13115ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl %eax,112(%esp) 13125ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl %ebp,116(%esp) 13135ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl 240(%edx),%ecx 13145ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl %edx,%ebp 13155ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl %ecx,%ebx 13165ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqa %xmm2,%xmm1 13175ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor %xmm0,%xmm0 13185ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqa 96(%esp),%xmm3 13195ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pcmpgtd %xmm1,%xmm0 13205ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com andl $-16,%eax 13215ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com subl $96,%eax 13225ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jc L056xts_dec_short 13235ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com shrl $1,%ecx 13245ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl %ecx,%ebx 13255ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jmp L057xts_dec_loop6 13265ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align 4,0x90 13275ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL057xts_dec_loop6: 13285ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pshufd $19,%xmm0,%xmm2 13295ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor %xmm0,%xmm0 13305ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqa %xmm1,(%esp) 13315ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com paddq %xmm1,%xmm1 13325ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pand %xmm3,%xmm2 13335ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pcmpgtd %xmm1,%xmm0 13345ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor %xmm2,%xmm1 13355ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pshufd $19,%xmm0,%xmm2 13365ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor %xmm0,%xmm0 13375ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqa %xmm1,16(%esp) 13385ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com paddq %xmm1,%xmm1 13395ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pand %xmm3,%xmm2 13405ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pcmpgtd %xmm1,%xmm0 13415ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor %xmm2,%xmm1 13425ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pshufd $19,%xmm0,%xmm2 13435ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor %xmm0,%xmm0 13445ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqa %xmm1,32(%esp) 13455ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com paddq %xmm1,%xmm1 13465ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pand %xmm3,%xmm2 13475ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pcmpgtd %xmm1,%xmm0 13485ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor %xmm2,%xmm1 13495ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pshufd $19,%xmm0,%xmm2 13505ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor %xmm0,%xmm0 13515ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqa %xmm1,48(%esp) 13525ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com paddq %xmm1,%xmm1 13535ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pand %xmm3,%xmm2 13545ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pcmpgtd %xmm1,%xmm0 13555ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor %xmm2,%xmm1 13565ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pshufd $19,%xmm0,%xmm7 13575ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqa %xmm1,64(%esp) 13585ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com paddq %xmm1,%xmm1 13595ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups (%ebp),%xmm0 13605ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pand %xmm3,%xmm7 13615ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups (%esi),%xmm2 13625ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor %xmm1,%xmm7 13635ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqu 16(%esi),%xmm3 13645ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm0,%xmm2 13655ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqu 32(%esi),%xmm4 13665ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor %xmm0,%xmm3 13675ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqu 48(%esi),%xmm5 13685ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor %xmm0,%xmm4 13695ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqu 64(%esi),%xmm6 13705ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor %xmm0,%xmm5 13715ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqu 80(%esi),%xmm1 13725ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor %xmm0,%xmm6 13735ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 96(%esi),%esi 13745ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor (%esp),%xmm2 13755ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqa %xmm7,80(%esp) 13765ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor %xmm1,%xmm7 13775ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups 16(%ebp),%xmm1 13785ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 32(%ebp),%edx 13795ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor 16(%esp),%xmm3 13805ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,222,209 13815ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor 32(%esp),%xmm4 13825ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,222,217 13835ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor 48(%esp),%xmm5 13845ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com decl %ecx 13855ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,222,225 13865ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor 64(%esp),%xmm6 13875ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,222,233 13885ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor %xmm0,%xmm7 13895ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,222,241 13905ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups (%edx),%xmm0 13915ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,222,249 13925ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com call L_aesni_decrypt6_enter 13935ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqa 80(%esp),%xmm1 13945ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor %xmm0,%xmm0 13955ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps (%esp),%xmm2 13965ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pcmpgtd %xmm1,%xmm0 13975ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps 16(%esp),%xmm3 13985ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm2,(%edi) 13995ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps 32(%esp),%xmm4 14005ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm3,16(%edi) 14015ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps 48(%esp),%xmm5 14025ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm4,32(%edi) 14035ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps 64(%esp),%xmm6 14045ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm5,48(%edi) 14055ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm1,%xmm7 14065ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm6,64(%edi) 14075ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pshufd $19,%xmm0,%xmm2 14085ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm7,80(%edi) 14095ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 96(%edi),%edi 14105ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqa 96(%esp),%xmm3 14115ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor %xmm0,%xmm0 14125ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com paddq %xmm1,%xmm1 14135ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pand %xmm3,%xmm2 14145ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pcmpgtd %xmm1,%xmm0 14155ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl %ebx,%ecx 14165ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor %xmm2,%xmm1 14175ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com subl $96,%eax 14185ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jnc L057xts_dec_loop6 14195ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 1(,%ecx,2),%ecx 14205ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl %ebp,%edx 14215ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl %ecx,%ebx 14225ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL056xts_dec_short: 14235ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com addl $96,%eax 14245ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jz L058xts_dec_done6x 14255ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqa %xmm1,%xmm5 14265ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com cmpl $32,%eax 14275ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jb L059xts_dec_one 14285ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pshufd $19,%xmm0,%xmm2 14295ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor %xmm0,%xmm0 14305ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com paddq %xmm1,%xmm1 14315ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pand %xmm3,%xmm2 14325ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pcmpgtd %xmm1,%xmm0 14335ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor %xmm2,%xmm1 14345ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com je L060xts_dec_two 14355ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pshufd $19,%xmm0,%xmm2 14365ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor %xmm0,%xmm0 14375ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqa %xmm1,%xmm6 14385ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com paddq %xmm1,%xmm1 14395ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pand %xmm3,%xmm2 14405ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pcmpgtd %xmm1,%xmm0 14415ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor %xmm2,%xmm1 14425ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com cmpl $64,%eax 14435ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jb L061xts_dec_three 14445ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pshufd $19,%xmm0,%xmm2 14455ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor %xmm0,%xmm0 14465ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqa %xmm1,%xmm7 14475ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com paddq %xmm1,%xmm1 14485ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pand %xmm3,%xmm2 14495ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pcmpgtd %xmm1,%xmm0 14505ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor %xmm2,%xmm1 14515ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqa %xmm5,(%esp) 14525ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqa %xmm6,16(%esp) 14535ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com je L062xts_dec_four 14545ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqa %xmm7,32(%esp) 14555ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pshufd $19,%xmm0,%xmm7 14565ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqa %xmm1,48(%esp) 14575ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com paddq %xmm1,%xmm1 14585ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pand %xmm3,%xmm7 14595ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor %xmm1,%xmm7 14605ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqu (%esi),%xmm2 14615ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqu 16(%esi),%xmm3 14625ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqu 32(%esi),%xmm4 14635ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor (%esp),%xmm2 14645ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqu 48(%esi),%xmm5 14655ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor 16(%esp),%xmm3 14665ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqu 64(%esi),%xmm6 14675ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor 32(%esp),%xmm4 14685ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 80(%esi),%esi 14695ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor 48(%esp),%xmm5 14705ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqa %xmm7,64(%esp) 14715ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor %xmm7,%xmm6 14725ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com call __aesni_decrypt6 14735ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movaps 64(%esp),%xmm1 14745ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps (%esp),%xmm2 14755ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps 16(%esp),%xmm3 14765ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps 32(%esp),%xmm4 14775ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm2,(%edi) 14785ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps 48(%esp),%xmm5 14795ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm3,16(%edi) 14805ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm1,%xmm6 14815ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm4,32(%edi) 14825ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm5,48(%edi) 14835ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm6,64(%edi) 14845ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 80(%edi),%edi 14855ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jmp L063xts_dec_done 14865ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align 4,0x90 14875ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL059xts_dec_one: 14885ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups (%esi),%xmm2 14895ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 16(%esi),%esi 14905ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm5,%xmm2 14915ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups (%edx),%xmm0 14925ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups 16(%edx),%xmm1 14935ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 32(%edx),%edx 14945ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm0,%xmm2 14955ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL064dec1_loop_12: 14965ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,222,209 14975ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com decl %ecx 14985ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups (%edx),%xmm1 14995ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 16(%edx),%edx 15005ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jnz L064dec1_loop_12 15015ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,223,209 15025ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm5,%xmm2 15035ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm2,(%edi) 15045ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 16(%edi),%edi 15055ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqa %xmm5,%xmm1 15065ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jmp L063xts_dec_done 15075ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align 4,0x90 15085ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL060xts_dec_two: 15095ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movaps %xmm1,%xmm6 15105ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups (%esi),%xmm2 15115ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups 16(%esi),%xmm3 15125ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 32(%esi),%esi 15135ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm5,%xmm2 15145ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm6,%xmm3 15155ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com call __aesni_decrypt3 15165ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm5,%xmm2 15175ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm6,%xmm3 15185ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm2,(%edi) 15195ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm3,16(%edi) 15205ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 32(%edi),%edi 15215ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqa %xmm6,%xmm1 15225ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jmp L063xts_dec_done 15235ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align 4,0x90 15245ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL061xts_dec_three: 15255ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movaps %xmm1,%xmm7 15265ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups (%esi),%xmm2 15275ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups 16(%esi),%xmm3 15285ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups 32(%esi),%xmm4 15295ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 48(%esi),%esi 15305ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm5,%xmm2 15315ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm6,%xmm3 15325ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm7,%xmm4 15335ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com call __aesni_decrypt3 15345ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm5,%xmm2 15355ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm6,%xmm3 15365ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm7,%xmm4 15375ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm2,(%edi) 15385ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm3,16(%edi) 15395ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm4,32(%edi) 15405ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 48(%edi),%edi 15415ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqa %xmm7,%xmm1 15425ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jmp L063xts_dec_done 15435ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align 4,0x90 15445ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL062xts_dec_four: 15455ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movaps %xmm1,%xmm6 15465ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups (%esi),%xmm2 15475ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups 16(%esi),%xmm3 15485ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups 32(%esi),%xmm4 15495ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps (%esp),%xmm2 15505ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups 48(%esi),%xmm5 15515ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 64(%esi),%esi 15525ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps 16(%esp),%xmm3 15535ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm7,%xmm4 15545ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm6,%xmm5 15555ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com call __aesni_decrypt4 15565ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps (%esp),%xmm2 15575ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps 16(%esp),%xmm3 15585ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm7,%xmm4 15595ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm2,(%edi) 15605ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm6,%xmm5 15615ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm3,16(%edi) 15625ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm4,32(%edi) 15635ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm5,48(%edi) 15645ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 64(%edi),%edi 15655ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqa %xmm6,%xmm1 15665ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jmp L063xts_dec_done 15675ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align 4,0x90 15685ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL058xts_dec_done6x: 15695ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl 112(%esp),%eax 15705ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com andl $15,%eax 15715ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jz L065xts_dec_ret 15725ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl %eax,112(%esp) 15735ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jmp L066xts_dec_only_one_more 15745ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align 4,0x90 15755ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL063xts_dec_done: 15765ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl 112(%esp),%eax 15775ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor %xmm0,%xmm0 15785ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com andl $15,%eax 15795ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jz L065xts_dec_ret 15805ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pcmpgtd %xmm1,%xmm0 15815ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl %eax,112(%esp) 15825ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pshufd $19,%xmm0,%xmm2 15835ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor %xmm0,%xmm0 15845ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqa 96(%esp),%xmm3 15855ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com paddq %xmm1,%xmm1 15865ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pand %xmm3,%xmm2 15875ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pcmpgtd %xmm1,%xmm0 15885ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor %xmm2,%xmm1 15895ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL066xts_dec_only_one_more: 15905ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pshufd $19,%xmm0,%xmm5 15915ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqa %xmm1,%xmm6 15925ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com paddq %xmm1,%xmm1 15935ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pand %xmm3,%xmm5 15945ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor %xmm1,%xmm5 15955ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl %ebp,%edx 15965ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl %ebx,%ecx 15975ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups (%esi),%xmm2 15985ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm5,%xmm2 15995ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups (%edx),%xmm0 16005ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups 16(%edx),%xmm1 16015ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 32(%edx),%edx 16025ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm0,%xmm2 16035ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL067dec1_loop_13: 16045ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,222,209 16055ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com decl %ecx 16065ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups (%edx),%xmm1 16075ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 16(%edx),%edx 16085ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jnz L067dec1_loop_13 16095ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,223,209 16105ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm5,%xmm2 16115ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm2,(%edi) 16125ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL068xts_dec_steal: 16135ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movzbl 16(%esi),%ecx 16145ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movzbl (%edi),%edx 16155ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 1(%esi),%esi 16165ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movb %cl,(%edi) 16175ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movb %dl,16(%edi) 16185ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 1(%edi),%edi 16195ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com subl $1,%eax 16205ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jnz L068xts_dec_steal 16215ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com subl 112(%esp),%edi 16225ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl %ebp,%edx 16235ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl %ebx,%ecx 16245ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups (%edi),%xmm2 16255ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm6,%xmm2 16265ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups (%edx),%xmm0 16275ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups 16(%edx),%xmm1 16285ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 32(%edx),%edx 16295ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm0,%xmm2 16305ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL069dec1_loop_14: 16315ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,222,209 16325ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com decl %ecx 16335ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups (%edx),%xmm1 16345ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 16(%edx),%edx 16355ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jnz L069dec1_loop_14 16365ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,223,209 16375ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm6,%xmm2 16385ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm2,(%edi) 16395ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL065xts_dec_ret: 16405ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl 116(%esp),%esp 16415ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com popl %edi 16425ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com popl %esi 16435ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com popl %ebx 16445ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com popl %ebp 16455ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com ret 16465ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.globl _aesni_cbc_encrypt 16475ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align 4 16485ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com_aesni_cbc_encrypt: 16495ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL_aesni_cbc_encrypt_begin: 16505ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pushl %ebp 16515ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pushl %ebx 16525ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pushl %esi 16535ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pushl %edi 16545ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl 20(%esp),%esi 16555ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl %esp,%ebx 16565ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl 24(%esp),%edi 16575ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com subl $24,%ebx 16585ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl 28(%esp),%eax 16595ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com andl $-16,%ebx 16605ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl 32(%esp),%edx 16615ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl 36(%esp),%ebp 16625ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com testl %eax,%eax 16635ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jz L070cbc_abort 16645ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com cmpl $0,40(%esp) 16655ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xchgl %esp,%ebx 16665ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups (%ebp),%xmm7 16675ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl 240(%edx),%ecx 16685ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl %edx,%ebp 16695ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl %ebx,16(%esp) 16705ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl %ecx,%ebx 16715ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com je L071cbc_decrypt 16725ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movaps %xmm7,%xmm2 16735ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com cmpl $16,%eax 16745ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jb L072cbc_enc_tail 16755ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com subl $16,%eax 16765ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jmp L073cbc_enc_loop 16775ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align 4,0x90 16785ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL073cbc_enc_loop: 16795ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups (%esi),%xmm7 16805ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 16(%esi),%esi 16815ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups (%edx),%xmm0 16825ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups 16(%edx),%xmm1 16835ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm0,%xmm7 16845ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 32(%edx),%edx 16855ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm7,%xmm2 16865ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL074enc1_loop_15: 16875ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,220,209 16885ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com decl %ecx 16895ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups (%edx),%xmm1 16905ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 16(%edx),%edx 16915ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jnz L074enc1_loop_15 16925ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,221,209 16935ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl %ebx,%ecx 16945ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl %ebp,%edx 16955ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm2,(%edi) 16965ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 16(%edi),%edi 16975ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com subl $16,%eax 16985ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jnc L073cbc_enc_loop 16995ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com addl $16,%eax 17005ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jnz L072cbc_enc_tail 17015ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movaps %xmm2,%xmm7 17025ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jmp L075cbc_ret 17035ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL072cbc_enc_tail: 17045ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl %eax,%ecx 17055ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.long 2767451785 17065ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl $16,%ecx 17075ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com subl %eax,%ecx 17085ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorl %eax,%eax 17095ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.long 2868115081 17105ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal -16(%edi),%edi 17115ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl %ebx,%ecx 17125ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl %edi,%esi 17135ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl %ebp,%edx 17145ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jmp L073cbc_enc_loop 17155ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align 4,0x90 17165ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL071cbc_decrypt: 17175ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com cmpl $80,%eax 17185ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jbe L076cbc_dec_tail 17195ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movaps %xmm7,(%esp) 17205ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com subl $80,%eax 17215ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jmp L077cbc_dec_loop6_enter 17225ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align 4,0x90 17235ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL078cbc_dec_loop6: 17245ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movaps %xmm0,(%esp) 17255ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm7,(%edi) 17265ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 16(%edi),%edi 17275ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL077cbc_dec_loop6_enter: 17285ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqu (%esi),%xmm2 17295ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqu 16(%esi),%xmm3 17305ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqu 32(%esi),%xmm4 17315ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqu 48(%esi),%xmm5 17325ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqu 64(%esi),%xmm6 17335ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqu 80(%esi),%xmm7 17345ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com call __aesni_decrypt6 17355ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups (%esi),%xmm1 17365ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups 16(%esi),%xmm0 17375ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps (%esp),%xmm2 17385ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm1,%xmm3 17395ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups 32(%esi),%xmm1 17405ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm0,%xmm4 17415ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups 48(%esi),%xmm0 17425ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm1,%xmm5 17435ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups 64(%esi),%xmm1 17445ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm0,%xmm6 17455ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups 80(%esi),%xmm0 17465ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm1,%xmm7 17475ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm2,(%edi) 17485ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm3,16(%edi) 17495ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 96(%esi),%esi 17505ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm4,32(%edi) 17515ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl %ebx,%ecx 17525ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm5,48(%edi) 17535ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl %ebp,%edx 17545ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm6,64(%edi) 17555ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 80(%edi),%edi 17565ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com subl $96,%eax 17575ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com ja L078cbc_dec_loop6 17585ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movaps %xmm7,%xmm2 17595ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movaps %xmm0,%xmm7 17605ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com addl $80,%eax 17615ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jle L079cbc_dec_tail_collected 17625ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm2,(%edi) 17635ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 16(%edi),%edi 17645ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL076cbc_dec_tail: 17655ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups (%esi),%xmm2 17665ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movaps %xmm2,%xmm6 17675ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com cmpl $16,%eax 17685ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jbe L080cbc_dec_one 17695ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups 16(%esi),%xmm3 17705ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movaps %xmm3,%xmm5 17715ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com cmpl $32,%eax 17725ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jbe L081cbc_dec_two 17735ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups 32(%esi),%xmm4 17745ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com cmpl $48,%eax 17755ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jbe L082cbc_dec_three 17765ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups 48(%esi),%xmm5 17775ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com cmpl $64,%eax 17785ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jbe L083cbc_dec_four 17795ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups 64(%esi),%xmm6 17805ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movaps %xmm7,(%esp) 17815ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups (%esi),%xmm2 17825ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm7,%xmm7 17835ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com call __aesni_decrypt6 17845ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups (%esi),%xmm1 17855ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups 16(%esi),%xmm0 17865ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps (%esp),%xmm2 17875ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm1,%xmm3 17885ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups 32(%esi),%xmm1 17895ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm0,%xmm4 17905ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups 48(%esi),%xmm0 17915ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm1,%xmm5 17925ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups 64(%esi),%xmm7 17935ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm0,%xmm6 17945ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm2,(%edi) 17955ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm3,16(%edi) 17965ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm4,32(%edi) 17975ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm5,48(%edi) 17985ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 64(%edi),%edi 17995ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movaps %xmm6,%xmm2 18005ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com subl $80,%eax 18015ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jmp L079cbc_dec_tail_collected 18025ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align 4,0x90 18035ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL080cbc_dec_one: 18045ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups (%edx),%xmm0 18055ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups 16(%edx),%xmm1 18065ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 32(%edx),%edx 18075ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm0,%xmm2 18085ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL084dec1_loop_16: 18095ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,222,209 18105ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com decl %ecx 18115ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups (%edx),%xmm1 18125ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 16(%edx),%edx 18135ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jnz L084dec1_loop_16 18145ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,223,209 18155ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm7,%xmm2 18165ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movaps %xmm6,%xmm7 18175ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com subl $16,%eax 18185ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jmp L079cbc_dec_tail_collected 18195ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align 4,0x90 18205ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL081cbc_dec_two: 18215ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm4,%xmm4 18225ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com call __aesni_decrypt3 18235ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm7,%xmm2 18245ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm6,%xmm3 18255ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm2,(%edi) 18265ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movaps %xmm3,%xmm2 18275ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 16(%edi),%edi 18285ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movaps %xmm5,%xmm7 18295ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com subl $32,%eax 18305ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jmp L079cbc_dec_tail_collected 18315ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align 4,0x90 18325ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL082cbc_dec_three: 18335ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com call __aesni_decrypt3 18345ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm7,%xmm2 18355ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm6,%xmm3 18365ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm5,%xmm4 18375ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm2,(%edi) 18385ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movaps %xmm4,%xmm2 18395ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm3,16(%edi) 18405ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 32(%edi),%edi 18415ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups 32(%esi),%xmm7 18425ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com subl $48,%eax 18435ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jmp L079cbc_dec_tail_collected 18445ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align 4,0x90 18455ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL083cbc_dec_four: 18465ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com call __aesni_decrypt4 18475ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups 16(%esi),%xmm1 18485ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups 32(%esi),%xmm0 18495ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm7,%xmm2 18505ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups 48(%esi),%xmm7 18515ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm6,%xmm3 18525ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm2,(%edi) 18535ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm1,%xmm4 18545ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm3,16(%edi) 18555ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm0,%xmm5 18565ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm4,32(%edi) 18575ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 48(%edi),%edi 18585ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movaps %xmm5,%xmm2 18595ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com subl $64,%eax 18605ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL079cbc_dec_tail_collected: 18615ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com andl $15,%eax 18625ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jnz L085cbc_dec_tail_partial 18635ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm2,(%edi) 18645ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jmp L075cbc_ret 18655ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align 4,0x90 18665ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL085cbc_dec_tail_partial: 18675ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movaps %xmm2,(%esp) 18685ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl $16,%ecx 18695ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl %esp,%esi 18705ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com subl %eax,%ecx 18715ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.long 2767451785 18725ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL075cbc_ret: 18735ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl 16(%esp),%esp 18745ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl 36(%esp),%ebp 18755ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm7,(%ebp) 18765ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL070cbc_abort: 18775ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com popl %edi 18785ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com popl %esi 18795ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com popl %ebx 18805ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com popl %ebp 18815ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com ret 18825ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align 4 18835ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com__aesni_set_encrypt_key: 18845ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com testl %eax,%eax 18855ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jz L086bad_pointer 18865ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com testl %edx,%edx 18875ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jz L086bad_pointer 18885ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups (%eax),%xmm0 18895ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm4,%xmm4 18905ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 16(%edx),%edx 18915ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com cmpl $256,%ecx 18925ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com je L08714rounds 18935ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com cmpl $192,%ecx 18945ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com je L08812rounds 18955ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com cmpl $128,%ecx 18965ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jne L089bad_keybits 18975ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align 4,0x90 18985ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL09010rounds: 18995ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl $9,%ecx 19005ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm0,-16(%edx) 19015ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,58,223,200,1 19025ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com call L091key_128_cold 19035ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,58,223,200,2 19045ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com call L092key_128 19055ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,58,223,200,4 19065ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com call L092key_128 19075ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,58,223,200,8 19085ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com call L092key_128 19095ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,58,223,200,16 19105ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com call L092key_128 19115ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,58,223,200,32 19125ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com call L092key_128 19135ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,58,223,200,64 19145ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com call L092key_128 19155ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,58,223,200,128 19165ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com call L092key_128 19175ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,58,223,200,27 19185ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com call L092key_128 19195ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,58,223,200,54 19205ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com call L092key_128 19215ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm0,(%edx) 19225ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl %ecx,80(%edx) 19235ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorl %eax,%eax 19245ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com ret 19255ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align 4,0x90 19265ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL092key_128: 19275ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm0,(%edx) 19285ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 16(%edx),%edx 19295ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL091key_128_cold: 19305ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com shufps $16,%xmm0,%xmm4 19315ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm4,%xmm0 19325ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com shufps $140,%xmm0,%xmm4 19335ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm4,%xmm0 19345ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com shufps $255,%xmm1,%xmm1 19355ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm1,%xmm0 19365ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com ret 19375ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align 4,0x90 19385ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL08812rounds: 19395ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movq 16(%eax),%xmm2 19405ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl $11,%ecx 19415ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm0,-16(%edx) 19425ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,58,223,202,1 19435ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com call L093key_192a_cold 19445ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,58,223,202,2 19455ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com call L094key_192b 19465ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,58,223,202,4 19475ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com call L095key_192a 19485ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,58,223,202,8 19495ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com call L094key_192b 19505ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,58,223,202,16 19515ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com call L095key_192a 19525ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,58,223,202,32 19535ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com call L094key_192b 19545ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,58,223,202,64 19555ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com call L095key_192a 19565ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,58,223,202,128 19575ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com call L094key_192b 19585ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm0,(%edx) 19595ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl %ecx,48(%edx) 19605ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorl %eax,%eax 19615ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com ret 19625ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align 4,0x90 19635ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL095key_192a: 19645ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm0,(%edx) 19655ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 16(%edx),%edx 19665ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align 4,0x90 19675ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL093key_192a_cold: 19685ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movaps %xmm2,%xmm5 19695ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL096key_192b_warm: 19705ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com shufps $16,%xmm0,%xmm4 19715ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movdqa %xmm2,%xmm3 19725ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm4,%xmm0 19735ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com shufps $140,%xmm0,%xmm4 19745ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pslldq $4,%xmm3 19755ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm4,%xmm0 19765ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pshufd $85,%xmm1,%xmm1 19775ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor %xmm3,%xmm2 19785ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor %xmm1,%xmm0 19795ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pshufd $255,%xmm0,%xmm3 19805ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com pxor %xmm3,%xmm2 19815ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com ret 19825ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align 4,0x90 19835ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL094key_192b: 19845ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movaps %xmm0,%xmm3 19855ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com shufps $68,%xmm0,%xmm5 19865ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm5,(%edx) 19875ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com shufps $78,%xmm2,%xmm3 19885ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm3,16(%edx) 19895ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 32(%edx),%edx 19905ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jmp L096key_192b_warm 19915ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align 4,0x90 19925ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL08714rounds: 19935ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups 16(%eax),%xmm2 19945ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl $13,%ecx 19955ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 16(%edx),%edx 19965ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm0,-32(%edx) 19975ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm2,-16(%edx) 19985ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,58,223,202,1 19995ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com call L097key_256a_cold 20005ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,58,223,200,1 20015ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com call L098key_256b 20025ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,58,223,202,2 20035ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com call L099key_256a 20045ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,58,223,200,2 20055ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com call L098key_256b 20065ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,58,223,202,4 20075ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com call L099key_256a 20085ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,58,223,200,4 20095ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com call L098key_256b 20105ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,58,223,202,8 20115ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com call L099key_256a 20125ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,58,223,200,8 20135ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com call L098key_256b 20145ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,58,223,202,16 20155ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com call L099key_256a 20165ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,58,223,200,16 20175ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com call L098key_256b 20185ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,58,223,202,32 20195ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com call L099key_256a 20205ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,58,223,200,32 20215ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com call L098key_256b 20225ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,58,223,202,64 20235ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com call L099key_256a 20245ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm0,(%edx) 20255ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl %ecx,16(%edx) 20265ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorl %eax,%eax 20275ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com ret 20285ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align 4,0x90 20295ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL099key_256a: 20305ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm2,(%edx) 20315ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 16(%edx),%edx 20325ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL097key_256a_cold: 20335ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com shufps $16,%xmm0,%xmm4 20345ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm4,%xmm0 20355ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com shufps $140,%xmm0,%xmm4 20365ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm4,%xmm0 20375ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com shufps $255,%xmm1,%xmm1 20385ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm1,%xmm0 20395ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com ret 20405ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align 4,0x90 20415ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL098key_256b: 20425ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm0,(%edx) 20435ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 16(%edx),%edx 20445ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com shufps $16,%xmm2,%xmm4 20455ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm4,%xmm2 20465ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com shufps $140,%xmm2,%xmm4 20475ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm4,%xmm2 20485ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com shufps $170,%xmm1,%xmm1 20495ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorps %xmm1,%xmm2 20505ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com ret 20515ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align 2,0x90 20525ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL086bad_pointer: 20535ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl $-1,%eax 20545ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com ret 20555ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align 2,0x90 20565ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL089bad_keybits: 20575ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl $-2,%eax 20585ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com ret 20595ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.globl _aesni_set_encrypt_key 20605ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align 4 20615ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com_aesni_set_encrypt_key: 20625ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL_aesni_set_encrypt_key_begin: 20635ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl 4(%esp),%eax 20645ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl 8(%esp),%ecx 20655ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl 12(%esp),%edx 20665ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com call __aesni_set_encrypt_key 20675ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com ret 20685ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.globl _aesni_set_decrypt_key 20695ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.align 4 20705ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com_aesni_set_decrypt_key: 20715ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL_aesni_set_decrypt_key_begin: 20725ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl 4(%esp),%eax 20735ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl 8(%esp),%ecx 20745ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl 12(%esp),%edx 20755ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com call __aesni_set_encrypt_key 20765ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movl 12(%esp),%edx 20775ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com shll $4,%ecx 20785ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com testl %eax,%eax 20795ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com jnz L100dec_key_ret 20805ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 16(%edx,%ecx,1),%eax 20815ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups (%edx),%xmm0 20825ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups (%eax),%xmm1 20835ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm0,(%eax) 20845ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm1,(%edx) 20855ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 16(%edx),%edx 20865ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal -16(%eax),%eax 20875ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL101dec_key_inverse: 20885ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups (%edx),%xmm0 20895ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups (%eax),%xmm1 20905ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,219,192 20915ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,219,201 20925ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal 16(%edx),%edx 20935ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com leal -16(%eax),%eax 20945ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm0,16(%eax) 20955ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm1,-16(%edx) 20965ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com cmpl %edx,%eax 20975ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com ja L101dec_key_inverse 20985ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups (%edx),%xmm0 20995ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 102,15,56,219,192 21005ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com movups %xmm0,(%edx) 21015ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com xorl %eax,%eax 21025ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.comL100dec_key_ret: 21035ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com ret 21045ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 65,69,83,32,102,111,114,32,73,110,116,101,108,32,65,69 21055ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 83,45,78,73,44,32,67,82,89,80,84,79,71,65,77,83 21065ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115 21075ed803d0c301ad9b494126522e2e24430a99a955haavardm@opera.com.byte 115,108,46,111,114,103,62,0 2108