1*ebfedea0SLionel Sambuc#include <machine/asm.h> 2*ebfedea0SLionel Sambuc.text 3*ebfedea0SLionel Sambuc.globl aesni_encrypt 4*ebfedea0SLionel Sambuc.type aesni_encrypt,@function 5*ebfedea0SLionel Sambuc.align 16 6*ebfedea0SLionel Sambucaesni_encrypt: 7*ebfedea0SLionel Sambuc.L_aesni_encrypt_begin: 8*ebfedea0SLionel Sambuc movl 4(%esp),%eax 9*ebfedea0SLionel Sambuc movl 12(%esp),%edx 10*ebfedea0SLionel Sambuc movups (%eax),%xmm2 11*ebfedea0SLionel Sambuc movl 240(%edx),%ecx 12*ebfedea0SLionel Sambuc movl 8(%esp),%eax 13*ebfedea0SLionel Sambuc movups (%edx),%xmm0 14*ebfedea0SLionel Sambuc movups 16(%edx),%xmm1 15*ebfedea0SLionel Sambuc leal 32(%edx),%edx 16*ebfedea0SLionel Sambuc xorps %xmm0,%xmm2 17*ebfedea0SLionel Sambuc.L000enc1_loop_1: 18*ebfedea0SLionel Sambuc.byte 102,15,56,220,209 19*ebfedea0SLionel Sambuc decl %ecx 20*ebfedea0SLionel Sambuc movups (%edx),%xmm1 21*ebfedea0SLionel Sambuc leal 16(%edx),%edx 22*ebfedea0SLionel Sambuc jnz .L000enc1_loop_1 23*ebfedea0SLionel Sambuc.byte 102,15,56,221,209 24*ebfedea0SLionel Sambuc movups %xmm2,(%eax) 25*ebfedea0SLionel Sambuc ret 26*ebfedea0SLionel Sambuc.size aesni_encrypt,.-.L_aesni_encrypt_begin 27*ebfedea0SLionel Sambuc.globl aesni_decrypt 28*ebfedea0SLionel Sambuc.type aesni_decrypt,@function 29*ebfedea0SLionel Sambuc.align 16 30*ebfedea0SLionel Sambucaesni_decrypt: 31*ebfedea0SLionel Sambuc.L_aesni_decrypt_begin: 32*ebfedea0SLionel Sambuc movl 4(%esp),%eax 33*ebfedea0SLionel Sambuc movl 12(%esp),%edx 34*ebfedea0SLionel Sambuc movups (%eax),%xmm2 35*ebfedea0SLionel Sambuc movl 240(%edx),%ecx 36*ebfedea0SLionel Sambuc movl 8(%esp),%eax 37*ebfedea0SLionel Sambuc movups (%edx),%xmm0 38*ebfedea0SLionel Sambuc movups 16(%edx),%xmm1 39*ebfedea0SLionel Sambuc leal 32(%edx),%edx 40*ebfedea0SLionel Sambuc xorps %xmm0,%xmm2 41*ebfedea0SLionel Sambuc.L001dec1_loop_2: 42*ebfedea0SLionel Sambuc.byte 102,15,56,222,209 43*ebfedea0SLionel Sambuc decl %ecx 44*ebfedea0SLionel Sambuc movups (%edx),%xmm1 45*ebfedea0SLionel Sambuc leal 16(%edx),%edx 46*ebfedea0SLionel Sambuc jnz .L001dec1_loop_2 47*ebfedea0SLionel Sambuc.byte 102,15,56,223,209 48*ebfedea0SLionel Sambuc movups %xmm2,(%eax) 49*ebfedea0SLionel Sambuc ret 50*ebfedea0SLionel Sambuc.size aesni_decrypt,.-.L_aesni_decrypt_begin 51*ebfedea0SLionel Sambuc.type _aesni_encrypt3,@function 52*ebfedea0SLionel Sambuc.align 16 53*ebfedea0SLionel Sambuc_aesni_encrypt3: 54*ebfedea0SLionel Sambuc movups (%edx),%xmm0 55*ebfedea0SLionel Sambuc shrl $1,%ecx 56*ebfedea0SLionel Sambuc movups 16(%edx),%xmm1 57*ebfedea0SLionel Sambuc leal 32(%edx),%edx 58*ebfedea0SLionel Sambuc xorps %xmm0,%xmm2 59*ebfedea0SLionel Sambuc pxor %xmm0,%xmm3 60*ebfedea0SLionel Sambuc pxor %xmm0,%xmm4 61*ebfedea0SLionel Sambuc movups (%edx),%xmm0 62*ebfedea0SLionel Sambuc.L002enc3_loop: 63*ebfedea0SLionel Sambuc.byte 102,15,56,220,209 64*ebfedea0SLionel Sambuc.byte 102,15,56,220,217 65*ebfedea0SLionel Sambuc decl %ecx 66*ebfedea0SLionel Sambuc.byte 102,15,56,220,225 67*ebfedea0SLionel Sambuc movups 16(%edx),%xmm1 68*ebfedea0SLionel Sambuc.byte 102,15,56,220,208 69*ebfedea0SLionel Sambuc.byte 102,15,56,220,216 70*ebfedea0SLionel Sambuc leal 32(%edx),%edx 71*ebfedea0SLionel Sambuc.byte 102,15,56,220,224 72*ebfedea0SLionel Sambuc movups (%edx),%xmm0 73*ebfedea0SLionel Sambuc jnz .L002enc3_loop 74*ebfedea0SLionel Sambuc.byte 102,15,56,220,209 75*ebfedea0SLionel Sambuc.byte 102,15,56,220,217 76*ebfedea0SLionel Sambuc.byte 102,15,56,220,225 77*ebfedea0SLionel Sambuc.byte 102,15,56,221,208 78*ebfedea0SLionel Sambuc.byte 102,15,56,221,216 79*ebfedea0SLionel Sambuc.byte 102,15,56,221,224 80*ebfedea0SLionel Sambuc ret 81*ebfedea0SLionel Sambuc.size _aesni_encrypt3,.-_aesni_encrypt3 82*ebfedea0SLionel Sambuc.type _aesni_decrypt3,@function 83*ebfedea0SLionel Sambuc.align 16 84*ebfedea0SLionel Sambuc_aesni_decrypt3: 85*ebfedea0SLionel Sambuc movups (%edx),%xmm0 86*ebfedea0SLionel Sambuc shrl $1,%ecx 87*ebfedea0SLionel Sambuc movups 16(%edx),%xmm1 88*ebfedea0SLionel Sambuc leal 32(%edx),%edx 89*ebfedea0SLionel Sambuc xorps %xmm0,%xmm2 90*ebfedea0SLionel Sambuc pxor %xmm0,%xmm3 91*ebfedea0SLionel Sambuc pxor %xmm0,%xmm4 92*ebfedea0SLionel Sambuc movups (%edx),%xmm0 93*ebfedea0SLionel Sambuc.L003dec3_loop: 94*ebfedea0SLionel Sambuc.byte 102,15,56,222,209 95*ebfedea0SLionel Sambuc.byte 102,15,56,222,217 96*ebfedea0SLionel Sambuc decl %ecx 97*ebfedea0SLionel Sambuc.byte 102,15,56,222,225 98*ebfedea0SLionel Sambuc movups 16(%edx),%xmm1 99*ebfedea0SLionel Sambuc.byte 102,15,56,222,208 100*ebfedea0SLionel Sambuc.byte 102,15,56,222,216 101*ebfedea0SLionel Sambuc leal 32(%edx),%edx 102*ebfedea0SLionel Sambuc.byte 102,15,56,222,224 103*ebfedea0SLionel Sambuc movups (%edx),%xmm0 104*ebfedea0SLionel Sambuc jnz .L003dec3_loop 105*ebfedea0SLionel Sambuc.byte 102,15,56,222,209 106*ebfedea0SLionel Sambuc.byte 102,15,56,222,217 107*ebfedea0SLionel Sambuc.byte 102,15,56,222,225 108*ebfedea0SLionel Sambuc.byte 102,15,56,223,208 109*ebfedea0SLionel Sambuc.byte 102,15,56,223,216 110*ebfedea0SLionel Sambuc.byte 102,15,56,223,224 111*ebfedea0SLionel Sambuc ret 112*ebfedea0SLionel Sambuc.size _aesni_decrypt3,.-_aesni_decrypt3 113*ebfedea0SLionel Sambuc.type _aesni_encrypt4,@function 114*ebfedea0SLionel Sambuc.align 16 115*ebfedea0SLionel Sambuc_aesni_encrypt4: 116*ebfedea0SLionel Sambuc movups (%edx),%xmm0 117*ebfedea0SLionel Sambuc movups 16(%edx),%xmm1 118*ebfedea0SLionel Sambuc shrl $1,%ecx 119*ebfedea0SLionel Sambuc leal 32(%edx),%edx 120*ebfedea0SLionel Sambuc xorps %xmm0,%xmm2 121*ebfedea0SLionel Sambuc pxor %xmm0,%xmm3 122*ebfedea0SLionel Sambuc pxor %xmm0,%xmm4 123*ebfedea0SLionel Sambuc pxor %xmm0,%xmm5 124*ebfedea0SLionel Sambuc movups (%edx),%xmm0 125*ebfedea0SLionel Sambuc.L004enc4_loop: 126*ebfedea0SLionel Sambuc.byte 102,15,56,220,209 127*ebfedea0SLionel Sambuc.byte 102,15,56,220,217 128*ebfedea0SLionel Sambuc decl %ecx 129*ebfedea0SLionel Sambuc.byte 102,15,56,220,225 130*ebfedea0SLionel Sambuc.byte 102,15,56,220,233 131*ebfedea0SLionel Sambuc movups 16(%edx),%xmm1 132*ebfedea0SLionel Sambuc.byte 102,15,56,220,208 133*ebfedea0SLionel Sambuc.byte 102,15,56,220,216 134*ebfedea0SLionel Sambuc leal 32(%edx),%edx 135*ebfedea0SLionel Sambuc.byte 102,15,56,220,224 136*ebfedea0SLionel Sambuc.byte 102,15,56,220,232 137*ebfedea0SLionel Sambuc movups (%edx),%xmm0 138*ebfedea0SLionel Sambuc jnz .L004enc4_loop 139*ebfedea0SLionel Sambuc.byte 102,15,56,220,209 140*ebfedea0SLionel Sambuc.byte 102,15,56,220,217 141*ebfedea0SLionel Sambuc.byte 102,15,56,220,225 142*ebfedea0SLionel Sambuc.byte 102,15,56,220,233 143*ebfedea0SLionel Sambuc.byte 102,15,56,221,208 144*ebfedea0SLionel Sambuc.byte 102,15,56,221,216 145*ebfedea0SLionel Sambuc.byte 102,15,56,221,224 146*ebfedea0SLionel Sambuc.byte 102,15,56,221,232 147*ebfedea0SLionel Sambuc ret 148*ebfedea0SLionel Sambuc.size _aesni_encrypt4,.-_aesni_encrypt4 149*ebfedea0SLionel Sambuc.type _aesni_decrypt4,@function 150*ebfedea0SLionel Sambuc.align 16 151*ebfedea0SLionel Sambuc_aesni_decrypt4: 152*ebfedea0SLionel Sambuc movups (%edx),%xmm0 153*ebfedea0SLionel Sambuc movups 16(%edx),%xmm1 154*ebfedea0SLionel Sambuc shrl $1,%ecx 155*ebfedea0SLionel Sambuc leal 32(%edx),%edx 156*ebfedea0SLionel Sambuc xorps %xmm0,%xmm2 157*ebfedea0SLionel Sambuc pxor %xmm0,%xmm3 158*ebfedea0SLionel Sambuc pxor %xmm0,%xmm4 159*ebfedea0SLionel Sambuc pxor %xmm0,%xmm5 160*ebfedea0SLionel Sambuc movups (%edx),%xmm0 161*ebfedea0SLionel Sambuc.L005dec4_loop: 162*ebfedea0SLionel Sambuc.byte 102,15,56,222,209 163*ebfedea0SLionel Sambuc.byte 102,15,56,222,217 164*ebfedea0SLionel Sambuc decl %ecx 165*ebfedea0SLionel Sambuc.byte 102,15,56,222,225 166*ebfedea0SLionel Sambuc.byte 102,15,56,222,233 167*ebfedea0SLionel Sambuc movups 16(%edx),%xmm1 168*ebfedea0SLionel Sambuc.byte 102,15,56,222,208 169*ebfedea0SLionel Sambuc.byte 102,15,56,222,216 170*ebfedea0SLionel Sambuc leal 32(%edx),%edx 171*ebfedea0SLionel Sambuc.byte 102,15,56,222,224 172*ebfedea0SLionel Sambuc.byte 102,15,56,222,232 173*ebfedea0SLionel Sambuc movups (%edx),%xmm0 174*ebfedea0SLionel Sambuc jnz .L005dec4_loop 175*ebfedea0SLionel Sambuc.byte 102,15,56,222,209 176*ebfedea0SLionel Sambuc.byte 102,15,56,222,217 177*ebfedea0SLionel Sambuc.byte 102,15,56,222,225 178*ebfedea0SLionel Sambuc.byte 102,15,56,222,233 179*ebfedea0SLionel Sambuc.byte 102,15,56,223,208 180*ebfedea0SLionel Sambuc.byte 102,15,56,223,216 181*ebfedea0SLionel Sambuc.byte 102,15,56,223,224 182*ebfedea0SLionel Sambuc.byte 102,15,56,223,232 183*ebfedea0SLionel Sambuc ret 184*ebfedea0SLionel Sambuc.size _aesni_decrypt4,.-_aesni_decrypt4 185*ebfedea0SLionel Sambuc.type _aesni_encrypt6,@function 186*ebfedea0SLionel Sambuc.align 16 187*ebfedea0SLionel Sambuc_aesni_encrypt6: 188*ebfedea0SLionel Sambuc movups (%edx),%xmm0 189*ebfedea0SLionel Sambuc shrl $1,%ecx 190*ebfedea0SLionel Sambuc movups 16(%edx),%xmm1 191*ebfedea0SLionel Sambuc leal 32(%edx),%edx 192*ebfedea0SLionel Sambuc xorps %xmm0,%xmm2 193*ebfedea0SLionel Sambuc pxor %xmm0,%xmm3 194*ebfedea0SLionel Sambuc.byte 102,15,56,220,209 195*ebfedea0SLionel Sambuc pxor %xmm0,%xmm4 196*ebfedea0SLionel Sambuc.byte 102,15,56,220,217 197*ebfedea0SLionel Sambuc pxor %xmm0,%xmm5 198*ebfedea0SLionel Sambuc decl %ecx 199*ebfedea0SLionel Sambuc.byte 102,15,56,220,225 200*ebfedea0SLionel Sambuc pxor %xmm0,%xmm6 201*ebfedea0SLionel Sambuc.byte 102,15,56,220,233 202*ebfedea0SLionel Sambuc pxor %xmm0,%xmm7 203*ebfedea0SLionel Sambuc.byte 102,15,56,220,241 204*ebfedea0SLionel Sambuc movups (%edx),%xmm0 205*ebfedea0SLionel Sambuc.byte 102,15,56,220,249 206*ebfedea0SLionel Sambuc jmp .L_aesni_encrypt6_enter 207*ebfedea0SLionel Sambuc.align 16 208*ebfedea0SLionel Sambuc.L006enc6_loop: 209*ebfedea0SLionel Sambuc.byte 102,15,56,220,209 210*ebfedea0SLionel Sambuc.byte 102,15,56,220,217 211*ebfedea0SLionel Sambuc decl %ecx 212*ebfedea0SLionel Sambuc.byte 102,15,56,220,225 213*ebfedea0SLionel Sambuc.byte 102,15,56,220,233 214*ebfedea0SLionel Sambuc.byte 102,15,56,220,241 215*ebfedea0SLionel Sambuc.byte 102,15,56,220,249 216*ebfedea0SLionel Sambuc.align 16 217*ebfedea0SLionel Sambuc.L_aesni_encrypt6_enter: 218*ebfedea0SLionel Sambuc movups 16(%edx),%xmm1 219*ebfedea0SLionel Sambuc.byte 102,15,56,220,208 220*ebfedea0SLionel Sambuc.byte 102,15,56,220,216 221*ebfedea0SLionel Sambuc leal 32(%edx),%edx 222*ebfedea0SLionel Sambuc.byte 102,15,56,220,224 223*ebfedea0SLionel Sambuc.byte 102,15,56,220,232 224*ebfedea0SLionel Sambuc.byte 102,15,56,220,240 225*ebfedea0SLionel Sambuc.byte 102,15,56,220,248 226*ebfedea0SLionel Sambuc movups (%edx),%xmm0 227*ebfedea0SLionel Sambuc jnz .L006enc6_loop 228*ebfedea0SLionel Sambuc.byte 102,15,56,220,209 229*ebfedea0SLionel Sambuc.byte 102,15,56,220,217 230*ebfedea0SLionel Sambuc.byte 102,15,56,220,225 231*ebfedea0SLionel Sambuc.byte 102,15,56,220,233 232*ebfedea0SLionel Sambuc.byte 102,15,56,220,241 233*ebfedea0SLionel Sambuc.byte 102,15,56,220,249 234*ebfedea0SLionel Sambuc.byte 102,15,56,221,208 235*ebfedea0SLionel Sambuc.byte 102,15,56,221,216 236*ebfedea0SLionel Sambuc.byte 102,15,56,221,224 237*ebfedea0SLionel Sambuc.byte 102,15,56,221,232 238*ebfedea0SLionel Sambuc.byte 102,15,56,221,240 239*ebfedea0SLionel Sambuc.byte 102,15,56,221,248 240*ebfedea0SLionel Sambuc ret 241*ebfedea0SLionel Sambuc.size _aesni_encrypt6,.-_aesni_encrypt6 242*ebfedea0SLionel Sambuc.type _aesni_decrypt6,@function 243*ebfedea0SLionel Sambuc.align 16 244*ebfedea0SLionel Sambuc_aesni_decrypt6: 245*ebfedea0SLionel Sambuc movups (%edx),%xmm0 246*ebfedea0SLionel Sambuc shrl $1,%ecx 247*ebfedea0SLionel Sambuc movups 16(%edx),%xmm1 248*ebfedea0SLionel Sambuc leal 32(%edx),%edx 249*ebfedea0SLionel Sambuc xorps %xmm0,%xmm2 250*ebfedea0SLionel Sambuc pxor %xmm0,%xmm3 251*ebfedea0SLionel Sambuc.byte 102,15,56,222,209 252*ebfedea0SLionel Sambuc pxor %xmm0,%xmm4 253*ebfedea0SLionel Sambuc.byte 102,15,56,222,217 254*ebfedea0SLionel Sambuc pxor %xmm0,%xmm5 255*ebfedea0SLionel Sambuc decl %ecx 256*ebfedea0SLionel Sambuc.byte 102,15,56,222,225 257*ebfedea0SLionel Sambuc pxor %xmm0,%xmm6 258*ebfedea0SLionel Sambuc.byte 102,15,56,222,233 259*ebfedea0SLionel Sambuc pxor %xmm0,%xmm7 260*ebfedea0SLionel Sambuc.byte 102,15,56,222,241 261*ebfedea0SLionel Sambuc movups (%edx),%xmm0 262*ebfedea0SLionel Sambuc.byte 102,15,56,222,249 263*ebfedea0SLionel Sambuc jmp .L_aesni_decrypt6_enter 264*ebfedea0SLionel Sambuc.align 16 265*ebfedea0SLionel Sambuc.L007dec6_loop: 266*ebfedea0SLionel Sambuc.byte 102,15,56,222,209 267*ebfedea0SLionel Sambuc.byte 102,15,56,222,217 268*ebfedea0SLionel Sambuc decl %ecx 269*ebfedea0SLionel Sambuc.byte 102,15,56,222,225 270*ebfedea0SLionel Sambuc.byte 102,15,56,222,233 271*ebfedea0SLionel Sambuc.byte 102,15,56,222,241 272*ebfedea0SLionel Sambuc.byte 102,15,56,222,249 273*ebfedea0SLionel Sambuc.align 16 274*ebfedea0SLionel Sambuc.L_aesni_decrypt6_enter: 275*ebfedea0SLionel Sambuc movups 16(%edx),%xmm1 276*ebfedea0SLionel Sambuc.byte 102,15,56,222,208 277*ebfedea0SLionel Sambuc.byte 102,15,56,222,216 278*ebfedea0SLionel Sambuc leal 32(%edx),%edx 279*ebfedea0SLionel Sambuc.byte 102,15,56,222,224 280*ebfedea0SLionel Sambuc.byte 102,15,56,222,232 281*ebfedea0SLionel Sambuc.byte 102,15,56,222,240 282*ebfedea0SLionel Sambuc.byte 102,15,56,222,248 283*ebfedea0SLionel Sambuc movups (%edx),%xmm0 284*ebfedea0SLionel Sambuc jnz .L007dec6_loop 285*ebfedea0SLionel Sambuc.byte 102,15,56,222,209 286*ebfedea0SLionel Sambuc.byte 102,15,56,222,217 287*ebfedea0SLionel Sambuc.byte 102,15,56,222,225 288*ebfedea0SLionel Sambuc.byte 102,15,56,222,233 289*ebfedea0SLionel Sambuc.byte 102,15,56,222,241 290*ebfedea0SLionel Sambuc.byte 102,15,56,222,249 291*ebfedea0SLionel Sambuc.byte 102,15,56,223,208 292*ebfedea0SLionel Sambuc.byte 102,15,56,223,216 293*ebfedea0SLionel Sambuc.byte 102,15,56,223,224 294*ebfedea0SLionel Sambuc.byte 102,15,56,223,232 295*ebfedea0SLionel Sambuc.byte 102,15,56,223,240 296*ebfedea0SLionel Sambuc.byte 102,15,56,223,248 297*ebfedea0SLionel Sambuc ret 298*ebfedea0SLionel Sambuc.size _aesni_decrypt6,.-_aesni_decrypt6 299*ebfedea0SLionel Sambuc.globl aesni_ecb_encrypt 300*ebfedea0SLionel Sambuc.type aesni_ecb_encrypt,@function 301*ebfedea0SLionel Sambuc.align 16 302*ebfedea0SLionel Sambucaesni_ecb_encrypt: 303*ebfedea0SLionel Sambuc.L_aesni_ecb_encrypt_begin: 304*ebfedea0SLionel Sambuc pushl %ebp 305*ebfedea0SLionel Sambuc pushl %ebx 306*ebfedea0SLionel Sambuc pushl %esi 307*ebfedea0SLionel Sambuc pushl %edi 308*ebfedea0SLionel Sambuc movl 20(%esp),%esi 309*ebfedea0SLionel Sambuc movl 24(%esp),%edi 310*ebfedea0SLionel Sambuc movl 28(%esp),%eax 311*ebfedea0SLionel Sambuc movl 32(%esp),%edx 312*ebfedea0SLionel Sambuc movl 36(%esp),%ebx 313*ebfedea0SLionel Sambuc andl $-16,%eax 314*ebfedea0SLionel Sambuc jz .L008ecb_ret 315*ebfedea0SLionel Sambuc movl 240(%edx),%ecx 316*ebfedea0SLionel Sambuc testl %ebx,%ebx 317*ebfedea0SLionel Sambuc jz .L009ecb_decrypt 318*ebfedea0SLionel Sambuc movl %edx,%ebp 319*ebfedea0SLionel Sambuc movl %ecx,%ebx 320*ebfedea0SLionel Sambuc cmpl $96,%eax 321*ebfedea0SLionel Sambuc jb .L010ecb_enc_tail 322*ebfedea0SLionel Sambuc movdqu (%esi),%xmm2 323*ebfedea0SLionel Sambuc movdqu 16(%esi),%xmm3 324*ebfedea0SLionel Sambuc movdqu 32(%esi),%xmm4 325*ebfedea0SLionel Sambuc movdqu 48(%esi),%xmm5 326*ebfedea0SLionel Sambuc movdqu 64(%esi),%xmm6 327*ebfedea0SLionel Sambuc movdqu 80(%esi),%xmm7 328*ebfedea0SLionel Sambuc leal 96(%esi),%esi 329*ebfedea0SLionel Sambuc subl $96,%eax 330*ebfedea0SLionel Sambuc jmp .L011ecb_enc_loop6_enter 331*ebfedea0SLionel Sambuc.align 16 332*ebfedea0SLionel Sambuc.L012ecb_enc_loop6: 333*ebfedea0SLionel Sambuc movups %xmm2,(%edi) 334*ebfedea0SLionel Sambuc movdqu (%esi),%xmm2 335*ebfedea0SLionel Sambuc movups %xmm3,16(%edi) 336*ebfedea0SLionel Sambuc movdqu 16(%esi),%xmm3 337*ebfedea0SLionel Sambuc movups %xmm4,32(%edi) 338*ebfedea0SLionel Sambuc movdqu 32(%esi),%xmm4 339*ebfedea0SLionel Sambuc movups %xmm5,48(%edi) 340*ebfedea0SLionel Sambuc movdqu 48(%esi),%xmm5 341*ebfedea0SLionel Sambuc movups %xmm6,64(%edi) 342*ebfedea0SLionel Sambuc movdqu 64(%esi),%xmm6 343*ebfedea0SLionel Sambuc movups %xmm7,80(%edi) 344*ebfedea0SLionel Sambuc leal 96(%edi),%edi 345*ebfedea0SLionel Sambuc movdqu 80(%esi),%xmm7 346*ebfedea0SLionel Sambuc leal 96(%esi),%esi 347*ebfedea0SLionel Sambuc.L011ecb_enc_loop6_enter: 348*ebfedea0SLionel Sambuc call _aesni_encrypt6 349*ebfedea0SLionel Sambuc movl %ebp,%edx 350*ebfedea0SLionel Sambuc movl %ebx,%ecx 351*ebfedea0SLionel Sambuc subl $96,%eax 352*ebfedea0SLionel Sambuc jnc .L012ecb_enc_loop6 353*ebfedea0SLionel Sambuc movups %xmm2,(%edi) 354*ebfedea0SLionel Sambuc movups %xmm3,16(%edi) 355*ebfedea0SLionel Sambuc movups %xmm4,32(%edi) 356*ebfedea0SLionel Sambuc movups %xmm5,48(%edi) 357*ebfedea0SLionel Sambuc movups %xmm6,64(%edi) 358*ebfedea0SLionel Sambuc movups %xmm7,80(%edi) 359*ebfedea0SLionel Sambuc leal 96(%edi),%edi 360*ebfedea0SLionel Sambuc addl $96,%eax 361*ebfedea0SLionel Sambuc jz .L008ecb_ret 362*ebfedea0SLionel Sambuc.L010ecb_enc_tail: 363*ebfedea0SLionel Sambuc movups (%esi),%xmm2 364*ebfedea0SLionel Sambuc cmpl $32,%eax 365*ebfedea0SLionel Sambuc jb .L013ecb_enc_one 366*ebfedea0SLionel Sambuc movups 16(%esi),%xmm3 367*ebfedea0SLionel Sambuc je .L014ecb_enc_two 368*ebfedea0SLionel Sambuc movups 32(%esi),%xmm4 369*ebfedea0SLionel Sambuc cmpl $64,%eax 370*ebfedea0SLionel Sambuc jb .L015ecb_enc_three 371*ebfedea0SLionel Sambuc movups 48(%esi),%xmm5 372*ebfedea0SLionel Sambuc je .L016ecb_enc_four 373*ebfedea0SLionel Sambuc movups 64(%esi),%xmm6 374*ebfedea0SLionel Sambuc xorps %xmm7,%xmm7 375*ebfedea0SLionel Sambuc call _aesni_encrypt6 376*ebfedea0SLionel Sambuc movups %xmm2,(%edi) 377*ebfedea0SLionel Sambuc movups %xmm3,16(%edi) 378*ebfedea0SLionel Sambuc movups %xmm4,32(%edi) 379*ebfedea0SLionel Sambuc movups %xmm5,48(%edi) 380*ebfedea0SLionel Sambuc movups %xmm6,64(%edi) 381*ebfedea0SLionel Sambuc jmp .L008ecb_ret 382*ebfedea0SLionel Sambuc.align 16 383*ebfedea0SLionel Sambuc.L013ecb_enc_one: 384*ebfedea0SLionel Sambuc movups (%edx),%xmm0 385*ebfedea0SLionel Sambuc movups 16(%edx),%xmm1 386*ebfedea0SLionel Sambuc leal 32(%edx),%edx 387*ebfedea0SLionel Sambuc xorps %xmm0,%xmm2 388*ebfedea0SLionel Sambuc.L017enc1_loop_3: 389*ebfedea0SLionel Sambuc.byte 102,15,56,220,209 390*ebfedea0SLionel Sambuc decl %ecx 391*ebfedea0SLionel Sambuc movups (%edx),%xmm1 392*ebfedea0SLionel Sambuc leal 16(%edx),%edx 393*ebfedea0SLionel Sambuc jnz .L017enc1_loop_3 394*ebfedea0SLionel Sambuc.byte 102,15,56,221,209 395*ebfedea0SLionel Sambuc movups %xmm2,(%edi) 396*ebfedea0SLionel Sambuc jmp .L008ecb_ret 397*ebfedea0SLionel Sambuc.align 16 398*ebfedea0SLionel Sambuc.L014ecb_enc_two: 399*ebfedea0SLionel Sambuc xorps %xmm4,%xmm4 400*ebfedea0SLionel Sambuc call _aesni_encrypt3 401*ebfedea0SLionel Sambuc movups %xmm2,(%edi) 402*ebfedea0SLionel Sambuc movups %xmm3,16(%edi) 403*ebfedea0SLionel Sambuc jmp .L008ecb_ret 404*ebfedea0SLionel Sambuc.align 16 405*ebfedea0SLionel Sambuc.L015ecb_enc_three: 406*ebfedea0SLionel Sambuc call _aesni_encrypt3 407*ebfedea0SLionel Sambuc movups %xmm2,(%edi) 408*ebfedea0SLionel Sambuc movups %xmm3,16(%edi) 409*ebfedea0SLionel Sambuc movups %xmm4,32(%edi) 410*ebfedea0SLionel Sambuc jmp .L008ecb_ret 411*ebfedea0SLionel Sambuc.align 16 412*ebfedea0SLionel Sambuc.L016ecb_enc_four: 413*ebfedea0SLionel Sambuc call _aesni_encrypt4 414*ebfedea0SLionel Sambuc movups %xmm2,(%edi) 415*ebfedea0SLionel Sambuc movups %xmm3,16(%edi) 416*ebfedea0SLionel Sambuc movups %xmm4,32(%edi) 417*ebfedea0SLionel Sambuc movups %xmm5,48(%edi) 418*ebfedea0SLionel Sambuc jmp .L008ecb_ret 419*ebfedea0SLionel Sambuc.align 16 420*ebfedea0SLionel Sambuc.L009ecb_decrypt: 421*ebfedea0SLionel Sambuc movl %edx,%ebp 422*ebfedea0SLionel Sambuc movl %ecx,%ebx 423*ebfedea0SLionel Sambuc cmpl $96,%eax 424*ebfedea0SLionel Sambuc jb .L018ecb_dec_tail 425*ebfedea0SLionel Sambuc movdqu (%esi),%xmm2 426*ebfedea0SLionel Sambuc movdqu 16(%esi),%xmm3 427*ebfedea0SLionel Sambuc movdqu 32(%esi),%xmm4 428*ebfedea0SLionel Sambuc movdqu 48(%esi),%xmm5 429*ebfedea0SLionel Sambuc movdqu 64(%esi),%xmm6 430*ebfedea0SLionel Sambuc movdqu 80(%esi),%xmm7 431*ebfedea0SLionel Sambuc leal 96(%esi),%esi 432*ebfedea0SLionel Sambuc subl $96,%eax 433*ebfedea0SLionel Sambuc jmp .L019ecb_dec_loop6_enter 434*ebfedea0SLionel Sambuc.align 16 435*ebfedea0SLionel Sambuc.L020ecb_dec_loop6: 436*ebfedea0SLionel Sambuc movups %xmm2,(%edi) 437*ebfedea0SLionel Sambuc movdqu (%esi),%xmm2 438*ebfedea0SLionel Sambuc movups %xmm3,16(%edi) 439*ebfedea0SLionel Sambuc movdqu 16(%esi),%xmm3 440*ebfedea0SLionel Sambuc movups %xmm4,32(%edi) 441*ebfedea0SLionel Sambuc movdqu 32(%esi),%xmm4 442*ebfedea0SLionel Sambuc movups %xmm5,48(%edi) 443*ebfedea0SLionel Sambuc movdqu 48(%esi),%xmm5 444*ebfedea0SLionel Sambuc movups %xmm6,64(%edi) 445*ebfedea0SLionel Sambuc movdqu 64(%esi),%xmm6 446*ebfedea0SLionel Sambuc movups %xmm7,80(%edi) 447*ebfedea0SLionel Sambuc leal 96(%edi),%edi 448*ebfedea0SLionel Sambuc movdqu 80(%esi),%xmm7 449*ebfedea0SLionel Sambuc leal 96(%esi),%esi 450*ebfedea0SLionel Sambuc.L019ecb_dec_loop6_enter: 451*ebfedea0SLionel Sambuc call _aesni_decrypt6 452*ebfedea0SLionel Sambuc movl %ebp,%edx 453*ebfedea0SLionel Sambuc movl %ebx,%ecx 454*ebfedea0SLionel Sambuc subl $96,%eax 455*ebfedea0SLionel Sambuc jnc .L020ecb_dec_loop6 456*ebfedea0SLionel Sambuc movups %xmm2,(%edi) 457*ebfedea0SLionel Sambuc movups %xmm3,16(%edi) 458*ebfedea0SLionel Sambuc movups %xmm4,32(%edi) 459*ebfedea0SLionel Sambuc movups %xmm5,48(%edi) 460*ebfedea0SLionel Sambuc movups %xmm6,64(%edi) 461*ebfedea0SLionel Sambuc movups %xmm7,80(%edi) 462*ebfedea0SLionel Sambuc leal 96(%edi),%edi 463*ebfedea0SLionel Sambuc addl $96,%eax 464*ebfedea0SLionel Sambuc jz .L008ecb_ret 465*ebfedea0SLionel Sambuc.L018ecb_dec_tail: 466*ebfedea0SLionel Sambuc movups (%esi),%xmm2 467*ebfedea0SLionel Sambuc cmpl $32,%eax 468*ebfedea0SLionel Sambuc jb .L021ecb_dec_one 469*ebfedea0SLionel Sambuc movups 16(%esi),%xmm3 470*ebfedea0SLionel Sambuc je .L022ecb_dec_two 471*ebfedea0SLionel Sambuc movups 32(%esi),%xmm4 472*ebfedea0SLionel Sambuc cmpl $64,%eax 473*ebfedea0SLionel Sambuc jb .L023ecb_dec_three 474*ebfedea0SLionel Sambuc movups 48(%esi),%xmm5 475*ebfedea0SLionel Sambuc je .L024ecb_dec_four 476*ebfedea0SLionel Sambuc movups 64(%esi),%xmm6 477*ebfedea0SLionel Sambuc xorps %xmm7,%xmm7 478*ebfedea0SLionel Sambuc call _aesni_decrypt6 479*ebfedea0SLionel Sambuc movups %xmm2,(%edi) 480*ebfedea0SLionel Sambuc movups %xmm3,16(%edi) 481*ebfedea0SLionel Sambuc movups %xmm4,32(%edi) 482*ebfedea0SLionel Sambuc movups %xmm5,48(%edi) 483*ebfedea0SLionel Sambuc movups %xmm6,64(%edi) 484*ebfedea0SLionel Sambuc jmp .L008ecb_ret 485*ebfedea0SLionel Sambuc.align 16 486*ebfedea0SLionel Sambuc.L021ecb_dec_one: 487*ebfedea0SLionel Sambuc movups (%edx),%xmm0 488*ebfedea0SLionel Sambuc movups 16(%edx),%xmm1 489*ebfedea0SLionel Sambuc leal 32(%edx),%edx 490*ebfedea0SLionel Sambuc xorps %xmm0,%xmm2 491*ebfedea0SLionel Sambuc.L025dec1_loop_4: 492*ebfedea0SLionel Sambuc.byte 102,15,56,222,209 493*ebfedea0SLionel Sambuc decl %ecx 494*ebfedea0SLionel Sambuc movups (%edx),%xmm1 495*ebfedea0SLionel Sambuc leal 16(%edx),%edx 496*ebfedea0SLionel Sambuc jnz .L025dec1_loop_4 497*ebfedea0SLionel Sambuc.byte 102,15,56,223,209 498*ebfedea0SLionel Sambuc movups %xmm2,(%edi) 499*ebfedea0SLionel Sambuc jmp .L008ecb_ret 500*ebfedea0SLionel Sambuc.align 16 501*ebfedea0SLionel Sambuc.L022ecb_dec_two: 502*ebfedea0SLionel Sambuc xorps %xmm4,%xmm4 503*ebfedea0SLionel Sambuc call _aesni_decrypt3 504*ebfedea0SLionel Sambuc movups %xmm2,(%edi) 505*ebfedea0SLionel Sambuc movups %xmm3,16(%edi) 506*ebfedea0SLionel Sambuc jmp .L008ecb_ret 507*ebfedea0SLionel Sambuc.align 16 508*ebfedea0SLionel Sambuc.L023ecb_dec_three: 509*ebfedea0SLionel Sambuc call _aesni_decrypt3 510*ebfedea0SLionel Sambuc movups %xmm2,(%edi) 511*ebfedea0SLionel Sambuc movups %xmm3,16(%edi) 512*ebfedea0SLionel Sambuc movups %xmm4,32(%edi) 513*ebfedea0SLionel Sambuc jmp .L008ecb_ret 514*ebfedea0SLionel Sambuc.align 16 515*ebfedea0SLionel Sambuc.L024ecb_dec_four: 516*ebfedea0SLionel Sambuc call _aesni_decrypt4 517*ebfedea0SLionel Sambuc movups %xmm2,(%edi) 518*ebfedea0SLionel Sambuc movups %xmm3,16(%edi) 519*ebfedea0SLionel Sambuc movups %xmm4,32(%edi) 520*ebfedea0SLionel Sambuc movups %xmm5,48(%edi) 521*ebfedea0SLionel Sambuc.L008ecb_ret: 522*ebfedea0SLionel Sambuc popl %edi 523*ebfedea0SLionel Sambuc popl %esi 524*ebfedea0SLionel Sambuc popl %ebx 525*ebfedea0SLionel Sambuc popl %ebp 526*ebfedea0SLionel Sambuc ret 527*ebfedea0SLionel Sambuc.size aesni_ecb_encrypt,.-.L_aesni_ecb_encrypt_begin 528*ebfedea0SLionel Sambuc.globl aesni_ccm64_encrypt_blocks 529*ebfedea0SLionel Sambuc.type aesni_ccm64_encrypt_blocks,@function 530*ebfedea0SLionel Sambuc.align 16 531*ebfedea0SLionel Sambucaesni_ccm64_encrypt_blocks: 532*ebfedea0SLionel Sambuc.L_aesni_ccm64_encrypt_blocks_begin: 533*ebfedea0SLionel Sambuc pushl %ebp 534*ebfedea0SLionel Sambuc pushl %ebx 535*ebfedea0SLionel Sambuc pushl %esi 536*ebfedea0SLionel Sambuc pushl %edi 537*ebfedea0SLionel Sambuc movl 20(%esp),%esi 538*ebfedea0SLionel Sambuc movl 24(%esp),%edi 539*ebfedea0SLionel Sambuc movl 28(%esp),%eax 540*ebfedea0SLionel Sambuc movl 32(%esp),%edx 541*ebfedea0SLionel Sambuc movl 36(%esp),%ebx 542*ebfedea0SLionel Sambuc movl 40(%esp),%ecx 543*ebfedea0SLionel Sambuc movl %esp,%ebp 544*ebfedea0SLionel Sambuc subl $60,%esp 545*ebfedea0SLionel Sambuc andl $-16,%esp 546*ebfedea0SLionel Sambuc movl %ebp,48(%esp) 547*ebfedea0SLionel Sambuc movdqu (%ebx),%xmm7 548*ebfedea0SLionel Sambuc movdqu (%ecx),%xmm3 549*ebfedea0SLionel Sambuc movl 240(%edx),%ecx 550*ebfedea0SLionel Sambuc movl $202182159,(%esp) 551*ebfedea0SLionel Sambuc movl $134810123,4(%esp) 552*ebfedea0SLionel Sambuc movl $67438087,8(%esp) 553*ebfedea0SLionel Sambuc movl $66051,12(%esp) 554*ebfedea0SLionel Sambuc movl $1,%ebx 555*ebfedea0SLionel Sambuc xorl %ebp,%ebp 556*ebfedea0SLionel Sambuc movl %ebx,16(%esp) 557*ebfedea0SLionel Sambuc movl %ebp,20(%esp) 558*ebfedea0SLionel Sambuc movl %ebp,24(%esp) 559*ebfedea0SLionel Sambuc movl %ebp,28(%esp) 560*ebfedea0SLionel Sambuc shrl $1,%ecx 561*ebfedea0SLionel Sambuc leal (%edx),%ebp 562*ebfedea0SLionel Sambuc movdqa (%esp),%xmm5 563*ebfedea0SLionel Sambuc movdqa %xmm7,%xmm2 564*ebfedea0SLionel Sambuc movl %ecx,%ebx 565*ebfedea0SLionel Sambuc.byte 102,15,56,0,253 566*ebfedea0SLionel Sambuc.L026ccm64_enc_outer: 567*ebfedea0SLionel Sambuc movups (%ebp),%xmm0 568*ebfedea0SLionel Sambuc movl %ebx,%ecx 569*ebfedea0SLionel Sambuc movups (%esi),%xmm6 570*ebfedea0SLionel Sambuc xorps %xmm0,%xmm2 571*ebfedea0SLionel Sambuc movups 16(%ebp),%xmm1 572*ebfedea0SLionel Sambuc xorps %xmm6,%xmm0 573*ebfedea0SLionel Sambuc leal 32(%ebp),%edx 574*ebfedea0SLionel Sambuc xorps %xmm0,%xmm3 575*ebfedea0SLionel Sambuc movups (%edx),%xmm0 576*ebfedea0SLionel Sambuc.L027ccm64_enc2_loop: 577*ebfedea0SLionel Sambuc.byte 102,15,56,220,209 578*ebfedea0SLionel Sambuc decl %ecx 579*ebfedea0SLionel Sambuc.byte 102,15,56,220,217 580*ebfedea0SLionel Sambuc movups 16(%edx),%xmm1 581*ebfedea0SLionel Sambuc.byte 102,15,56,220,208 582*ebfedea0SLionel Sambuc leal 32(%edx),%edx 583*ebfedea0SLionel Sambuc.byte 102,15,56,220,216 584*ebfedea0SLionel Sambuc movups (%edx),%xmm0 585*ebfedea0SLionel Sambuc jnz .L027ccm64_enc2_loop 586*ebfedea0SLionel Sambuc.byte 102,15,56,220,209 587*ebfedea0SLionel Sambuc.byte 102,15,56,220,217 588*ebfedea0SLionel Sambuc paddq 16(%esp),%xmm7 589*ebfedea0SLionel Sambuc.byte 102,15,56,221,208 590*ebfedea0SLionel Sambuc.byte 102,15,56,221,216 591*ebfedea0SLionel Sambuc decl %eax 592*ebfedea0SLionel Sambuc leal 16(%esi),%esi 593*ebfedea0SLionel Sambuc xorps %xmm2,%xmm6 594*ebfedea0SLionel Sambuc movdqa %xmm7,%xmm2 595*ebfedea0SLionel Sambuc movups %xmm6,(%edi) 596*ebfedea0SLionel Sambuc leal 16(%edi),%edi 597*ebfedea0SLionel Sambuc.byte 102,15,56,0,213 598*ebfedea0SLionel Sambuc jnz .L026ccm64_enc_outer 599*ebfedea0SLionel Sambuc movl 48(%esp),%esp 600*ebfedea0SLionel Sambuc movl 40(%esp),%edi 601*ebfedea0SLionel Sambuc movups %xmm3,(%edi) 602*ebfedea0SLionel Sambuc popl %edi 603*ebfedea0SLionel Sambuc popl %esi 604*ebfedea0SLionel Sambuc popl %ebx 605*ebfedea0SLionel Sambuc popl %ebp 606*ebfedea0SLionel Sambuc ret 607*ebfedea0SLionel Sambuc.size aesni_ccm64_encrypt_blocks,.-.L_aesni_ccm64_encrypt_blocks_begin 608*ebfedea0SLionel Sambuc.globl aesni_ccm64_decrypt_blocks 609*ebfedea0SLionel Sambuc.type aesni_ccm64_decrypt_blocks,@function 610*ebfedea0SLionel Sambuc.align 16 611*ebfedea0SLionel Sambucaesni_ccm64_decrypt_blocks: 612*ebfedea0SLionel Sambuc.L_aesni_ccm64_decrypt_blocks_begin: 613*ebfedea0SLionel Sambuc pushl %ebp 614*ebfedea0SLionel Sambuc pushl %ebx 615*ebfedea0SLionel Sambuc pushl %esi 616*ebfedea0SLionel Sambuc pushl %edi 617*ebfedea0SLionel Sambuc movl 20(%esp),%esi 618*ebfedea0SLionel Sambuc movl 24(%esp),%edi 619*ebfedea0SLionel Sambuc movl 28(%esp),%eax 620*ebfedea0SLionel Sambuc movl 32(%esp),%edx 621*ebfedea0SLionel Sambuc movl 36(%esp),%ebx 622*ebfedea0SLionel Sambuc movl 40(%esp),%ecx 623*ebfedea0SLionel Sambuc movl %esp,%ebp 624*ebfedea0SLionel Sambuc subl $60,%esp 625*ebfedea0SLionel Sambuc andl $-16,%esp 626*ebfedea0SLionel Sambuc movl %ebp,48(%esp) 627*ebfedea0SLionel Sambuc movdqu (%ebx),%xmm7 628*ebfedea0SLionel Sambuc movdqu (%ecx),%xmm3 629*ebfedea0SLionel Sambuc movl 240(%edx),%ecx 630*ebfedea0SLionel Sambuc movl $202182159,(%esp) 631*ebfedea0SLionel Sambuc movl $134810123,4(%esp) 632*ebfedea0SLionel Sambuc movl $67438087,8(%esp) 633*ebfedea0SLionel Sambuc movl $66051,12(%esp) 634*ebfedea0SLionel Sambuc movl $1,%ebx 635*ebfedea0SLionel Sambuc xorl %ebp,%ebp 636*ebfedea0SLionel Sambuc movl %ebx,16(%esp) 637*ebfedea0SLionel Sambuc movl %ebp,20(%esp) 638*ebfedea0SLionel Sambuc movl %ebp,24(%esp) 639*ebfedea0SLionel Sambuc movl %ebp,28(%esp) 640*ebfedea0SLionel Sambuc movdqa (%esp),%xmm5 641*ebfedea0SLionel Sambuc movdqa %xmm7,%xmm2 642*ebfedea0SLionel Sambuc movl %edx,%ebp 643*ebfedea0SLionel Sambuc movl %ecx,%ebx 644*ebfedea0SLionel Sambuc.byte 102,15,56,0,253 645*ebfedea0SLionel Sambuc movups (%edx),%xmm0 646*ebfedea0SLionel Sambuc movups 16(%edx),%xmm1 647*ebfedea0SLionel Sambuc leal 32(%edx),%edx 648*ebfedea0SLionel Sambuc xorps %xmm0,%xmm2 649*ebfedea0SLionel Sambuc.L028enc1_loop_5: 650*ebfedea0SLionel Sambuc.byte 102,15,56,220,209 651*ebfedea0SLionel Sambuc decl %ecx 652*ebfedea0SLionel Sambuc movups (%edx),%xmm1 653*ebfedea0SLionel Sambuc leal 16(%edx),%edx 654*ebfedea0SLionel Sambuc jnz .L028enc1_loop_5 655*ebfedea0SLionel Sambuc.byte 102,15,56,221,209 656*ebfedea0SLionel Sambuc movups (%esi),%xmm6 657*ebfedea0SLionel Sambuc paddq 16(%esp),%xmm7 658*ebfedea0SLionel Sambuc leal 16(%esi),%esi 659*ebfedea0SLionel Sambuc jmp .L029ccm64_dec_outer 660*ebfedea0SLionel Sambuc.align 16 661*ebfedea0SLionel Sambuc.L029ccm64_dec_outer: 662*ebfedea0SLionel Sambuc xorps %xmm2,%xmm6 663*ebfedea0SLionel Sambuc movdqa %xmm7,%xmm2 664*ebfedea0SLionel Sambuc movl %ebx,%ecx 665*ebfedea0SLionel Sambuc movups %xmm6,(%edi) 666*ebfedea0SLionel Sambuc leal 16(%edi),%edi 667*ebfedea0SLionel Sambuc.byte 102,15,56,0,213 668*ebfedea0SLionel Sambuc subl $1,%eax 669*ebfedea0SLionel Sambuc jz .L030ccm64_dec_break 670*ebfedea0SLionel Sambuc movups (%ebp),%xmm0 671*ebfedea0SLionel Sambuc shrl $1,%ecx 672*ebfedea0SLionel Sambuc movups 16(%ebp),%xmm1 673*ebfedea0SLionel Sambuc xorps %xmm0,%xmm6 674*ebfedea0SLionel Sambuc leal 32(%ebp),%edx 675*ebfedea0SLionel Sambuc xorps %xmm0,%xmm2 676*ebfedea0SLionel Sambuc xorps %xmm6,%xmm3 677*ebfedea0SLionel Sambuc movups (%edx),%xmm0 678*ebfedea0SLionel Sambuc.L031ccm64_dec2_loop: 679*ebfedea0SLionel Sambuc.byte 102,15,56,220,209 680*ebfedea0SLionel Sambuc decl %ecx 681*ebfedea0SLionel Sambuc.byte 102,15,56,220,217 682*ebfedea0SLionel Sambuc movups 16(%edx),%xmm1 683*ebfedea0SLionel Sambuc.byte 102,15,56,220,208 684*ebfedea0SLionel Sambuc leal 32(%edx),%edx 685*ebfedea0SLionel Sambuc.byte 102,15,56,220,216 686*ebfedea0SLionel Sambuc movups (%edx),%xmm0 687*ebfedea0SLionel Sambuc jnz .L031ccm64_dec2_loop 688*ebfedea0SLionel Sambuc movups (%esi),%xmm6 689*ebfedea0SLionel Sambuc paddq 16(%esp),%xmm7 690*ebfedea0SLionel Sambuc.byte 102,15,56,220,209 691*ebfedea0SLionel Sambuc.byte 102,15,56,220,217 692*ebfedea0SLionel Sambuc leal 16(%esi),%esi 693*ebfedea0SLionel Sambuc.byte 102,15,56,221,208 694*ebfedea0SLionel Sambuc.byte 102,15,56,221,216 695*ebfedea0SLionel Sambuc jmp .L029ccm64_dec_outer 696*ebfedea0SLionel Sambuc.align 16 697*ebfedea0SLionel Sambuc.L030ccm64_dec_break: 698*ebfedea0SLionel Sambuc movl %ebp,%edx 699*ebfedea0SLionel Sambuc movups (%edx),%xmm0 700*ebfedea0SLionel Sambuc movups 16(%edx),%xmm1 701*ebfedea0SLionel Sambuc xorps %xmm0,%xmm6 702*ebfedea0SLionel Sambuc leal 32(%edx),%edx 703*ebfedea0SLionel Sambuc xorps %xmm6,%xmm3 704*ebfedea0SLionel Sambuc.L032enc1_loop_6: 705*ebfedea0SLionel Sambuc.byte 102,15,56,220,217 706*ebfedea0SLionel Sambuc decl %ecx 707*ebfedea0SLionel Sambuc movups (%edx),%xmm1 708*ebfedea0SLionel Sambuc leal 16(%edx),%edx 709*ebfedea0SLionel Sambuc jnz .L032enc1_loop_6 710*ebfedea0SLionel Sambuc.byte 102,15,56,221,217 711*ebfedea0SLionel Sambuc movl 48(%esp),%esp 712*ebfedea0SLionel Sambuc movl 40(%esp),%edi 713*ebfedea0SLionel Sambuc movups %xmm3,(%edi) 714*ebfedea0SLionel Sambuc popl %edi 715*ebfedea0SLionel Sambuc popl %esi 716*ebfedea0SLionel Sambuc popl %ebx 717*ebfedea0SLionel Sambuc popl %ebp 718*ebfedea0SLionel Sambuc ret 719*ebfedea0SLionel Sambuc.size aesni_ccm64_decrypt_blocks,.-.L_aesni_ccm64_decrypt_blocks_begin 720*ebfedea0SLionel Sambuc.globl aesni_ctr32_encrypt_blocks 721*ebfedea0SLionel Sambuc.type aesni_ctr32_encrypt_blocks,@function 722*ebfedea0SLionel Sambuc.align 16 723*ebfedea0SLionel Sambucaesni_ctr32_encrypt_blocks: 724*ebfedea0SLionel Sambuc.L_aesni_ctr32_encrypt_blocks_begin: 725*ebfedea0SLionel Sambuc pushl %ebp 726*ebfedea0SLionel Sambuc pushl %ebx 727*ebfedea0SLionel Sambuc pushl %esi 728*ebfedea0SLionel Sambuc pushl %edi 729*ebfedea0SLionel Sambuc movl 20(%esp),%esi 730*ebfedea0SLionel Sambuc movl 24(%esp),%edi 731*ebfedea0SLionel Sambuc movl 28(%esp),%eax 732*ebfedea0SLionel Sambuc movl 32(%esp),%edx 733*ebfedea0SLionel Sambuc movl 36(%esp),%ebx 734*ebfedea0SLionel Sambuc movl %esp,%ebp 735*ebfedea0SLionel Sambuc subl $88,%esp 736*ebfedea0SLionel Sambuc andl $-16,%esp 737*ebfedea0SLionel Sambuc movl %ebp,80(%esp) 738*ebfedea0SLionel Sambuc cmpl $1,%eax 739*ebfedea0SLionel Sambuc je .L033ctr32_one_shortcut 740*ebfedea0SLionel Sambuc movdqu (%ebx),%xmm7 741*ebfedea0SLionel Sambuc movl $202182159,(%esp) 742*ebfedea0SLionel Sambuc movl $134810123,4(%esp) 743*ebfedea0SLionel Sambuc movl $67438087,8(%esp) 744*ebfedea0SLionel Sambuc movl $66051,12(%esp) 745*ebfedea0SLionel Sambuc movl $6,%ecx 746*ebfedea0SLionel Sambuc xorl %ebp,%ebp 747*ebfedea0SLionel Sambuc movl %ecx,16(%esp) 748*ebfedea0SLionel Sambuc movl %ecx,20(%esp) 749*ebfedea0SLionel Sambuc movl %ecx,24(%esp) 750*ebfedea0SLionel Sambuc movl %ebp,28(%esp) 751*ebfedea0SLionel Sambuc.byte 102,15,58,22,251,3 752*ebfedea0SLionel Sambuc.byte 102,15,58,34,253,3 753*ebfedea0SLionel Sambuc movl 240(%edx),%ecx 754*ebfedea0SLionel Sambuc bswap %ebx 755*ebfedea0SLionel Sambuc pxor %xmm1,%xmm1 756*ebfedea0SLionel Sambuc pxor %xmm0,%xmm0 757*ebfedea0SLionel Sambuc movdqa (%esp),%xmm2 758*ebfedea0SLionel Sambuc.byte 102,15,58,34,203,0 759*ebfedea0SLionel Sambuc leal 3(%ebx),%ebp 760*ebfedea0SLionel Sambuc.byte 102,15,58,34,197,0 761*ebfedea0SLionel Sambuc incl %ebx 762*ebfedea0SLionel Sambuc.byte 102,15,58,34,203,1 763*ebfedea0SLionel Sambuc incl %ebp 764*ebfedea0SLionel Sambuc.byte 102,15,58,34,197,1 765*ebfedea0SLionel Sambuc incl %ebx 766*ebfedea0SLionel Sambuc.byte 102,15,58,34,203,2 767*ebfedea0SLionel Sambuc incl %ebp 768*ebfedea0SLionel Sambuc.byte 102,15,58,34,197,2 769*ebfedea0SLionel Sambuc movdqa %xmm1,48(%esp) 770*ebfedea0SLionel Sambuc.byte 102,15,56,0,202 771*ebfedea0SLionel Sambuc movdqa %xmm0,64(%esp) 772*ebfedea0SLionel Sambuc.byte 102,15,56,0,194 773*ebfedea0SLionel Sambuc pshufd $192,%xmm1,%xmm2 774*ebfedea0SLionel Sambuc pshufd $128,%xmm1,%xmm3 775*ebfedea0SLionel Sambuc cmpl $6,%eax 776*ebfedea0SLionel Sambuc jb .L034ctr32_tail 777*ebfedea0SLionel Sambuc movdqa %xmm7,32(%esp) 778*ebfedea0SLionel Sambuc shrl $1,%ecx 779*ebfedea0SLionel Sambuc movl %edx,%ebp 780*ebfedea0SLionel Sambuc movl %ecx,%ebx 781*ebfedea0SLionel Sambuc subl $6,%eax 782*ebfedea0SLionel Sambuc jmp .L035ctr32_loop6 783*ebfedea0SLionel Sambuc.align 16 784*ebfedea0SLionel Sambuc.L035ctr32_loop6: 785*ebfedea0SLionel Sambuc pshufd $64,%xmm1,%xmm4 786*ebfedea0SLionel Sambuc movdqa 32(%esp),%xmm1 787*ebfedea0SLionel Sambuc pshufd $192,%xmm0,%xmm5 788*ebfedea0SLionel Sambuc por %xmm1,%xmm2 789*ebfedea0SLionel Sambuc pshufd $128,%xmm0,%xmm6 790*ebfedea0SLionel Sambuc por %xmm1,%xmm3 791*ebfedea0SLionel Sambuc pshufd $64,%xmm0,%xmm7 792*ebfedea0SLionel Sambuc por %xmm1,%xmm4 793*ebfedea0SLionel Sambuc por %xmm1,%xmm5 794*ebfedea0SLionel Sambuc por %xmm1,%xmm6 795*ebfedea0SLionel Sambuc por %xmm1,%xmm7 796*ebfedea0SLionel Sambuc movups (%ebp),%xmm0 797*ebfedea0SLionel Sambuc movups 16(%ebp),%xmm1 798*ebfedea0SLionel Sambuc leal 32(%ebp),%edx 799*ebfedea0SLionel Sambuc decl %ecx 800*ebfedea0SLionel Sambuc pxor %xmm0,%xmm2 801*ebfedea0SLionel Sambuc pxor %xmm0,%xmm3 802*ebfedea0SLionel Sambuc.byte 102,15,56,220,209 803*ebfedea0SLionel Sambuc pxor %xmm0,%xmm4 804*ebfedea0SLionel Sambuc.byte 102,15,56,220,217 805*ebfedea0SLionel Sambuc pxor %xmm0,%xmm5 806*ebfedea0SLionel Sambuc.byte 102,15,56,220,225 807*ebfedea0SLionel Sambuc pxor %xmm0,%xmm6 808*ebfedea0SLionel Sambuc.byte 102,15,56,220,233 809*ebfedea0SLionel Sambuc pxor %xmm0,%xmm7 810*ebfedea0SLionel Sambuc.byte 102,15,56,220,241 811*ebfedea0SLionel Sambuc movups (%edx),%xmm0 812*ebfedea0SLionel Sambuc.byte 102,15,56,220,249 813*ebfedea0SLionel Sambuc call .L_aesni_encrypt6_enter 814*ebfedea0SLionel Sambuc movups (%esi),%xmm1 815*ebfedea0SLionel Sambuc movups 16(%esi),%xmm0 816*ebfedea0SLionel Sambuc xorps %xmm1,%xmm2 817*ebfedea0SLionel Sambuc movups 32(%esi),%xmm1 818*ebfedea0SLionel Sambuc xorps %xmm0,%xmm3 819*ebfedea0SLionel Sambuc movups %xmm2,(%edi) 820*ebfedea0SLionel Sambuc movdqa 16(%esp),%xmm0 821*ebfedea0SLionel Sambuc xorps %xmm1,%xmm4 822*ebfedea0SLionel Sambuc movdqa 48(%esp),%xmm1 823*ebfedea0SLionel Sambuc movups %xmm3,16(%edi) 824*ebfedea0SLionel Sambuc movups %xmm4,32(%edi) 825*ebfedea0SLionel Sambuc paddd %xmm0,%xmm1 826*ebfedea0SLionel Sambuc paddd 64(%esp),%xmm0 827*ebfedea0SLionel Sambuc movdqa (%esp),%xmm2 828*ebfedea0SLionel Sambuc movups 48(%esi),%xmm3 829*ebfedea0SLionel Sambuc movups 64(%esi),%xmm4 830*ebfedea0SLionel Sambuc xorps %xmm3,%xmm5 831*ebfedea0SLionel Sambuc movups 80(%esi),%xmm3 832*ebfedea0SLionel Sambuc leal 96(%esi),%esi 833*ebfedea0SLionel Sambuc movdqa %xmm1,48(%esp) 834*ebfedea0SLionel Sambuc.byte 102,15,56,0,202 835*ebfedea0SLionel Sambuc xorps %xmm4,%xmm6 836*ebfedea0SLionel Sambuc movups %xmm5,48(%edi) 837*ebfedea0SLionel Sambuc xorps %xmm3,%xmm7 838*ebfedea0SLionel Sambuc movdqa %xmm0,64(%esp) 839*ebfedea0SLionel Sambuc.byte 102,15,56,0,194 840*ebfedea0SLionel Sambuc movups %xmm6,64(%edi) 841*ebfedea0SLionel Sambuc pshufd $192,%xmm1,%xmm2 842*ebfedea0SLionel Sambuc movups %xmm7,80(%edi) 843*ebfedea0SLionel Sambuc leal 96(%edi),%edi 844*ebfedea0SLionel Sambuc movl %ebx,%ecx 845*ebfedea0SLionel Sambuc pshufd $128,%xmm1,%xmm3 846*ebfedea0SLionel Sambuc subl $6,%eax 847*ebfedea0SLionel Sambuc jnc .L035ctr32_loop6 848*ebfedea0SLionel Sambuc addl $6,%eax 849*ebfedea0SLionel Sambuc jz .L036ctr32_ret 850*ebfedea0SLionel Sambuc movl %ebp,%edx 851*ebfedea0SLionel Sambuc leal 1(,%ecx,2),%ecx 852*ebfedea0SLionel Sambuc movdqa 32(%esp),%xmm7 853*ebfedea0SLionel Sambuc.L034ctr32_tail: 854*ebfedea0SLionel Sambuc por %xmm7,%xmm2 855*ebfedea0SLionel Sambuc cmpl $2,%eax 856*ebfedea0SLionel Sambuc jb .L037ctr32_one 857*ebfedea0SLionel Sambuc pshufd $64,%xmm1,%xmm4 858*ebfedea0SLionel Sambuc por %xmm7,%xmm3 859*ebfedea0SLionel Sambuc je .L038ctr32_two 860*ebfedea0SLionel Sambuc pshufd $192,%xmm0,%xmm5 861*ebfedea0SLionel Sambuc por %xmm7,%xmm4 862*ebfedea0SLionel Sambuc cmpl $4,%eax 863*ebfedea0SLionel Sambuc jb .L039ctr32_three 864*ebfedea0SLionel Sambuc pshufd $128,%xmm0,%xmm6 865*ebfedea0SLionel Sambuc por %xmm7,%xmm5 866*ebfedea0SLionel Sambuc je .L040ctr32_four 867*ebfedea0SLionel Sambuc por %xmm7,%xmm6 868*ebfedea0SLionel Sambuc call _aesni_encrypt6 869*ebfedea0SLionel Sambuc movups (%esi),%xmm1 870*ebfedea0SLionel Sambuc movups 16(%esi),%xmm0 871*ebfedea0SLionel Sambuc xorps %xmm1,%xmm2 872*ebfedea0SLionel Sambuc movups 32(%esi),%xmm1 873*ebfedea0SLionel Sambuc xorps %xmm0,%xmm3 874*ebfedea0SLionel Sambuc movups 48(%esi),%xmm0 875*ebfedea0SLionel Sambuc xorps %xmm1,%xmm4 876*ebfedea0SLionel Sambuc movups 64(%esi),%xmm1 877*ebfedea0SLionel Sambuc xorps %xmm0,%xmm5 878*ebfedea0SLionel Sambuc movups %xmm2,(%edi) 879*ebfedea0SLionel Sambuc xorps %xmm1,%xmm6 880*ebfedea0SLionel Sambuc movups %xmm3,16(%edi) 881*ebfedea0SLionel Sambuc movups %xmm4,32(%edi) 882*ebfedea0SLionel Sambuc movups %xmm5,48(%edi) 883*ebfedea0SLionel Sambuc movups %xmm6,64(%edi) 884*ebfedea0SLionel Sambuc jmp .L036ctr32_ret 885*ebfedea0SLionel Sambuc.align 16 886*ebfedea0SLionel Sambuc.L033ctr32_one_shortcut: 887*ebfedea0SLionel Sambuc movups (%ebx),%xmm2 888*ebfedea0SLionel Sambuc movl 240(%edx),%ecx 889*ebfedea0SLionel Sambuc.L037ctr32_one: 890*ebfedea0SLionel Sambuc movups (%edx),%xmm0 891*ebfedea0SLionel Sambuc movups 16(%edx),%xmm1 892*ebfedea0SLionel Sambuc leal 32(%edx),%edx 893*ebfedea0SLionel Sambuc xorps %xmm0,%xmm2 894*ebfedea0SLionel Sambuc.L041enc1_loop_7: 895*ebfedea0SLionel Sambuc.byte 102,15,56,220,209 896*ebfedea0SLionel Sambuc decl %ecx 897*ebfedea0SLionel Sambuc movups (%edx),%xmm1 898*ebfedea0SLionel Sambuc leal 16(%edx),%edx 899*ebfedea0SLionel Sambuc jnz .L041enc1_loop_7 900*ebfedea0SLionel Sambuc.byte 102,15,56,221,209 901*ebfedea0SLionel Sambuc movups (%esi),%xmm6 902*ebfedea0SLionel Sambuc xorps %xmm2,%xmm6 903*ebfedea0SLionel Sambuc movups %xmm6,(%edi) 904*ebfedea0SLionel Sambuc jmp .L036ctr32_ret 905*ebfedea0SLionel Sambuc.align 16 906*ebfedea0SLionel Sambuc.L038ctr32_two: 907*ebfedea0SLionel Sambuc call _aesni_encrypt3 908*ebfedea0SLionel Sambuc movups (%esi),%xmm5 909*ebfedea0SLionel Sambuc movups 16(%esi),%xmm6 910*ebfedea0SLionel Sambuc xorps %xmm5,%xmm2 911*ebfedea0SLionel Sambuc xorps %xmm6,%xmm3 912*ebfedea0SLionel Sambuc movups %xmm2,(%edi) 913*ebfedea0SLionel Sambuc movups %xmm3,16(%edi) 914*ebfedea0SLionel Sambuc jmp .L036ctr32_ret 915*ebfedea0SLionel Sambuc.align 16 916*ebfedea0SLionel Sambuc.L039ctr32_three: 917*ebfedea0SLionel Sambuc call _aesni_encrypt3 918*ebfedea0SLionel Sambuc movups (%esi),%xmm5 919*ebfedea0SLionel Sambuc movups 16(%esi),%xmm6 920*ebfedea0SLionel Sambuc xorps %xmm5,%xmm2 921*ebfedea0SLionel Sambuc movups 32(%esi),%xmm7 922*ebfedea0SLionel Sambuc xorps %xmm6,%xmm3 923*ebfedea0SLionel Sambuc movups %xmm2,(%edi) 924*ebfedea0SLionel Sambuc xorps %xmm7,%xmm4 925*ebfedea0SLionel Sambuc movups %xmm3,16(%edi) 926*ebfedea0SLionel Sambuc movups %xmm4,32(%edi) 927*ebfedea0SLionel Sambuc jmp .L036ctr32_ret 928*ebfedea0SLionel Sambuc.align 16 929*ebfedea0SLionel Sambuc.L040ctr32_four: 930*ebfedea0SLionel Sambuc call _aesni_encrypt4 931*ebfedea0SLionel Sambuc movups (%esi),%xmm6 932*ebfedea0SLionel Sambuc movups 16(%esi),%xmm7 933*ebfedea0SLionel Sambuc movups 32(%esi),%xmm1 934*ebfedea0SLionel Sambuc xorps %xmm6,%xmm2 935*ebfedea0SLionel Sambuc movups 48(%esi),%xmm0 936*ebfedea0SLionel Sambuc xorps %xmm7,%xmm3 937*ebfedea0SLionel Sambuc movups %xmm2,(%edi) 938*ebfedea0SLionel Sambuc xorps %xmm1,%xmm4 939*ebfedea0SLionel Sambuc movups %xmm3,16(%edi) 940*ebfedea0SLionel Sambuc xorps %xmm0,%xmm5 941*ebfedea0SLionel Sambuc movups %xmm4,32(%edi) 942*ebfedea0SLionel Sambuc movups %xmm5,48(%edi) 943*ebfedea0SLionel Sambuc.L036ctr32_ret: 944*ebfedea0SLionel Sambuc movl 80(%esp),%esp 945*ebfedea0SLionel Sambuc popl %edi 946*ebfedea0SLionel Sambuc popl %esi 947*ebfedea0SLionel Sambuc popl %ebx 948*ebfedea0SLionel Sambuc popl %ebp 949*ebfedea0SLionel Sambuc ret 950*ebfedea0SLionel Sambuc.size aesni_ctr32_encrypt_blocks,.-.L_aesni_ctr32_encrypt_blocks_begin 951*ebfedea0SLionel Sambuc.globl aesni_xts_encrypt 952*ebfedea0SLionel Sambuc.type aesni_xts_encrypt,@function 953*ebfedea0SLionel Sambuc.align 16 954*ebfedea0SLionel Sambucaesni_xts_encrypt: 955*ebfedea0SLionel Sambuc.L_aesni_xts_encrypt_begin: 956*ebfedea0SLionel Sambuc pushl %ebp 957*ebfedea0SLionel Sambuc pushl %ebx 958*ebfedea0SLionel Sambuc pushl %esi 959*ebfedea0SLionel Sambuc pushl %edi 960*ebfedea0SLionel Sambuc movl 36(%esp),%edx 961*ebfedea0SLionel Sambuc movl 40(%esp),%esi 962*ebfedea0SLionel Sambuc movl 240(%edx),%ecx 963*ebfedea0SLionel Sambuc movups (%esi),%xmm2 964*ebfedea0SLionel Sambuc movups (%edx),%xmm0 965*ebfedea0SLionel Sambuc movups 16(%edx),%xmm1 966*ebfedea0SLionel Sambuc leal 32(%edx),%edx 967*ebfedea0SLionel Sambuc xorps %xmm0,%xmm2 968*ebfedea0SLionel Sambuc.L042enc1_loop_8: 969*ebfedea0SLionel Sambuc.byte 102,15,56,220,209 970*ebfedea0SLionel Sambuc decl %ecx 971*ebfedea0SLionel Sambuc movups (%edx),%xmm1 972*ebfedea0SLionel Sambuc leal 16(%edx),%edx 973*ebfedea0SLionel Sambuc jnz .L042enc1_loop_8 974*ebfedea0SLionel Sambuc.byte 102,15,56,221,209 975*ebfedea0SLionel Sambuc movl 20(%esp),%esi 976*ebfedea0SLionel Sambuc movl 24(%esp),%edi 977*ebfedea0SLionel Sambuc movl 28(%esp),%eax 978*ebfedea0SLionel Sambuc movl 32(%esp),%edx 979*ebfedea0SLionel Sambuc movl %esp,%ebp 980*ebfedea0SLionel Sambuc subl $120,%esp 981*ebfedea0SLionel Sambuc movl 240(%edx),%ecx 982*ebfedea0SLionel Sambuc andl $-16,%esp 983*ebfedea0SLionel Sambuc movl $135,96(%esp) 984*ebfedea0SLionel Sambuc movl $0,100(%esp) 985*ebfedea0SLionel Sambuc movl $1,104(%esp) 986*ebfedea0SLionel Sambuc movl $0,108(%esp) 987*ebfedea0SLionel Sambuc movl %eax,112(%esp) 988*ebfedea0SLionel Sambuc movl %ebp,116(%esp) 989*ebfedea0SLionel Sambuc movdqa %xmm2,%xmm1 990*ebfedea0SLionel Sambuc pxor %xmm0,%xmm0 991*ebfedea0SLionel Sambuc movdqa 96(%esp),%xmm3 992*ebfedea0SLionel Sambuc pcmpgtd %xmm1,%xmm0 993*ebfedea0SLionel Sambuc andl $-16,%eax 994*ebfedea0SLionel Sambuc movl %edx,%ebp 995*ebfedea0SLionel Sambuc movl %ecx,%ebx 996*ebfedea0SLionel Sambuc subl $96,%eax 997*ebfedea0SLionel Sambuc jc .L043xts_enc_short 998*ebfedea0SLionel Sambuc shrl $1,%ecx 999*ebfedea0SLionel Sambuc movl %ecx,%ebx 1000*ebfedea0SLionel Sambuc jmp .L044xts_enc_loop6 1001*ebfedea0SLionel Sambuc.align 16 1002*ebfedea0SLionel Sambuc.L044xts_enc_loop6: 1003*ebfedea0SLionel Sambuc pshufd $19,%xmm0,%xmm2 1004*ebfedea0SLionel Sambuc pxor %xmm0,%xmm0 1005*ebfedea0SLionel Sambuc movdqa %xmm1,(%esp) 1006*ebfedea0SLionel Sambuc paddq %xmm1,%xmm1 1007*ebfedea0SLionel Sambuc pand %xmm3,%xmm2 1008*ebfedea0SLionel Sambuc pcmpgtd %xmm1,%xmm0 1009*ebfedea0SLionel Sambuc pxor %xmm2,%xmm1 1010*ebfedea0SLionel Sambuc pshufd $19,%xmm0,%xmm2 1011*ebfedea0SLionel Sambuc pxor %xmm0,%xmm0 1012*ebfedea0SLionel Sambuc movdqa %xmm1,16(%esp) 1013*ebfedea0SLionel Sambuc paddq %xmm1,%xmm1 1014*ebfedea0SLionel Sambuc pand %xmm3,%xmm2 1015*ebfedea0SLionel Sambuc pcmpgtd %xmm1,%xmm0 1016*ebfedea0SLionel Sambuc pxor %xmm2,%xmm1 1017*ebfedea0SLionel Sambuc pshufd $19,%xmm0,%xmm2 1018*ebfedea0SLionel Sambuc pxor %xmm0,%xmm0 1019*ebfedea0SLionel Sambuc movdqa %xmm1,32(%esp) 1020*ebfedea0SLionel Sambuc paddq %xmm1,%xmm1 1021*ebfedea0SLionel Sambuc pand %xmm3,%xmm2 1022*ebfedea0SLionel Sambuc pcmpgtd %xmm1,%xmm0 1023*ebfedea0SLionel Sambuc pxor %xmm2,%xmm1 1024*ebfedea0SLionel Sambuc pshufd $19,%xmm0,%xmm2 1025*ebfedea0SLionel Sambuc pxor %xmm0,%xmm0 1026*ebfedea0SLionel Sambuc movdqa %xmm1,48(%esp) 1027*ebfedea0SLionel Sambuc paddq %xmm1,%xmm1 1028*ebfedea0SLionel Sambuc pand %xmm3,%xmm2 1029*ebfedea0SLionel Sambuc pcmpgtd %xmm1,%xmm0 1030*ebfedea0SLionel Sambuc pxor %xmm2,%xmm1 1031*ebfedea0SLionel Sambuc pshufd $19,%xmm0,%xmm7 1032*ebfedea0SLionel Sambuc movdqa %xmm1,64(%esp) 1033*ebfedea0SLionel Sambuc paddq %xmm1,%xmm1 1034*ebfedea0SLionel Sambuc movups (%ebp),%xmm0 1035*ebfedea0SLionel Sambuc pand %xmm3,%xmm7 1036*ebfedea0SLionel Sambuc movups (%esi),%xmm2 1037*ebfedea0SLionel Sambuc pxor %xmm1,%xmm7 1038*ebfedea0SLionel Sambuc movdqu 16(%esi),%xmm3 1039*ebfedea0SLionel Sambuc xorps %xmm0,%xmm2 1040*ebfedea0SLionel Sambuc movdqu 32(%esi),%xmm4 1041*ebfedea0SLionel Sambuc pxor %xmm0,%xmm3 1042*ebfedea0SLionel Sambuc movdqu 48(%esi),%xmm5 1043*ebfedea0SLionel Sambuc pxor %xmm0,%xmm4 1044*ebfedea0SLionel Sambuc movdqu 64(%esi),%xmm6 1045*ebfedea0SLionel Sambuc pxor %xmm0,%xmm5 1046*ebfedea0SLionel Sambuc movdqu 80(%esi),%xmm1 1047*ebfedea0SLionel Sambuc pxor %xmm0,%xmm6 1048*ebfedea0SLionel Sambuc leal 96(%esi),%esi 1049*ebfedea0SLionel Sambuc pxor (%esp),%xmm2 1050*ebfedea0SLionel Sambuc movdqa %xmm7,80(%esp) 1051*ebfedea0SLionel Sambuc pxor %xmm1,%xmm7 1052*ebfedea0SLionel Sambuc movups 16(%ebp),%xmm1 1053*ebfedea0SLionel Sambuc leal 32(%ebp),%edx 1054*ebfedea0SLionel Sambuc pxor 16(%esp),%xmm3 1055*ebfedea0SLionel Sambuc.byte 102,15,56,220,209 1056*ebfedea0SLionel Sambuc pxor 32(%esp),%xmm4 1057*ebfedea0SLionel Sambuc.byte 102,15,56,220,217 1058*ebfedea0SLionel Sambuc pxor 48(%esp),%xmm5 1059*ebfedea0SLionel Sambuc decl %ecx 1060*ebfedea0SLionel Sambuc.byte 102,15,56,220,225 1061*ebfedea0SLionel Sambuc pxor 64(%esp),%xmm6 1062*ebfedea0SLionel Sambuc.byte 102,15,56,220,233 1063*ebfedea0SLionel Sambuc pxor %xmm0,%xmm7 1064*ebfedea0SLionel Sambuc.byte 102,15,56,220,241 1065*ebfedea0SLionel Sambuc movups (%edx),%xmm0 1066*ebfedea0SLionel Sambuc.byte 102,15,56,220,249 1067*ebfedea0SLionel Sambuc call .L_aesni_encrypt6_enter 1068*ebfedea0SLionel Sambuc movdqa 80(%esp),%xmm1 1069*ebfedea0SLionel Sambuc pxor %xmm0,%xmm0 1070*ebfedea0SLionel Sambuc xorps (%esp),%xmm2 1071*ebfedea0SLionel Sambuc pcmpgtd %xmm1,%xmm0 1072*ebfedea0SLionel Sambuc xorps 16(%esp),%xmm3 1073*ebfedea0SLionel Sambuc movups %xmm2,(%edi) 1074*ebfedea0SLionel Sambuc xorps 32(%esp),%xmm4 1075*ebfedea0SLionel Sambuc movups %xmm3,16(%edi) 1076*ebfedea0SLionel Sambuc xorps 48(%esp),%xmm5 1077*ebfedea0SLionel Sambuc movups %xmm4,32(%edi) 1078*ebfedea0SLionel Sambuc xorps 64(%esp),%xmm6 1079*ebfedea0SLionel Sambuc movups %xmm5,48(%edi) 1080*ebfedea0SLionel Sambuc xorps %xmm1,%xmm7 1081*ebfedea0SLionel Sambuc movups %xmm6,64(%edi) 1082*ebfedea0SLionel Sambuc pshufd $19,%xmm0,%xmm2 1083*ebfedea0SLionel Sambuc movups %xmm7,80(%edi) 1084*ebfedea0SLionel Sambuc leal 96(%edi),%edi 1085*ebfedea0SLionel Sambuc movdqa 96(%esp),%xmm3 1086*ebfedea0SLionel Sambuc pxor %xmm0,%xmm0 1087*ebfedea0SLionel Sambuc paddq %xmm1,%xmm1 1088*ebfedea0SLionel Sambuc pand %xmm3,%xmm2 1089*ebfedea0SLionel Sambuc pcmpgtd %xmm1,%xmm0 1090*ebfedea0SLionel Sambuc movl %ebx,%ecx 1091*ebfedea0SLionel Sambuc pxor %xmm2,%xmm1 1092*ebfedea0SLionel Sambuc subl $96,%eax 1093*ebfedea0SLionel Sambuc jnc .L044xts_enc_loop6 1094*ebfedea0SLionel Sambuc leal 1(,%ecx,2),%ecx 1095*ebfedea0SLionel Sambuc movl %ebp,%edx 1096*ebfedea0SLionel Sambuc movl %ecx,%ebx 1097*ebfedea0SLionel Sambuc.L043xts_enc_short: 1098*ebfedea0SLionel Sambuc addl $96,%eax 1099*ebfedea0SLionel Sambuc jz .L045xts_enc_done6x 1100*ebfedea0SLionel Sambuc movdqa %xmm1,%xmm5 1101*ebfedea0SLionel Sambuc cmpl $32,%eax 1102*ebfedea0SLionel Sambuc jb .L046xts_enc_one 1103*ebfedea0SLionel Sambuc pshufd $19,%xmm0,%xmm2 1104*ebfedea0SLionel Sambuc pxor %xmm0,%xmm0 1105*ebfedea0SLionel Sambuc paddq %xmm1,%xmm1 1106*ebfedea0SLionel Sambuc pand %xmm3,%xmm2 1107*ebfedea0SLionel Sambuc pcmpgtd %xmm1,%xmm0 1108*ebfedea0SLionel Sambuc pxor %xmm2,%xmm1 1109*ebfedea0SLionel Sambuc je .L047xts_enc_two 1110*ebfedea0SLionel Sambuc pshufd $19,%xmm0,%xmm2 1111*ebfedea0SLionel Sambuc pxor %xmm0,%xmm0 1112*ebfedea0SLionel Sambuc movdqa %xmm1,%xmm6 1113*ebfedea0SLionel Sambuc paddq %xmm1,%xmm1 1114*ebfedea0SLionel Sambuc pand %xmm3,%xmm2 1115*ebfedea0SLionel Sambuc pcmpgtd %xmm1,%xmm0 1116*ebfedea0SLionel Sambuc pxor %xmm2,%xmm1 1117*ebfedea0SLionel Sambuc cmpl $64,%eax 1118*ebfedea0SLionel Sambuc jb .L048xts_enc_three 1119*ebfedea0SLionel Sambuc pshufd $19,%xmm0,%xmm2 1120*ebfedea0SLionel Sambuc pxor %xmm0,%xmm0 1121*ebfedea0SLionel Sambuc movdqa %xmm1,%xmm7 1122*ebfedea0SLionel Sambuc paddq %xmm1,%xmm1 1123*ebfedea0SLionel Sambuc pand %xmm3,%xmm2 1124*ebfedea0SLionel Sambuc pcmpgtd %xmm1,%xmm0 1125*ebfedea0SLionel Sambuc pxor %xmm2,%xmm1 1126*ebfedea0SLionel Sambuc movdqa %xmm5,(%esp) 1127*ebfedea0SLionel Sambuc movdqa %xmm6,16(%esp) 1128*ebfedea0SLionel Sambuc je .L049xts_enc_four 1129*ebfedea0SLionel Sambuc movdqa %xmm7,32(%esp) 1130*ebfedea0SLionel Sambuc pshufd $19,%xmm0,%xmm7 1131*ebfedea0SLionel Sambuc movdqa %xmm1,48(%esp) 1132*ebfedea0SLionel Sambuc paddq %xmm1,%xmm1 1133*ebfedea0SLionel Sambuc pand %xmm3,%xmm7 1134*ebfedea0SLionel Sambuc pxor %xmm1,%xmm7 1135*ebfedea0SLionel Sambuc movdqu (%esi),%xmm2 1136*ebfedea0SLionel Sambuc movdqu 16(%esi),%xmm3 1137*ebfedea0SLionel Sambuc movdqu 32(%esi),%xmm4 1138*ebfedea0SLionel Sambuc pxor (%esp),%xmm2 1139*ebfedea0SLionel Sambuc movdqu 48(%esi),%xmm5 1140*ebfedea0SLionel Sambuc pxor 16(%esp),%xmm3 1141*ebfedea0SLionel Sambuc movdqu 64(%esi),%xmm6 1142*ebfedea0SLionel Sambuc pxor 32(%esp),%xmm4 1143*ebfedea0SLionel Sambuc leal 80(%esi),%esi 1144*ebfedea0SLionel Sambuc pxor 48(%esp),%xmm5 1145*ebfedea0SLionel Sambuc movdqa %xmm7,64(%esp) 1146*ebfedea0SLionel Sambuc pxor %xmm7,%xmm6 1147*ebfedea0SLionel Sambuc call _aesni_encrypt6 1148*ebfedea0SLionel Sambuc movaps 64(%esp),%xmm1 1149*ebfedea0SLionel Sambuc xorps (%esp),%xmm2 1150*ebfedea0SLionel Sambuc xorps 16(%esp),%xmm3 1151*ebfedea0SLionel Sambuc xorps 32(%esp),%xmm4 1152*ebfedea0SLionel Sambuc movups %xmm2,(%edi) 1153*ebfedea0SLionel Sambuc xorps 48(%esp),%xmm5 1154*ebfedea0SLionel Sambuc movups %xmm3,16(%edi) 1155*ebfedea0SLionel Sambuc xorps %xmm1,%xmm6 1156*ebfedea0SLionel Sambuc movups %xmm4,32(%edi) 1157*ebfedea0SLionel Sambuc movups %xmm5,48(%edi) 1158*ebfedea0SLionel Sambuc movups %xmm6,64(%edi) 1159*ebfedea0SLionel Sambuc leal 80(%edi),%edi 1160*ebfedea0SLionel Sambuc jmp .L050xts_enc_done 1161*ebfedea0SLionel Sambuc.align 16 1162*ebfedea0SLionel Sambuc.L046xts_enc_one: 1163*ebfedea0SLionel Sambuc movups (%esi),%xmm2 1164*ebfedea0SLionel Sambuc leal 16(%esi),%esi 1165*ebfedea0SLionel Sambuc xorps %xmm5,%xmm2 1166*ebfedea0SLionel Sambuc movups (%edx),%xmm0 1167*ebfedea0SLionel Sambuc movups 16(%edx),%xmm1 1168*ebfedea0SLionel Sambuc leal 32(%edx),%edx 1169*ebfedea0SLionel Sambuc xorps %xmm0,%xmm2 1170*ebfedea0SLionel Sambuc.L051enc1_loop_9: 1171*ebfedea0SLionel Sambuc.byte 102,15,56,220,209 1172*ebfedea0SLionel Sambuc decl %ecx 1173*ebfedea0SLionel Sambuc movups (%edx),%xmm1 1174*ebfedea0SLionel Sambuc leal 16(%edx),%edx 1175*ebfedea0SLionel Sambuc jnz .L051enc1_loop_9 1176*ebfedea0SLionel Sambuc.byte 102,15,56,221,209 1177*ebfedea0SLionel Sambuc xorps %xmm5,%xmm2 1178*ebfedea0SLionel Sambuc movups %xmm2,(%edi) 1179*ebfedea0SLionel Sambuc leal 16(%edi),%edi 1180*ebfedea0SLionel Sambuc movdqa %xmm5,%xmm1 1181*ebfedea0SLionel Sambuc jmp .L050xts_enc_done 1182*ebfedea0SLionel Sambuc.align 16 1183*ebfedea0SLionel Sambuc.L047xts_enc_two: 1184*ebfedea0SLionel Sambuc movaps %xmm1,%xmm6 1185*ebfedea0SLionel Sambuc movups (%esi),%xmm2 1186*ebfedea0SLionel Sambuc movups 16(%esi),%xmm3 1187*ebfedea0SLionel Sambuc leal 32(%esi),%esi 1188*ebfedea0SLionel Sambuc xorps %xmm5,%xmm2 1189*ebfedea0SLionel Sambuc xorps %xmm6,%xmm3 1190*ebfedea0SLionel Sambuc xorps %xmm4,%xmm4 1191*ebfedea0SLionel Sambuc call _aesni_encrypt3 1192*ebfedea0SLionel Sambuc xorps %xmm5,%xmm2 1193*ebfedea0SLionel Sambuc xorps %xmm6,%xmm3 1194*ebfedea0SLionel Sambuc movups %xmm2,(%edi) 1195*ebfedea0SLionel Sambuc movups %xmm3,16(%edi) 1196*ebfedea0SLionel Sambuc leal 32(%edi),%edi 1197*ebfedea0SLionel Sambuc movdqa %xmm6,%xmm1 1198*ebfedea0SLionel Sambuc jmp .L050xts_enc_done 1199*ebfedea0SLionel Sambuc.align 16 1200*ebfedea0SLionel Sambuc.L048xts_enc_three: 1201*ebfedea0SLionel Sambuc movaps %xmm1,%xmm7 1202*ebfedea0SLionel Sambuc movups (%esi),%xmm2 1203*ebfedea0SLionel Sambuc movups 16(%esi),%xmm3 1204*ebfedea0SLionel Sambuc movups 32(%esi),%xmm4 1205*ebfedea0SLionel Sambuc leal 48(%esi),%esi 1206*ebfedea0SLionel Sambuc xorps %xmm5,%xmm2 1207*ebfedea0SLionel Sambuc xorps %xmm6,%xmm3 1208*ebfedea0SLionel Sambuc xorps %xmm7,%xmm4 1209*ebfedea0SLionel Sambuc call _aesni_encrypt3 1210*ebfedea0SLionel Sambuc xorps %xmm5,%xmm2 1211*ebfedea0SLionel Sambuc xorps %xmm6,%xmm3 1212*ebfedea0SLionel Sambuc xorps %xmm7,%xmm4 1213*ebfedea0SLionel Sambuc movups %xmm2,(%edi) 1214*ebfedea0SLionel Sambuc movups %xmm3,16(%edi) 1215*ebfedea0SLionel Sambuc movups %xmm4,32(%edi) 1216*ebfedea0SLionel Sambuc leal 48(%edi),%edi 1217*ebfedea0SLionel Sambuc movdqa %xmm7,%xmm1 1218*ebfedea0SLionel Sambuc jmp .L050xts_enc_done 1219*ebfedea0SLionel Sambuc.align 16 1220*ebfedea0SLionel Sambuc.L049xts_enc_four: 1221*ebfedea0SLionel Sambuc movaps %xmm1,%xmm6 1222*ebfedea0SLionel Sambuc movups (%esi),%xmm2 1223*ebfedea0SLionel Sambuc movups 16(%esi),%xmm3 1224*ebfedea0SLionel Sambuc movups 32(%esi),%xmm4 1225*ebfedea0SLionel Sambuc xorps (%esp),%xmm2 1226*ebfedea0SLionel Sambuc movups 48(%esi),%xmm5 1227*ebfedea0SLionel Sambuc leal 64(%esi),%esi 1228*ebfedea0SLionel Sambuc xorps 16(%esp),%xmm3 1229*ebfedea0SLionel Sambuc xorps %xmm7,%xmm4 1230*ebfedea0SLionel Sambuc xorps %xmm6,%xmm5 1231*ebfedea0SLionel Sambuc call _aesni_encrypt4 1232*ebfedea0SLionel Sambuc xorps (%esp),%xmm2 1233*ebfedea0SLionel Sambuc xorps 16(%esp),%xmm3 1234*ebfedea0SLionel Sambuc xorps %xmm7,%xmm4 1235*ebfedea0SLionel Sambuc movups %xmm2,(%edi) 1236*ebfedea0SLionel Sambuc xorps %xmm6,%xmm5 1237*ebfedea0SLionel Sambuc movups %xmm3,16(%edi) 1238*ebfedea0SLionel Sambuc movups %xmm4,32(%edi) 1239*ebfedea0SLionel Sambuc movups %xmm5,48(%edi) 1240*ebfedea0SLionel Sambuc leal 64(%edi),%edi 1241*ebfedea0SLionel Sambuc movdqa %xmm6,%xmm1 1242*ebfedea0SLionel Sambuc jmp .L050xts_enc_done 1243*ebfedea0SLionel Sambuc.align 16 1244*ebfedea0SLionel Sambuc.L045xts_enc_done6x: 1245*ebfedea0SLionel Sambuc movl 112(%esp),%eax 1246*ebfedea0SLionel Sambuc andl $15,%eax 1247*ebfedea0SLionel Sambuc jz .L052xts_enc_ret 1248*ebfedea0SLionel Sambuc movdqa %xmm1,%xmm5 1249*ebfedea0SLionel Sambuc movl %eax,112(%esp) 1250*ebfedea0SLionel Sambuc jmp .L053xts_enc_steal 1251*ebfedea0SLionel Sambuc.align 16 1252*ebfedea0SLionel Sambuc.L050xts_enc_done: 1253*ebfedea0SLionel Sambuc movl 112(%esp),%eax 1254*ebfedea0SLionel Sambuc pxor %xmm0,%xmm0 1255*ebfedea0SLionel Sambuc andl $15,%eax 1256*ebfedea0SLionel Sambuc jz .L052xts_enc_ret 1257*ebfedea0SLionel Sambuc pcmpgtd %xmm1,%xmm0 1258*ebfedea0SLionel Sambuc movl %eax,112(%esp) 1259*ebfedea0SLionel Sambuc pshufd $19,%xmm0,%xmm5 1260*ebfedea0SLionel Sambuc paddq %xmm1,%xmm1 1261*ebfedea0SLionel Sambuc pand 96(%esp),%xmm5 1262*ebfedea0SLionel Sambuc pxor %xmm1,%xmm5 1263*ebfedea0SLionel Sambuc.L053xts_enc_steal: 1264*ebfedea0SLionel Sambuc movzbl (%esi),%ecx 1265*ebfedea0SLionel Sambuc movzbl -16(%edi),%edx 1266*ebfedea0SLionel Sambuc leal 1(%esi),%esi 1267*ebfedea0SLionel Sambuc movb %cl,-16(%edi) 1268*ebfedea0SLionel Sambuc movb %dl,(%edi) 1269*ebfedea0SLionel Sambuc leal 1(%edi),%edi 1270*ebfedea0SLionel Sambuc subl $1,%eax 1271*ebfedea0SLionel Sambuc jnz .L053xts_enc_steal 1272*ebfedea0SLionel Sambuc subl 112(%esp),%edi 1273*ebfedea0SLionel Sambuc movl %ebp,%edx 1274*ebfedea0SLionel Sambuc movl %ebx,%ecx 1275*ebfedea0SLionel Sambuc movups -16(%edi),%xmm2 1276*ebfedea0SLionel Sambuc xorps %xmm5,%xmm2 1277*ebfedea0SLionel Sambuc movups (%edx),%xmm0 1278*ebfedea0SLionel Sambuc movups 16(%edx),%xmm1 1279*ebfedea0SLionel Sambuc leal 32(%edx),%edx 1280*ebfedea0SLionel Sambuc xorps %xmm0,%xmm2 1281*ebfedea0SLionel Sambuc.L054enc1_loop_10: 1282*ebfedea0SLionel Sambuc.byte 102,15,56,220,209 1283*ebfedea0SLionel Sambuc decl %ecx 1284*ebfedea0SLionel Sambuc movups (%edx),%xmm1 1285*ebfedea0SLionel Sambuc leal 16(%edx),%edx 1286*ebfedea0SLionel Sambuc jnz .L054enc1_loop_10 1287*ebfedea0SLionel Sambuc.byte 102,15,56,221,209 1288*ebfedea0SLionel Sambuc xorps %xmm5,%xmm2 1289*ebfedea0SLionel Sambuc movups %xmm2,-16(%edi) 1290*ebfedea0SLionel Sambuc.L052xts_enc_ret: 1291*ebfedea0SLionel Sambuc movl 116(%esp),%esp 1292*ebfedea0SLionel Sambuc popl %edi 1293*ebfedea0SLionel Sambuc popl %esi 1294*ebfedea0SLionel Sambuc popl %ebx 1295*ebfedea0SLionel Sambuc popl %ebp 1296*ebfedea0SLionel Sambuc ret 1297*ebfedea0SLionel Sambuc.size aesni_xts_encrypt,.-.L_aesni_xts_encrypt_begin 1298*ebfedea0SLionel Sambuc.globl aesni_xts_decrypt 1299*ebfedea0SLionel Sambuc.type aesni_xts_decrypt,@function 1300*ebfedea0SLionel Sambuc.align 16 1301*ebfedea0SLionel Sambucaesni_xts_decrypt: 1302*ebfedea0SLionel Sambuc.L_aesni_xts_decrypt_begin: 1303*ebfedea0SLionel Sambuc pushl %ebp 1304*ebfedea0SLionel Sambuc pushl %ebx 1305*ebfedea0SLionel Sambuc pushl %esi 1306*ebfedea0SLionel Sambuc pushl %edi 1307*ebfedea0SLionel Sambuc movl 36(%esp),%edx 1308*ebfedea0SLionel Sambuc movl 40(%esp),%esi 1309*ebfedea0SLionel Sambuc movl 240(%edx),%ecx 1310*ebfedea0SLionel Sambuc movups (%esi),%xmm2 1311*ebfedea0SLionel Sambuc movups (%edx),%xmm0 1312*ebfedea0SLionel Sambuc movups 16(%edx),%xmm1 1313*ebfedea0SLionel Sambuc leal 32(%edx),%edx 1314*ebfedea0SLionel Sambuc xorps %xmm0,%xmm2 1315*ebfedea0SLionel Sambuc.L055enc1_loop_11: 1316*ebfedea0SLionel Sambuc.byte 102,15,56,220,209 1317*ebfedea0SLionel Sambuc decl %ecx 1318*ebfedea0SLionel Sambuc movups (%edx),%xmm1 1319*ebfedea0SLionel Sambuc leal 16(%edx),%edx 1320*ebfedea0SLionel Sambuc jnz .L055enc1_loop_11 1321*ebfedea0SLionel Sambuc.byte 102,15,56,221,209 1322*ebfedea0SLionel Sambuc movl 20(%esp),%esi 1323*ebfedea0SLionel Sambuc movl 24(%esp),%edi 1324*ebfedea0SLionel Sambuc movl 28(%esp),%eax 1325*ebfedea0SLionel Sambuc movl 32(%esp),%edx 1326*ebfedea0SLionel Sambuc movl %esp,%ebp 1327*ebfedea0SLionel Sambuc subl $120,%esp 1328*ebfedea0SLionel Sambuc andl $-16,%esp 1329*ebfedea0SLionel Sambuc xorl %ebx,%ebx 1330*ebfedea0SLionel Sambuc testl $15,%eax 1331*ebfedea0SLionel Sambuc setnz %bl 1332*ebfedea0SLionel Sambuc shll $4,%ebx 1333*ebfedea0SLionel Sambuc subl %ebx,%eax 1334*ebfedea0SLionel Sambuc movl $135,96(%esp) 1335*ebfedea0SLionel Sambuc movl $0,100(%esp) 1336*ebfedea0SLionel Sambuc movl $1,104(%esp) 1337*ebfedea0SLionel Sambuc movl $0,108(%esp) 1338*ebfedea0SLionel Sambuc movl %eax,112(%esp) 1339*ebfedea0SLionel Sambuc movl %ebp,116(%esp) 1340*ebfedea0SLionel Sambuc movl 240(%edx),%ecx 1341*ebfedea0SLionel Sambuc movl %edx,%ebp 1342*ebfedea0SLionel Sambuc movl %ecx,%ebx 1343*ebfedea0SLionel Sambuc movdqa %xmm2,%xmm1 1344*ebfedea0SLionel Sambuc pxor %xmm0,%xmm0 1345*ebfedea0SLionel Sambuc movdqa 96(%esp),%xmm3 1346*ebfedea0SLionel Sambuc pcmpgtd %xmm1,%xmm0 1347*ebfedea0SLionel Sambuc andl $-16,%eax 1348*ebfedea0SLionel Sambuc subl $96,%eax 1349*ebfedea0SLionel Sambuc jc .L056xts_dec_short 1350*ebfedea0SLionel Sambuc shrl $1,%ecx 1351*ebfedea0SLionel Sambuc movl %ecx,%ebx 1352*ebfedea0SLionel Sambuc jmp .L057xts_dec_loop6 1353*ebfedea0SLionel Sambuc.align 16 1354*ebfedea0SLionel Sambuc.L057xts_dec_loop6: 1355*ebfedea0SLionel Sambuc pshufd $19,%xmm0,%xmm2 1356*ebfedea0SLionel Sambuc pxor %xmm0,%xmm0 1357*ebfedea0SLionel Sambuc movdqa %xmm1,(%esp) 1358*ebfedea0SLionel Sambuc paddq %xmm1,%xmm1 1359*ebfedea0SLionel Sambuc pand %xmm3,%xmm2 1360*ebfedea0SLionel Sambuc pcmpgtd %xmm1,%xmm0 1361*ebfedea0SLionel Sambuc pxor %xmm2,%xmm1 1362*ebfedea0SLionel Sambuc pshufd $19,%xmm0,%xmm2 1363*ebfedea0SLionel Sambuc pxor %xmm0,%xmm0 1364*ebfedea0SLionel Sambuc movdqa %xmm1,16(%esp) 1365*ebfedea0SLionel Sambuc paddq %xmm1,%xmm1 1366*ebfedea0SLionel Sambuc pand %xmm3,%xmm2 1367*ebfedea0SLionel Sambuc pcmpgtd %xmm1,%xmm0 1368*ebfedea0SLionel Sambuc pxor %xmm2,%xmm1 1369*ebfedea0SLionel Sambuc pshufd $19,%xmm0,%xmm2 1370*ebfedea0SLionel Sambuc pxor %xmm0,%xmm0 1371*ebfedea0SLionel Sambuc movdqa %xmm1,32(%esp) 1372*ebfedea0SLionel Sambuc paddq %xmm1,%xmm1 1373*ebfedea0SLionel Sambuc pand %xmm3,%xmm2 1374*ebfedea0SLionel Sambuc pcmpgtd %xmm1,%xmm0 1375*ebfedea0SLionel Sambuc pxor %xmm2,%xmm1 1376*ebfedea0SLionel Sambuc pshufd $19,%xmm0,%xmm2 1377*ebfedea0SLionel Sambuc pxor %xmm0,%xmm0 1378*ebfedea0SLionel Sambuc movdqa %xmm1,48(%esp) 1379*ebfedea0SLionel Sambuc paddq %xmm1,%xmm1 1380*ebfedea0SLionel Sambuc pand %xmm3,%xmm2 1381*ebfedea0SLionel Sambuc pcmpgtd %xmm1,%xmm0 1382*ebfedea0SLionel Sambuc pxor %xmm2,%xmm1 1383*ebfedea0SLionel Sambuc pshufd $19,%xmm0,%xmm7 1384*ebfedea0SLionel Sambuc movdqa %xmm1,64(%esp) 1385*ebfedea0SLionel Sambuc paddq %xmm1,%xmm1 1386*ebfedea0SLionel Sambuc movups (%ebp),%xmm0 1387*ebfedea0SLionel Sambuc pand %xmm3,%xmm7 1388*ebfedea0SLionel Sambuc movups (%esi),%xmm2 1389*ebfedea0SLionel Sambuc pxor %xmm1,%xmm7 1390*ebfedea0SLionel Sambuc movdqu 16(%esi),%xmm3 1391*ebfedea0SLionel Sambuc xorps %xmm0,%xmm2 1392*ebfedea0SLionel Sambuc movdqu 32(%esi),%xmm4 1393*ebfedea0SLionel Sambuc pxor %xmm0,%xmm3 1394*ebfedea0SLionel Sambuc movdqu 48(%esi),%xmm5 1395*ebfedea0SLionel Sambuc pxor %xmm0,%xmm4 1396*ebfedea0SLionel Sambuc movdqu 64(%esi),%xmm6 1397*ebfedea0SLionel Sambuc pxor %xmm0,%xmm5 1398*ebfedea0SLionel Sambuc movdqu 80(%esi),%xmm1 1399*ebfedea0SLionel Sambuc pxor %xmm0,%xmm6 1400*ebfedea0SLionel Sambuc leal 96(%esi),%esi 1401*ebfedea0SLionel Sambuc pxor (%esp),%xmm2 1402*ebfedea0SLionel Sambuc movdqa %xmm7,80(%esp) 1403*ebfedea0SLionel Sambuc pxor %xmm1,%xmm7 1404*ebfedea0SLionel Sambuc movups 16(%ebp),%xmm1 1405*ebfedea0SLionel Sambuc leal 32(%ebp),%edx 1406*ebfedea0SLionel Sambuc pxor 16(%esp),%xmm3 1407*ebfedea0SLionel Sambuc.byte 102,15,56,222,209 1408*ebfedea0SLionel Sambuc pxor 32(%esp),%xmm4 1409*ebfedea0SLionel Sambuc.byte 102,15,56,222,217 1410*ebfedea0SLionel Sambuc pxor 48(%esp),%xmm5 1411*ebfedea0SLionel Sambuc decl %ecx 1412*ebfedea0SLionel Sambuc.byte 102,15,56,222,225 1413*ebfedea0SLionel Sambuc pxor 64(%esp),%xmm6 1414*ebfedea0SLionel Sambuc.byte 102,15,56,222,233 1415*ebfedea0SLionel Sambuc pxor %xmm0,%xmm7 1416*ebfedea0SLionel Sambuc.byte 102,15,56,222,241 1417*ebfedea0SLionel Sambuc movups (%edx),%xmm0 1418*ebfedea0SLionel Sambuc.byte 102,15,56,222,249 1419*ebfedea0SLionel Sambuc call .L_aesni_decrypt6_enter 1420*ebfedea0SLionel Sambuc movdqa 80(%esp),%xmm1 1421*ebfedea0SLionel Sambuc pxor %xmm0,%xmm0 1422*ebfedea0SLionel Sambuc xorps (%esp),%xmm2 1423*ebfedea0SLionel Sambuc pcmpgtd %xmm1,%xmm0 1424*ebfedea0SLionel Sambuc xorps 16(%esp),%xmm3 1425*ebfedea0SLionel Sambuc movups %xmm2,(%edi) 1426*ebfedea0SLionel Sambuc xorps 32(%esp),%xmm4 1427*ebfedea0SLionel Sambuc movups %xmm3,16(%edi) 1428*ebfedea0SLionel Sambuc xorps 48(%esp),%xmm5 1429*ebfedea0SLionel Sambuc movups %xmm4,32(%edi) 1430*ebfedea0SLionel Sambuc xorps 64(%esp),%xmm6 1431*ebfedea0SLionel Sambuc movups %xmm5,48(%edi) 1432*ebfedea0SLionel Sambuc xorps %xmm1,%xmm7 1433*ebfedea0SLionel Sambuc movups %xmm6,64(%edi) 1434*ebfedea0SLionel Sambuc pshufd $19,%xmm0,%xmm2 1435*ebfedea0SLionel Sambuc movups %xmm7,80(%edi) 1436*ebfedea0SLionel Sambuc leal 96(%edi),%edi 1437*ebfedea0SLionel Sambuc movdqa 96(%esp),%xmm3 1438*ebfedea0SLionel Sambuc pxor %xmm0,%xmm0 1439*ebfedea0SLionel Sambuc paddq %xmm1,%xmm1 1440*ebfedea0SLionel Sambuc pand %xmm3,%xmm2 1441*ebfedea0SLionel Sambuc pcmpgtd %xmm1,%xmm0 1442*ebfedea0SLionel Sambuc movl %ebx,%ecx 1443*ebfedea0SLionel Sambuc pxor %xmm2,%xmm1 1444*ebfedea0SLionel Sambuc subl $96,%eax 1445*ebfedea0SLionel Sambuc jnc .L057xts_dec_loop6 1446*ebfedea0SLionel Sambuc leal 1(,%ecx,2),%ecx 1447*ebfedea0SLionel Sambuc movl %ebp,%edx 1448*ebfedea0SLionel Sambuc movl %ecx,%ebx 1449*ebfedea0SLionel Sambuc.L056xts_dec_short: 1450*ebfedea0SLionel Sambuc addl $96,%eax 1451*ebfedea0SLionel Sambuc jz .L058xts_dec_done6x 1452*ebfedea0SLionel Sambuc movdqa %xmm1,%xmm5 1453*ebfedea0SLionel Sambuc cmpl $32,%eax 1454*ebfedea0SLionel Sambuc jb .L059xts_dec_one 1455*ebfedea0SLionel Sambuc pshufd $19,%xmm0,%xmm2 1456*ebfedea0SLionel Sambuc pxor %xmm0,%xmm0 1457*ebfedea0SLionel Sambuc paddq %xmm1,%xmm1 1458*ebfedea0SLionel Sambuc pand %xmm3,%xmm2 1459*ebfedea0SLionel Sambuc pcmpgtd %xmm1,%xmm0 1460*ebfedea0SLionel Sambuc pxor %xmm2,%xmm1 1461*ebfedea0SLionel Sambuc je .L060xts_dec_two 1462*ebfedea0SLionel Sambuc pshufd $19,%xmm0,%xmm2 1463*ebfedea0SLionel Sambuc pxor %xmm0,%xmm0 1464*ebfedea0SLionel Sambuc movdqa %xmm1,%xmm6 1465*ebfedea0SLionel Sambuc paddq %xmm1,%xmm1 1466*ebfedea0SLionel Sambuc pand %xmm3,%xmm2 1467*ebfedea0SLionel Sambuc pcmpgtd %xmm1,%xmm0 1468*ebfedea0SLionel Sambuc pxor %xmm2,%xmm1 1469*ebfedea0SLionel Sambuc cmpl $64,%eax 1470*ebfedea0SLionel Sambuc jb .L061xts_dec_three 1471*ebfedea0SLionel Sambuc pshufd $19,%xmm0,%xmm2 1472*ebfedea0SLionel Sambuc pxor %xmm0,%xmm0 1473*ebfedea0SLionel Sambuc movdqa %xmm1,%xmm7 1474*ebfedea0SLionel Sambuc paddq %xmm1,%xmm1 1475*ebfedea0SLionel Sambuc pand %xmm3,%xmm2 1476*ebfedea0SLionel Sambuc pcmpgtd %xmm1,%xmm0 1477*ebfedea0SLionel Sambuc pxor %xmm2,%xmm1 1478*ebfedea0SLionel Sambuc movdqa %xmm5,(%esp) 1479*ebfedea0SLionel Sambuc movdqa %xmm6,16(%esp) 1480*ebfedea0SLionel Sambuc je .L062xts_dec_four 1481*ebfedea0SLionel Sambuc movdqa %xmm7,32(%esp) 1482*ebfedea0SLionel Sambuc pshufd $19,%xmm0,%xmm7 1483*ebfedea0SLionel Sambuc movdqa %xmm1,48(%esp) 1484*ebfedea0SLionel Sambuc paddq %xmm1,%xmm1 1485*ebfedea0SLionel Sambuc pand %xmm3,%xmm7 1486*ebfedea0SLionel Sambuc pxor %xmm1,%xmm7 1487*ebfedea0SLionel Sambuc movdqu (%esi),%xmm2 1488*ebfedea0SLionel Sambuc movdqu 16(%esi),%xmm3 1489*ebfedea0SLionel Sambuc movdqu 32(%esi),%xmm4 1490*ebfedea0SLionel Sambuc pxor (%esp),%xmm2 1491*ebfedea0SLionel Sambuc movdqu 48(%esi),%xmm5 1492*ebfedea0SLionel Sambuc pxor 16(%esp),%xmm3 1493*ebfedea0SLionel Sambuc movdqu 64(%esi),%xmm6 1494*ebfedea0SLionel Sambuc pxor 32(%esp),%xmm4 1495*ebfedea0SLionel Sambuc leal 80(%esi),%esi 1496*ebfedea0SLionel Sambuc pxor 48(%esp),%xmm5 1497*ebfedea0SLionel Sambuc movdqa %xmm7,64(%esp) 1498*ebfedea0SLionel Sambuc pxor %xmm7,%xmm6 1499*ebfedea0SLionel Sambuc call _aesni_decrypt6 1500*ebfedea0SLionel Sambuc movaps 64(%esp),%xmm1 1501*ebfedea0SLionel Sambuc xorps (%esp),%xmm2 1502*ebfedea0SLionel Sambuc xorps 16(%esp),%xmm3 1503*ebfedea0SLionel Sambuc xorps 32(%esp),%xmm4 1504*ebfedea0SLionel Sambuc movups %xmm2,(%edi) 1505*ebfedea0SLionel Sambuc xorps 48(%esp),%xmm5 1506*ebfedea0SLionel Sambuc movups %xmm3,16(%edi) 1507*ebfedea0SLionel Sambuc xorps %xmm1,%xmm6 1508*ebfedea0SLionel Sambuc movups %xmm4,32(%edi) 1509*ebfedea0SLionel Sambuc movups %xmm5,48(%edi) 1510*ebfedea0SLionel Sambuc movups %xmm6,64(%edi) 1511*ebfedea0SLionel Sambuc leal 80(%edi),%edi 1512*ebfedea0SLionel Sambuc jmp .L063xts_dec_done 1513*ebfedea0SLionel Sambuc.align 16 1514*ebfedea0SLionel Sambuc.L059xts_dec_one: 1515*ebfedea0SLionel Sambuc movups (%esi),%xmm2 1516*ebfedea0SLionel Sambuc leal 16(%esi),%esi 1517*ebfedea0SLionel Sambuc xorps %xmm5,%xmm2 1518*ebfedea0SLionel Sambuc movups (%edx),%xmm0 1519*ebfedea0SLionel Sambuc movups 16(%edx),%xmm1 1520*ebfedea0SLionel Sambuc leal 32(%edx),%edx 1521*ebfedea0SLionel Sambuc xorps %xmm0,%xmm2 1522*ebfedea0SLionel Sambuc.L064dec1_loop_12: 1523*ebfedea0SLionel Sambuc.byte 102,15,56,222,209 1524*ebfedea0SLionel Sambuc decl %ecx 1525*ebfedea0SLionel Sambuc movups (%edx),%xmm1 1526*ebfedea0SLionel Sambuc leal 16(%edx),%edx 1527*ebfedea0SLionel Sambuc jnz .L064dec1_loop_12 1528*ebfedea0SLionel Sambuc.byte 102,15,56,223,209 1529*ebfedea0SLionel Sambuc xorps %xmm5,%xmm2 1530*ebfedea0SLionel Sambuc movups %xmm2,(%edi) 1531*ebfedea0SLionel Sambuc leal 16(%edi),%edi 1532*ebfedea0SLionel Sambuc movdqa %xmm5,%xmm1 1533*ebfedea0SLionel Sambuc jmp .L063xts_dec_done 1534*ebfedea0SLionel Sambuc.align 16 1535*ebfedea0SLionel Sambuc.L060xts_dec_two: 1536*ebfedea0SLionel Sambuc movaps %xmm1,%xmm6 1537*ebfedea0SLionel Sambuc movups (%esi),%xmm2 1538*ebfedea0SLionel Sambuc movups 16(%esi),%xmm3 1539*ebfedea0SLionel Sambuc leal 32(%esi),%esi 1540*ebfedea0SLionel Sambuc xorps %xmm5,%xmm2 1541*ebfedea0SLionel Sambuc xorps %xmm6,%xmm3 1542*ebfedea0SLionel Sambuc call _aesni_decrypt3 1543*ebfedea0SLionel Sambuc xorps %xmm5,%xmm2 1544*ebfedea0SLionel Sambuc xorps %xmm6,%xmm3 1545*ebfedea0SLionel Sambuc movups %xmm2,(%edi) 1546*ebfedea0SLionel Sambuc movups %xmm3,16(%edi) 1547*ebfedea0SLionel Sambuc leal 32(%edi),%edi 1548*ebfedea0SLionel Sambuc movdqa %xmm6,%xmm1 1549*ebfedea0SLionel Sambuc jmp .L063xts_dec_done 1550*ebfedea0SLionel Sambuc.align 16 1551*ebfedea0SLionel Sambuc.L061xts_dec_three: 1552*ebfedea0SLionel Sambuc movaps %xmm1,%xmm7 1553*ebfedea0SLionel Sambuc movups (%esi),%xmm2 1554*ebfedea0SLionel Sambuc movups 16(%esi),%xmm3 1555*ebfedea0SLionel Sambuc movups 32(%esi),%xmm4 1556*ebfedea0SLionel Sambuc leal 48(%esi),%esi 1557*ebfedea0SLionel Sambuc xorps %xmm5,%xmm2 1558*ebfedea0SLionel Sambuc xorps %xmm6,%xmm3 1559*ebfedea0SLionel Sambuc xorps %xmm7,%xmm4 1560*ebfedea0SLionel Sambuc call _aesni_decrypt3 1561*ebfedea0SLionel Sambuc xorps %xmm5,%xmm2 1562*ebfedea0SLionel Sambuc xorps %xmm6,%xmm3 1563*ebfedea0SLionel Sambuc xorps %xmm7,%xmm4 1564*ebfedea0SLionel Sambuc movups %xmm2,(%edi) 1565*ebfedea0SLionel Sambuc movups %xmm3,16(%edi) 1566*ebfedea0SLionel Sambuc movups %xmm4,32(%edi) 1567*ebfedea0SLionel Sambuc leal 48(%edi),%edi 1568*ebfedea0SLionel Sambuc movdqa %xmm7,%xmm1 1569*ebfedea0SLionel Sambuc jmp .L063xts_dec_done 1570*ebfedea0SLionel Sambuc.align 16 1571*ebfedea0SLionel Sambuc.L062xts_dec_four: 1572*ebfedea0SLionel Sambuc movaps %xmm1,%xmm6 1573*ebfedea0SLionel Sambuc movups (%esi),%xmm2 1574*ebfedea0SLionel Sambuc movups 16(%esi),%xmm3 1575*ebfedea0SLionel Sambuc movups 32(%esi),%xmm4 1576*ebfedea0SLionel Sambuc xorps (%esp),%xmm2 1577*ebfedea0SLionel Sambuc movups 48(%esi),%xmm5 1578*ebfedea0SLionel Sambuc leal 64(%esi),%esi 1579*ebfedea0SLionel Sambuc xorps 16(%esp),%xmm3 1580*ebfedea0SLionel Sambuc xorps %xmm7,%xmm4 1581*ebfedea0SLionel Sambuc xorps %xmm6,%xmm5 1582*ebfedea0SLionel Sambuc call _aesni_decrypt4 1583*ebfedea0SLionel Sambuc xorps (%esp),%xmm2 1584*ebfedea0SLionel Sambuc xorps 16(%esp),%xmm3 1585*ebfedea0SLionel Sambuc xorps %xmm7,%xmm4 1586*ebfedea0SLionel Sambuc movups %xmm2,(%edi) 1587*ebfedea0SLionel Sambuc xorps %xmm6,%xmm5 1588*ebfedea0SLionel Sambuc movups %xmm3,16(%edi) 1589*ebfedea0SLionel Sambuc movups %xmm4,32(%edi) 1590*ebfedea0SLionel Sambuc movups %xmm5,48(%edi) 1591*ebfedea0SLionel Sambuc leal 64(%edi),%edi 1592*ebfedea0SLionel Sambuc movdqa %xmm6,%xmm1 1593*ebfedea0SLionel Sambuc jmp .L063xts_dec_done 1594*ebfedea0SLionel Sambuc.align 16 1595*ebfedea0SLionel Sambuc.L058xts_dec_done6x: 1596*ebfedea0SLionel Sambuc movl 112(%esp),%eax 1597*ebfedea0SLionel Sambuc andl $15,%eax 1598*ebfedea0SLionel Sambuc jz .L065xts_dec_ret 1599*ebfedea0SLionel Sambuc movl %eax,112(%esp) 1600*ebfedea0SLionel Sambuc jmp .L066xts_dec_only_one_more 1601*ebfedea0SLionel Sambuc.align 16 1602*ebfedea0SLionel Sambuc.L063xts_dec_done: 1603*ebfedea0SLionel Sambuc movl 112(%esp),%eax 1604*ebfedea0SLionel Sambuc pxor %xmm0,%xmm0 1605*ebfedea0SLionel Sambuc andl $15,%eax 1606*ebfedea0SLionel Sambuc jz .L065xts_dec_ret 1607*ebfedea0SLionel Sambuc pcmpgtd %xmm1,%xmm0 1608*ebfedea0SLionel Sambuc movl %eax,112(%esp) 1609*ebfedea0SLionel Sambuc pshufd $19,%xmm0,%xmm2 1610*ebfedea0SLionel Sambuc pxor %xmm0,%xmm0 1611*ebfedea0SLionel Sambuc movdqa 96(%esp),%xmm3 1612*ebfedea0SLionel Sambuc paddq %xmm1,%xmm1 1613*ebfedea0SLionel Sambuc pand %xmm3,%xmm2 1614*ebfedea0SLionel Sambuc pcmpgtd %xmm1,%xmm0 1615*ebfedea0SLionel Sambuc pxor %xmm2,%xmm1 1616*ebfedea0SLionel Sambuc.L066xts_dec_only_one_more: 1617*ebfedea0SLionel Sambuc pshufd $19,%xmm0,%xmm5 1618*ebfedea0SLionel Sambuc movdqa %xmm1,%xmm6 1619*ebfedea0SLionel Sambuc paddq %xmm1,%xmm1 1620*ebfedea0SLionel Sambuc pand %xmm3,%xmm5 1621*ebfedea0SLionel Sambuc pxor %xmm1,%xmm5 1622*ebfedea0SLionel Sambuc movl %ebp,%edx 1623*ebfedea0SLionel Sambuc movl %ebx,%ecx 1624*ebfedea0SLionel Sambuc movups (%esi),%xmm2 1625*ebfedea0SLionel Sambuc xorps %xmm5,%xmm2 1626*ebfedea0SLionel Sambuc movups (%edx),%xmm0 1627*ebfedea0SLionel Sambuc movups 16(%edx),%xmm1 1628*ebfedea0SLionel Sambuc leal 32(%edx),%edx 1629*ebfedea0SLionel Sambuc xorps %xmm0,%xmm2 1630*ebfedea0SLionel Sambuc.L067dec1_loop_13: 1631*ebfedea0SLionel Sambuc.byte 102,15,56,222,209 1632*ebfedea0SLionel Sambuc decl %ecx 1633*ebfedea0SLionel Sambuc movups (%edx),%xmm1 1634*ebfedea0SLionel Sambuc leal 16(%edx),%edx 1635*ebfedea0SLionel Sambuc jnz .L067dec1_loop_13 1636*ebfedea0SLionel Sambuc.byte 102,15,56,223,209 1637*ebfedea0SLionel Sambuc xorps %xmm5,%xmm2 1638*ebfedea0SLionel Sambuc movups %xmm2,(%edi) 1639*ebfedea0SLionel Sambuc.L068xts_dec_steal: 1640*ebfedea0SLionel Sambuc movzbl 16(%esi),%ecx 1641*ebfedea0SLionel Sambuc movzbl (%edi),%edx 1642*ebfedea0SLionel Sambuc leal 1(%esi),%esi 1643*ebfedea0SLionel Sambuc movb %cl,(%edi) 1644*ebfedea0SLionel Sambuc movb %dl,16(%edi) 1645*ebfedea0SLionel Sambuc leal 1(%edi),%edi 1646*ebfedea0SLionel Sambuc subl $1,%eax 1647*ebfedea0SLionel Sambuc jnz .L068xts_dec_steal 1648*ebfedea0SLionel Sambuc subl 112(%esp),%edi 1649*ebfedea0SLionel Sambuc movl %ebp,%edx 1650*ebfedea0SLionel Sambuc movl %ebx,%ecx 1651*ebfedea0SLionel Sambuc movups (%edi),%xmm2 1652*ebfedea0SLionel Sambuc xorps %xmm6,%xmm2 1653*ebfedea0SLionel Sambuc movups (%edx),%xmm0 1654*ebfedea0SLionel Sambuc movups 16(%edx),%xmm1 1655*ebfedea0SLionel Sambuc leal 32(%edx),%edx 1656*ebfedea0SLionel Sambuc xorps %xmm0,%xmm2 1657*ebfedea0SLionel Sambuc.L069dec1_loop_14: 1658*ebfedea0SLionel Sambuc.byte 102,15,56,222,209 1659*ebfedea0SLionel Sambuc decl %ecx 1660*ebfedea0SLionel Sambuc movups (%edx),%xmm1 1661*ebfedea0SLionel Sambuc leal 16(%edx),%edx 1662*ebfedea0SLionel Sambuc jnz .L069dec1_loop_14 1663*ebfedea0SLionel Sambuc.byte 102,15,56,223,209 1664*ebfedea0SLionel Sambuc xorps %xmm6,%xmm2 1665*ebfedea0SLionel Sambuc movups %xmm2,(%edi) 1666*ebfedea0SLionel Sambuc.L065xts_dec_ret: 1667*ebfedea0SLionel Sambuc movl 116(%esp),%esp 1668*ebfedea0SLionel Sambuc popl %edi 1669*ebfedea0SLionel Sambuc popl %esi 1670*ebfedea0SLionel Sambuc popl %ebx 1671*ebfedea0SLionel Sambuc popl %ebp 1672*ebfedea0SLionel Sambuc ret 1673*ebfedea0SLionel Sambuc.size aesni_xts_decrypt,.-.L_aesni_xts_decrypt_begin 1674*ebfedea0SLionel Sambuc.globl aesni_cbc_encrypt 1675*ebfedea0SLionel Sambuc.type aesni_cbc_encrypt,@function 1676*ebfedea0SLionel Sambuc.align 16 1677*ebfedea0SLionel Sambucaesni_cbc_encrypt: 1678*ebfedea0SLionel Sambuc.L_aesni_cbc_encrypt_begin: 1679*ebfedea0SLionel Sambuc pushl %ebp 1680*ebfedea0SLionel Sambuc pushl %ebx 1681*ebfedea0SLionel Sambuc pushl %esi 1682*ebfedea0SLionel Sambuc pushl %edi 1683*ebfedea0SLionel Sambuc movl 20(%esp),%esi 1684*ebfedea0SLionel Sambuc movl %esp,%ebx 1685*ebfedea0SLionel Sambuc movl 24(%esp),%edi 1686*ebfedea0SLionel Sambuc subl $24,%ebx 1687*ebfedea0SLionel Sambuc movl 28(%esp),%eax 1688*ebfedea0SLionel Sambuc andl $-16,%ebx 1689*ebfedea0SLionel Sambuc movl 32(%esp),%edx 1690*ebfedea0SLionel Sambuc movl 36(%esp),%ebp 1691*ebfedea0SLionel Sambuc testl %eax,%eax 1692*ebfedea0SLionel Sambuc jz .L070cbc_abort 1693*ebfedea0SLionel Sambuc cmpl $0,40(%esp) 1694*ebfedea0SLionel Sambuc xchgl %esp,%ebx 1695*ebfedea0SLionel Sambuc movups (%ebp),%xmm7 1696*ebfedea0SLionel Sambuc movl 240(%edx),%ecx 1697*ebfedea0SLionel Sambuc movl %edx,%ebp 1698*ebfedea0SLionel Sambuc movl %ebx,16(%esp) 1699*ebfedea0SLionel Sambuc movl %ecx,%ebx 1700*ebfedea0SLionel Sambuc je .L071cbc_decrypt 1701*ebfedea0SLionel Sambuc movaps %xmm7,%xmm2 1702*ebfedea0SLionel Sambuc cmpl $16,%eax 1703*ebfedea0SLionel Sambuc jb .L072cbc_enc_tail 1704*ebfedea0SLionel Sambuc subl $16,%eax 1705*ebfedea0SLionel Sambuc jmp .L073cbc_enc_loop 1706*ebfedea0SLionel Sambuc.align 16 1707*ebfedea0SLionel Sambuc.L073cbc_enc_loop: 1708*ebfedea0SLionel Sambuc movups (%esi),%xmm7 1709*ebfedea0SLionel Sambuc leal 16(%esi),%esi 1710*ebfedea0SLionel Sambuc movups (%edx),%xmm0 1711*ebfedea0SLionel Sambuc movups 16(%edx),%xmm1 1712*ebfedea0SLionel Sambuc xorps %xmm0,%xmm7 1713*ebfedea0SLionel Sambuc leal 32(%edx),%edx 1714*ebfedea0SLionel Sambuc xorps %xmm7,%xmm2 1715*ebfedea0SLionel Sambuc.L074enc1_loop_15: 1716*ebfedea0SLionel Sambuc.byte 102,15,56,220,209 1717*ebfedea0SLionel Sambuc decl %ecx 1718*ebfedea0SLionel Sambuc movups (%edx),%xmm1 1719*ebfedea0SLionel Sambuc leal 16(%edx),%edx 1720*ebfedea0SLionel Sambuc jnz .L074enc1_loop_15 1721*ebfedea0SLionel Sambuc.byte 102,15,56,221,209 1722*ebfedea0SLionel Sambuc movl %ebx,%ecx 1723*ebfedea0SLionel Sambuc movl %ebp,%edx 1724*ebfedea0SLionel Sambuc movups %xmm2,(%edi) 1725*ebfedea0SLionel Sambuc leal 16(%edi),%edi 1726*ebfedea0SLionel Sambuc subl $16,%eax 1727*ebfedea0SLionel Sambuc jnc .L073cbc_enc_loop 1728*ebfedea0SLionel Sambuc addl $16,%eax 1729*ebfedea0SLionel Sambuc jnz .L072cbc_enc_tail 1730*ebfedea0SLionel Sambuc movaps %xmm2,%xmm7 1731*ebfedea0SLionel Sambuc jmp .L075cbc_ret 1732*ebfedea0SLionel Sambuc.L072cbc_enc_tail: 1733*ebfedea0SLionel Sambuc movl %eax,%ecx 1734*ebfedea0SLionel Sambuc.long 2767451785 1735*ebfedea0SLionel Sambuc movl $16,%ecx 1736*ebfedea0SLionel Sambuc subl %eax,%ecx 1737*ebfedea0SLionel Sambuc xorl %eax,%eax 1738*ebfedea0SLionel Sambuc.long 2868115081 1739*ebfedea0SLionel Sambuc leal -16(%edi),%edi 1740*ebfedea0SLionel Sambuc movl %ebx,%ecx 1741*ebfedea0SLionel Sambuc movl %edi,%esi 1742*ebfedea0SLionel Sambuc movl %ebp,%edx 1743*ebfedea0SLionel Sambuc jmp .L073cbc_enc_loop 1744*ebfedea0SLionel Sambuc.align 16 1745*ebfedea0SLionel Sambuc.L071cbc_decrypt: 1746*ebfedea0SLionel Sambuc cmpl $80,%eax 1747*ebfedea0SLionel Sambuc jbe .L076cbc_dec_tail 1748*ebfedea0SLionel Sambuc movaps %xmm7,(%esp) 1749*ebfedea0SLionel Sambuc subl $80,%eax 1750*ebfedea0SLionel Sambuc jmp .L077cbc_dec_loop6_enter 1751*ebfedea0SLionel Sambuc.align 16 1752*ebfedea0SLionel Sambuc.L078cbc_dec_loop6: 1753*ebfedea0SLionel Sambuc movaps %xmm0,(%esp) 1754*ebfedea0SLionel Sambuc movups %xmm7,(%edi) 1755*ebfedea0SLionel Sambuc leal 16(%edi),%edi 1756*ebfedea0SLionel Sambuc.L077cbc_dec_loop6_enter: 1757*ebfedea0SLionel Sambuc movdqu (%esi),%xmm2 1758*ebfedea0SLionel Sambuc movdqu 16(%esi),%xmm3 1759*ebfedea0SLionel Sambuc movdqu 32(%esi),%xmm4 1760*ebfedea0SLionel Sambuc movdqu 48(%esi),%xmm5 1761*ebfedea0SLionel Sambuc movdqu 64(%esi),%xmm6 1762*ebfedea0SLionel Sambuc movdqu 80(%esi),%xmm7 1763*ebfedea0SLionel Sambuc call _aesni_decrypt6 1764*ebfedea0SLionel Sambuc movups (%esi),%xmm1 1765*ebfedea0SLionel Sambuc movups 16(%esi),%xmm0 1766*ebfedea0SLionel Sambuc xorps (%esp),%xmm2 1767*ebfedea0SLionel Sambuc xorps %xmm1,%xmm3 1768*ebfedea0SLionel Sambuc movups 32(%esi),%xmm1 1769*ebfedea0SLionel Sambuc xorps %xmm0,%xmm4 1770*ebfedea0SLionel Sambuc movups 48(%esi),%xmm0 1771*ebfedea0SLionel Sambuc xorps %xmm1,%xmm5 1772*ebfedea0SLionel Sambuc movups 64(%esi),%xmm1 1773*ebfedea0SLionel Sambuc xorps %xmm0,%xmm6 1774*ebfedea0SLionel Sambuc movups 80(%esi),%xmm0 1775*ebfedea0SLionel Sambuc xorps %xmm1,%xmm7 1776*ebfedea0SLionel Sambuc movups %xmm2,(%edi) 1777*ebfedea0SLionel Sambuc movups %xmm3,16(%edi) 1778*ebfedea0SLionel Sambuc leal 96(%esi),%esi 1779*ebfedea0SLionel Sambuc movups %xmm4,32(%edi) 1780*ebfedea0SLionel Sambuc movl %ebx,%ecx 1781*ebfedea0SLionel Sambuc movups %xmm5,48(%edi) 1782*ebfedea0SLionel Sambuc movl %ebp,%edx 1783*ebfedea0SLionel Sambuc movups %xmm6,64(%edi) 1784*ebfedea0SLionel Sambuc leal 80(%edi),%edi 1785*ebfedea0SLionel Sambuc subl $96,%eax 1786*ebfedea0SLionel Sambuc ja .L078cbc_dec_loop6 1787*ebfedea0SLionel Sambuc movaps %xmm7,%xmm2 1788*ebfedea0SLionel Sambuc movaps %xmm0,%xmm7 1789*ebfedea0SLionel Sambuc addl $80,%eax 1790*ebfedea0SLionel Sambuc jle .L079cbc_dec_tail_collected 1791*ebfedea0SLionel Sambuc movups %xmm2,(%edi) 1792*ebfedea0SLionel Sambuc leal 16(%edi),%edi 1793*ebfedea0SLionel Sambuc.L076cbc_dec_tail: 1794*ebfedea0SLionel Sambuc movups (%esi),%xmm2 1795*ebfedea0SLionel Sambuc movaps %xmm2,%xmm6 1796*ebfedea0SLionel Sambuc cmpl $16,%eax 1797*ebfedea0SLionel Sambuc jbe .L080cbc_dec_one 1798*ebfedea0SLionel Sambuc movups 16(%esi),%xmm3 1799*ebfedea0SLionel Sambuc movaps %xmm3,%xmm5 1800*ebfedea0SLionel Sambuc cmpl $32,%eax 1801*ebfedea0SLionel Sambuc jbe .L081cbc_dec_two 1802*ebfedea0SLionel Sambuc movups 32(%esi),%xmm4 1803*ebfedea0SLionel Sambuc cmpl $48,%eax 1804*ebfedea0SLionel Sambuc jbe .L082cbc_dec_three 1805*ebfedea0SLionel Sambuc movups 48(%esi),%xmm5 1806*ebfedea0SLionel Sambuc cmpl $64,%eax 1807*ebfedea0SLionel Sambuc jbe .L083cbc_dec_four 1808*ebfedea0SLionel Sambuc movups 64(%esi),%xmm6 1809*ebfedea0SLionel Sambuc movaps %xmm7,(%esp) 1810*ebfedea0SLionel Sambuc movups (%esi),%xmm2 1811*ebfedea0SLionel Sambuc xorps %xmm7,%xmm7 1812*ebfedea0SLionel Sambuc call _aesni_decrypt6 1813*ebfedea0SLionel Sambuc movups (%esi),%xmm1 1814*ebfedea0SLionel Sambuc movups 16(%esi),%xmm0 1815*ebfedea0SLionel Sambuc xorps (%esp),%xmm2 1816*ebfedea0SLionel Sambuc xorps %xmm1,%xmm3 1817*ebfedea0SLionel Sambuc movups 32(%esi),%xmm1 1818*ebfedea0SLionel Sambuc xorps %xmm0,%xmm4 1819*ebfedea0SLionel Sambuc movups 48(%esi),%xmm0 1820*ebfedea0SLionel Sambuc xorps %xmm1,%xmm5 1821*ebfedea0SLionel Sambuc movups 64(%esi),%xmm7 1822*ebfedea0SLionel Sambuc xorps %xmm0,%xmm6 1823*ebfedea0SLionel Sambuc movups %xmm2,(%edi) 1824*ebfedea0SLionel Sambuc movups %xmm3,16(%edi) 1825*ebfedea0SLionel Sambuc movups %xmm4,32(%edi) 1826*ebfedea0SLionel Sambuc movups %xmm5,48(%edi) 1827*ebfedea0SLionel Sambuc leal 64(%edi),%edi 1828*ebfedea0SLionel Sambuc movaps %xmm6,%xmm2 1829*ebfedea0SLionel Sambuc subl $80,%eax 1830*ebfedea0SLionel Sambuc jmp .L079cbc_dec_tail_collected 1831*ebfedea0SLionel Sambuc.align 16 1832*ebfedea0SLionel Sambuc.L080cbc_dec_one: 1833*ebfedea0SLionel Sambuc movups (%edx),%xmm0 1834*ebfedea0SLionel Sambuc movups 16(%edx),%xmm1 1835*ebfedea0SLionel Sambuc leal 32(%edx),%edx 1836*ebfedea0SLionel Sambuc xorps %xmm0,%xmm2 1837*ebfedea0SLionel Sambuc.L084dec1_loop_16: 1838*ebfedea0SLionel Sambuc.byte 102,15,56,222,209 1839*ebfedea0SLionel Sambuc decl %ecx 1840*ebfedea0SLionel Sambuc movups (%edx),%xmm1 1841*ebfedea0SLionel Sambuc leal 16(%edx),%edx 1842*ebfedea0SLionel Sambuc jnz .L084dec1_loop_16 1843*ebfedea0SLionel Sambuc.byte 102,15,56,223,209 1844*ebfedea0SLionel Sambuc xorps %xmm7,%xmm2 1845*ebfedea0SLionel Sambuc movaps %xmm6,%xmm7 1846*ebfedea0SLionel Sambuc subl $16,%eax 1847*ebfedea0SLionel Sambuc jmp .L079cbc_dec_tail_collected 1848*ebfedea0SLionel Sambuc.align 16 1849*ebfedea0SLionel Sambuc.L081cbc_dec_two: 1850*ebfedea0SLionel Sambuc xorps %xmm4,%xmm4 1851*ebfedea0SLionel Sambuc call _aesni_decrypt3 1852*ebfedea0SLionel Sambuc xorps %xmm7,%xmm2 1853*ebfedea0SLionel Sambuc xorps %xmm6,%xmm3 1854*ebfedea0SLionel Sambuc movups %xmm2,(%edi) 1855*ebfedea0SLionel Sambuc movaps %xmm3,%xmm2 1856*ebfedea0SLionel Sambuc leal 16(%edi),%edi 1857*ebfedea0SLionel Sambuc movaps %xmm5,%xmm7 1858*ebfedea0SLionel Sambuc subl $32,%eax 1859*ebfedea0SLionel Sambuc jmp .L079cbc_dec_tail_collected 1860*ebfedea0SLionel Sambuc.align 16 1861*ebfedea0SLionel Sambuc.L082cbc_dec_three: 1862*ebfedea0SLionel Sambuc call _aesni_decrypt3 1863*ebfedea0SLionel Sambuc xorps %xmm7,%xmm2 1864*ebfedea0SLionel Sambuc xorps %xmm6,%xmm3 1865*ebfedea0SLionel Sambuc xorps %xmm5,%xmm4 1866*ebfedea0SLionel Sambuc movups %xmm2,(%edi) 1867*ebfedea0SLionel Sambuc movaps %xmm4,%xmm2 1868*ebfedea0SLionel Sambuc movups %xmm3,16(%edi) 1869*ebfedea0SLionel Sambuc leal 32(%edi),%edi 1870*ebfedea0SLionel Sambuc movups 32(%esi),%xmm7 1871*ebfedea0SLionel Sambuc subl $48,%eax 1872*ebfedea0SLionel Sambuc jmp .L079cbc_dec_tail_collected 1873*ebfedea0SLionel Sambuc.align 16 1874*ebfedea0SLionel Sambuc.L083cbc_dec_four: 1875*ebfedea0SLionel Sambuc call _aesni_decrypt4 1876*ebfedea0SLionel Sambuc movups 16(%esi),%xmm1 1877*ebfedea0SLionel Sambuc movups 32(%esi),%xmm0 1878*ebfedea0SLionel Sambuc xorps %xmm7,%xmm2 1879*ebfedea0SLionel Sambuc movups 48(%esi),%xmm7 1880*ebfedea0SLionel Sambuc xorps %xmm6,%xmm3 1881*ebfedea0SLionel Sambuc movups %xmm2,(%edi) 1882*ebfedea0SLionel Sambuc xorps %xmm1,%xmm4 1883*ebfedea0SLionel Sambuc movups %xmm3,16(%edi) 1884*ebfedea0SLionel Sambuc xorps %xmm0,%xmm5 1885*ebfedea0SLionel Sambuc movups %xmm4,32(%edi) 1886*ebfedea0SLionel Sambuc leal 48(%edi),%edi 1887*ebfedea0SLionel Sambuc movaps %xmm5,%xmm2 1888*ebfedea0SLionel Sambuc subl $64,%eax 1889*ebfedea0SLionel Sambuc.L079cbc_dec_tail_collected: 1890*ebfedea0SLionel Sambuc andl $15,%eax 1891*ebfedea0SLionel Sambuc jnz .L085cbc_dec_tail_partial 1892*ebfedea0SLionel Sambuc movups %xmm2,(%edi) 1893*ebfedea0SLionel Sambuc jmp .L075cbc_ret 1894*ebfedea0SLionel Sambuc.align 16 1895*ebfedea0SLionel Sambuc.L085cbc_dec_tail_partial: 1896*ebfedea0SLionel Sambuc movaps %xmm2,(%esp) 1897*ebfedea0SLionel Sambuc movl $16,%ecx 1898*ebfedea0SLionel Sambuc movl %esp,%esi 1899*ebfedea0SLionel Sambuc subl %eax,%ecx 1900*ebfedea0SLionel Sambuc.long 2767451785 1901*ebfedea0SLionel Sambuc.L075cbc_ret: 1902*ebfedea0SLionel Sambuc movl 16(%esp),%esp 1903*ebfedea0SLionel Sambuc movl 36(%esp),%ebp 1904*ebfedea0SLionel Sambuc movups %xmm7,(%ebp) 1905*ebfedea0SLionel Sambuc.L070cbc_abort: 1906*ebfedea0SLionel Sambuc popl %edi 1907*ebfedea0SLionel Sambuc popl %esi 1908*ebfedea0SLionel Sambuc popl %ebx 1909*ebfedea0SLionel Sambuc popl %ebp 1910*ebfedea0SLionel Sambuc ret 1911*ebfedea0SLionel Sambuc.size aesni_cbc_encrypt,.-.L_aesni_cbc_encrypt_begin 1912*ebfedea0SLionel Sambuc.type _aesni_set_encrypt_key,@function 1913*ebfedea0SLionel Sambuc.align 16 1914*ebfedea0SLionel Sambuc_aesni_set_encrypt_key: 1915*ebfedea0SLionel Sambuc testl %eax,%eax 1916*ebfedea0SLionel Sambuc jz .L086bad_pointer 1917*ebfedea0SLionel Sambuc testl %edx,%edx 1918*ebfedea0SLionel Sambuc jz .L086bad_pointer 1919*ebfedea0SLionel Sambuc movups (%eax),%xmm0 1920*ebfedea0SLionel Sambuc xorps %xmm4,%xmm4 1921*ebfedea0SLionel Sambuc leal 16(%edx),%edx 1922*ebfedea0SLionel Sambuc cmpl $256,%ecx 1923*ebfedea0SLionel Sambuc je .L08714rounds 1924*ebfedea0SLionel Sambuc cmpl $192,%ecx 1925*ebfedea0SLionel Sambuc je .L08812rounds 1926*ebfedea0SLionel Sambuc cmpl $128,%ecx 1927*ebfedea0SLionel Sambuc jne .L089bad_keybits 1928*ebfedea0SLionel Sambuc.align 16 1929*ebfedea0SLionel Sambuc.L09010rounds: 1930*ebfedea0SLionel Sambuc movl $9,%ecx 1931*ebfedea0SLionel Sambuc movups %xmm0,-16(%edx) 1932*ebfedea0SLionel Sambuc.byte 102,15,58,223,200,1 1933*ebfedea0SLionel Sambuc call .L091key_128_cold 1934*ebfedea0SLionel Sambuc.byte 102,15,58,223,200,2 1935*ebfedea0SLionel Sambuc call .L092key_128 1936*ebfedea0SLionel Sambuc.byte 102,15,58,223,200,4 1937*ebfedea0SLionel Sambuc call .L092key_128 1938*ebfedea0SLionel Sambuc.byte 102,15,58,223,200,8 1939*ebfedea0SLionel Sambuc call .L092key_128 1940*ebfedea0SLionel Sambuc.byte 102,15,58,223,200,16 1941*ebfedea0SLionel Sambuc call .L092key_128 1942*ebfedea0SLionel Sambuc.byte 102,15,58,223,200,32 1943*ebfedea0SLionel Sambuc call .L092key_128 1944*ebfedea0SLionel Sambuc.byte 102,15,58,223,200,64 1945*ebfedea0SLionel Sambuc call .L092key_128 1946*ebfedea0SLionel Sambuc.byte 102,15,58,223,200,128 1947*ebfedea0SLionel Sambuc call .L092key_128 1948*ebfedea0SLionel Sambuc.byte 102,15,58,223,200,27 1949*ebfedea0SLionel Sambuc call .L092key_128 1950*ebfedea0SLionel Sambuc.byte 102,15,58,223,200,54 1951*ebfedea0SLionel Sambuc call .L092key_128 1952*ebfedea0SLionel Sambuc movups %xmm0,(%edx) 1953*ebfedea0SLionel Sambuc movl %ecx,80(%edx) 1954*ebfedea0SLionel Sambuc xorl %eax,%eax 1955*ebfedea0SLionel Sambuc ret 1956*ebfedea0SLionel Sambuc.align 16 1957*ebfedea0SLionel Sambuc.L092key_128: 1958*ebfedea0SLionel Sambuc movups %xmm0,(%edx) 1959*ebfedea0SLionel Sambuc leal 16(%edx),%edx 1960*ebfedea0SLionel Sambuc.L091key_128_cold: 1961*ebfedea0SLionel Sambuc shufps $16,%xmm0,%xmm4 1962*ebfedea0SLionel Sambuc xorps %xmm4,%xmm0 1963*ebfedea0SLionel Sambuc shufps $140,%xmm0,%xmm4 1964*ebfedea0SLionel Sambuc xorps %xmm4,%xmm0 1965*ebfedea0SLionel Sambuc shufps $255,%xmm1,%xmm1 1966*ebfedea0SLionel Sambuc xorps %xmm1,%xmm0 1967*ebfedea0SLionel Sambuc ret 1968*ebfedea0SLionel Sambuc.align 16 1969*ebfedea0SLionel Sambuc.L08812rounds: 1970*ebfedea0SLionel Sambuc movq 16(%eax),%xmm2 1971*ebfedea0SLionel Sambuc movl $11,%ecx 1972*ebfedea0SLionel Sambuc movups %xmm0,-16(%edx) 1973*ebfedea0SLionel Sambuc.byte 102,15,58,223,202,1 1974*ebfedea0SLionel Sambuc call .L093key_192a_cold 1975*ebfedea0SLionel Sambuc.byte 102,15,58,223,202,2 1976*ebfedea0SLionel Sambuc call .L094key_192b 1977*ebfedea0SLionel Sambuc.byte 102,15,58,223,202,4 1978*ebfedea0SLionel Sambuc call .L095key_192a 1979*ebfedea0SLionel Sambuc.byte 102,15,58,223,202,8 1980*ebfedea0SLionel Sambuc call .L094key_192b 1981*ebfedea0SLionel Sambuc.byte 102,15,58,223,202,16 1982*ebfedea0SLionel Sambuc call .L095key_192a 1983*ebfedea0SLionel Sambuc.byte 102,15,58,223,202,32 1984*ebfedea0SLionel Sambuc call .L094key_192b 1985*ebfedea0SLionel Sambuc.byte 102,15,58,223,202,64 1986*ebfedea0SLionel Sambuc call .L095key_192a 1987*ebfedea0SLionel Sambuc.byte 102,15,58,223,202,128 1988*ebfedea0SLionel Sambuc call .L094key_192b 1989*ebfedea0SLionel Sambuc movups %xmm0,(%edx) 1990*ebfedea0SLionel Sambuc movl %ecx,48(%edx) 1991*ebfedea0SLionel Sambuc xorl %eax,%eax 1992*ebfedea0SLionel Sambuc ret 1993*ebfedea0SLionel Sambuc.align 16 1994*ebfedea0SLionel Sambuc.L095key_192a: 1995*ebfedea0SLionel Sambuc movups %xmm0,(%edx) 1996*ebfedea0SLionel Sambuc leal 16(%edx),%edx 1997*ebfedea0SLionel Sambuc.align 16 1998*ebfedea0SLionel Sambuc.L093key_192a_cold: 1999*ebfedea0SLionel Sambuc movaps %xmm2,%xmm5 2000*ebfedea0SLionel Sambuc.L096key_192b_warm: 2001*ebfedea0SLionel Sambuc shufps $16,%xmm0,%xmm4 2002*ebfedea0SLionel Sambuc movdqa %xmm2,%xmm3 2003*ebfedea0SLionel Sambuc xorps %xmm4,%xmm0 2004*ebfedea0SLionel Sambuc shufps $140,%xmm0,%xmm4 2005*ebfedea0SLionel Sambuc pslldq $4,%xmm3 2006*ebfedea0SLionel Sambuc xorps %xmm4,%xmm0 2007*ebfedea0SLionel Sambuc pshufd $85,%xmm1,%xmm1 2008*ebfedea0SLionel Sambuc pxor %xmm3,%xmm2 2009*ebfedea0SLionel Sambuc pxor %xmm1,%xmm0 2010*ebfedea0SLionel Sambuc pshufd $255,%xmm0,%xmm3 2011*ebfedea0SLionel Sambuc pxor %xmm3,%xmm2 2012*ebfedea0SLionel Sambuc ret 2013*ebfedea0SLionel Sambuc.align 16 2014*ebfedea0SLionel Sambuc.L094key_192b: 2015*ebfedea0SLionel Sambuc movaps %xmm0,%xmm3 2016*ebfedea0SLionel Sambuc shufps $68,%xmm0,%xmm5 2017*ebfedea0SLionel Sambuc movups %xmm5,(%edx) 2018*ebfedea0SLionel Sambuc shufps $78,%xmm2,%xmm3 2019*ebfedea0SLionel Sambuc movups %xmm3,16(%edx) 2020*ebfedea0SLionel Sambuc leal 32(%edx),%edx 2021*ebfedea0SLionel Sambuc jmp .L096key_192b_warm 2022*ebfedea0SLionel Sambuc.align 16 2023*ebfedea0SLionel Sambuc.L08714rounds: 2024*ebfedea0SLionel Sambuc movups 16(%eax),%xmm2 2025*ebfedea0SLionel Sambuc movl $13,%ecx 2026*ebfedea0SLionel Sambuc leal 16(%edx),%edx 2027*ebfedea0SLionel Sambuc movups %xmm0,-32(%edx) 2028*ebfedea0SLionel Sambuc movups %xmm2,-16(%edx) 2029*ebfedea0SLionel Sambuc.byte 102,15,58,223,202,1 2030*ebfedea0SLionel Sambuc call .L097key_256a_cold 2031*ebfedea0SLionel Sambuc.byte 102,15,58,223,200,1 2032*ebfedea0SLionel Sambuc call .L098key_256b 2033*ebfedea0SLionel Sambuc.byte 102,15,58,223,202,2 2034*ebfedea0SLionel Sambuc call .L099key_256a 2035*ebfedea0SLionel Sambuc.byte 102,15,58,223,200,2 2036*ebfedea0SLionel Sambuc call .L098key_256b 2037*ebfedea0SLionel Sambuc.byte 102,15,58,223,202,4 2038*ebfedea0SLionel Sambuc call .L099key_256a 2039*ebfedea0SLionel Sambuc.byte 102,15,58,223,200,4 2040*ebfedea0SLionel Sambuc call .L098key_256b 2041*ebfedea0SLionel Sambuc.byte 102,15,58,223,202,8 2042*ebfedea0SLionel Sambuc call .L099key_256a 2043*ebfedea0SLionel Sambuc.byte 102,15,58,223,200,8 2044*ebfedea0SLionel Sambuc call .L098key_256b 2045*ebfedea0SLionel Sambuc.byte 102,15,58,223,202,16 2046*ebfedea0SLionel Sambuc call .L099key_256a 2047*ebfedea0SLionel Sambuc.byte 102,15,58,223,200,16 2048*ebfedea0SLionel Sambuc call .L098key_256b 2049*ebfedea0SLionel Sambuc.byte 102,15,58,223,202,32 2050*ebfedea0SLionel Sambuc call .L099key_256a 2051*ebfedea0SLionel Sambuc.byte 102,15,58,223,200,32 2052*ebfedea0SLionel Sambuc call .L098key_256b 2053*ebfedea0SLionel Sambuc.byte 102,15,58,223,202,64 2054*ebfedea0SLionel Sambuc call .L099key_256a 2055*ebfedea0SLionel Sambuc movups %xmm0,(%edx) 2056*ebfedea0SLionel Sambuc movl %ecx,16(%edx) 2057*ebfedea0SLionel Sambuc xorl %eax,%eax 2058*ebfedea0SLionel Sambuc ret 2059*ebfedea0SLionel Sambuc.align 16 2060*ebfedea0SLionel Sambuc.L099key_256a: 2061*ebfedea0SLionel Sambuc movups %xmm2,(%edx) 2062*ebfedea0SLionel Sambuc leal 16(%edx),%edx 2063*ebfedea0SLionel Sambuc.L097key_256a_cold: 2064*ebfedea0SLionel Sambuc shufps $16,%xmm0,%xmm4 2065*ebfedea0SLionel Sambuc xorps %xmm4,%xmm0 2066*ebfedea0SLionel Sambuc shufps $140,%xmm0,%xmm4 2067*ebfedea0SLionel Sambuc xorps %xmm4,%xmm0 2068*ebfedea0SLionel Sambuc shufps $255,%xmm1,%xmm1 2069*ebfedea0SLionel Sambuc xorps %xmm1,%xmm0 2070*ebfedea0SLionel Sambuc ret 2071*ebfedea0SLionel Sambuc.align 16 2072*ebfedea0SLionel Sambuc.L098key_256b: 2073*ebfedea0SLionel Sambuc movups %xmm0,(%edx) 2074*ebfedea0SLionel Sambuc leal 16(%edx),%edx 2075*ebfedea0SLionel Sambuc shufps $16,%xmm2,%xmm4 2076*ebfedea0SLionel Sambuc xorps %xmm4,%xmm2 2077*ebfedea0SLionel Sambuc shufps $140,%xmm2,%xmm4 2078*ebfedea0SLionel Sambuc xorps %xmm4,%xmm2 2079*ebfedea0SLionel Sambuc shufps $170,%xmm1,%xmm1 2080*ebfedea0SLionel Sambuc xorps %xmm1,%xmm2 2081*ebfedea0SLionel Sambuc ret 2082*ebfedea0SLionel Sambuc.align 4 2083*ebfedea0SLionel Sambuc.L086bad_pointer: 2084*ebfedea0SLionel Sambuc movl $-1,%eax 2085*ebfedea0SLionel Sambuc ret 2086*ebfedea0SLionel Sambuc.align 4 2087*ebfedea0SLionel Sambuc.L089bad_keybits: 2088*ebfedea0SLionel Sambuc movl $-2,%eax 2089*ebfedea0SLionel Sambuc ret 2090*ebfedea0SLionel Sambuc.size _aesni_set_encrypt_key,.-_aesni_set_encrypt_key 2091*ebfedea0SLionel Sambuc.globl aesni_set_encrypt_key 2092*ebfedea0SLionel Sambuc.type aesni_set_encrypt_key,@function 2093*ebfedea0SLionel Sambuc.align 16 2094*ebfedea0SLionel Sambucaesni_set_encrypt_key: 2095*ebfedea0SLionel Sambuc.L_aesni_set_encrypt_key_begin: 2096*ebfedea0SLionel Sambuc movl 4(%esp),%eax 2097*ebfedea0SLionel Sambuc movl 8(%esp),%ecx 2098*ebfedea0SLionel Sambuc movl 12(%esp),%edx 2099*ebfedea0SLionel Sambuc call _aesni_set_encrypt_key 2100*ebfedea0SLionel Sambuc ret 2101*ebfedea0SLionel Sambuc.size aesni_set_encrypt_key,.-.L_aesni_set_encrypt_key_begin 2102*ebfedea0SLionel Sambuc.globl aesni_set_decrypt_key 2103*ebfedea0SLionel Sambuc.type aesni_set_decrypt_key,@function 2104*ebfedea0SLionel Sambuc.align 16 2105*ebfedea0SLionel Sambucaesni_set_decrypt_key: 2106*ebfedea0SLionel Sambuc.L_aesni_set_decrypt_key_begin: 2107*ebfedea0SLionel Sambuc movl 4(%esp),%eax 2108*ebfedea0SLionel Sambuc movl 8(%esp),%ecx 2109*ebfedea0SLionel Sambuc movl 12(%esp),%edx 2110*ebfedea0SLionel Sambuc call _aesni_set_encrypt_key 2111*ebfedea0SLionel Sambuc movl 12(%esp),%edx 2112*ebfedea0SLionel Sambuc shll $4,%ecx 2113*ebfedea0SLionel Sambuc testl %eax,%eax 2114*ebfedea0SLionel Sambuc jnz .L100dec_key_ret 2115*ebfedea0SLionel Sambuc leal 16(%edx,%ecx,1),%eax 2116*ebfedea0SLionel Sambuc movups (%edx),%xmm0 2117*ebfedea0SLionel Sambuc movups (%eax),%xmm1 2118*ebfedea0SLionel Sambuc movups %xmm0,(%eax) 2119*ebfedea0SLionel Sambuc movups %xmm1,(%edx) 2120*ebfedea0SLionel Sambuc leal 16(%edx),%edx 2121*ebfedea0SLionel Sambuc leal -16(%eax),%eax 2122*ebfedea0SLionel Sambuc.L101dec_key_inverse: 2123*ebfedea0SLionel Sambuc movups (%edx),%xmm0 2124*ebfedea0SLionel Sambuc movups (%eax),%xmm1 2125*ebfedea0SLionel Sambuc.byte 102,15,56,219,192 2126*ebfedea0SLionel Sambuc.byte 102,15,56,219,201 2127*ebfedea0SLionel Sambuc leal 16(%edx),%edx 2128*ebfedea0SLionel Sambuc leal -16(%eax),%eax 2129*ebfedea0SLionel Sambuc movups %xmm0,16(%eax) 2130*ebfedea0SLionel Sambuc movups %xmm1,-16(%edx) 2131*ebfedea0SLionel Sambuc cmpl %edx,%eax 2132*ebfedea0SLionel Sambuc ja .L101dec_key_inverse 2133*ebfedea0SLionel Sambuc movups (%edx),%xmm0 2134*ebfedea0SLionel Sambuc.byte 102,15,56,219,192 2135*ebfedea0SLionel Sambuc movups %xmm0,(%edx) 2136*ebfedea0SLionel Sambuc xorl %eax,%eax 2137*ebfedea0SLionel Sambuc.L100dec_key_ret: 2138*ebfedea0SLionel Sambuc ret 2139*ebfedea0SLionel Sambuc.size aesni_set_decrypt_key,.-.L_aesni_set_decrypt_key_begin 2140*ebfedea0SLionel Sambuc.byte 65,69,83,32,102,111,114,32,73,110,116,101,108,32,65,69 2141*ebfedea0SLionel Sambuc.byte 83,45,78,73,44,32,67,82,89,80,84,79,71,65,77,83 2142*ebfedea0SLionel Sambuc.byte 32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115 2143*ebfedea0SLionel Sambuc.byte 115,108,46,111,114,103,62,0 2144