1238405Sjkim # $FreeBSD$ 2238405Sjkim.text 3238405Sjkim 4238405Sjkim 5238405Sjkim 6238405Sjkim 7238405Sjkim.type _bsaes_encrypt8,@function 8238405Sjkim.align 64 9238405Sjkim_bsaes_encrypt8: 10238405Sjkim leaq .LBS0(%rip),%r11 11238405Sjkim 12238405Sjkim movdqa (%rax),%xmm8 13238405Sjkim leaq 16(%rax),%rax 14238405Sjkim movdqa 80(%r11),%xmm7 15238405Sjkim pxor %xmm8,%xmm15 16238405Sjkim pxor %xmm8,%xmm0 17238405Sjkim.byte 102,68,15,56,0,255 18238405Sjkim pxor %xmm8,%xmm1 19238405Sjkim.byte 102,15,56,0,199 20238405Sjkim pxor %xmm8,%xmm2 21238405Sjkim.byte 102,15,56,0,207 22238405Sjkim pxor %xmm8,%xmm3 23238405Sjkim.byte 102,15,56,0,215 24238405Sjkim pxor %xmm8,%xmm4 25238405Sjkim.byte 102,15,56,0,223 26238405Sjkim pxor %xmm8,%xmm5 27238405Sjkim.byte 102,15,56,0,231 28238405Sjkim pxor %xmm8,%xmm6 29238405Sjkim.byte 102,15,56,0,239 30238405Sjkim.byte 102,15,56,0,247 31238405Sjkim_bsaes_encrypt8_bitslice: 32238405Sjkim movdqa 0(%r11),%xmm7 33238405Sjkim movdqa 16(%r11),%xmm8 34238405Sjkim movdqa %xmm5,%xmm9 35238405Sjkim psrlq $1,%xmm5 36238405Sjkim movdqa %xmm3,%xmm10 37238405Sjkim psrlq $1,%xmm3 38238405Sjkim pxor %xmm6,%xmm5 39238405Sjkim pxor %xmm4,%xmm3 40238405Sjkim pand %xmm7,%xmm5 41238405Sjkim pand %xmm7,%xmm3 42238405Sjkim pxor %xmm5,%xmm6 43238405Sjkim psllq $1,%xmm5 44238405Sjkim pxor %xmm3,%xmm4 45238405Sjkim psllq $1,%xmm3 46238405Sjkim pxor %xmm9,%xmm5 47238405Sjkim pxor %xmm10,%xmm3 48238405Sjkim movdqa %xmm1,%xmm9 49238405Sjkim psrlq $1,%xmm1 50238405Sjkim movdqa %xmm15,%xmm10 51238405Sjkim psrlq $1,%xmm15 52238405Sjkim pxor %xmm2,%xmm1 53238405Sjkim pxor %xmm0,%xmm15 54238405Sjkim pand %xmm7,%xmm1 55238405Sjkim pand %xmm7,%xmm15 56238405Sjkim pxor %xmm1,%xmm2 57238405Sjkim psllq $1,%xmm1 58238405Sjkim pxor %xmm15,%xmm0 59238405Sjkim psllq $1,%xmm15 60238405Sjkim pxor %xmm9,%xmm1 61238405Sjkim pxor %xmm10,%xmm15 62238405Sjkim movdqa 32(%r11),%xmm7 63238405Sjkim movdqa %xmm4,%xmm9 64238405Sjkim psrlq $2,%xmm4 65238405Sjkim movdqa %xmm3,%xmm10 66238405Sjkim psrlq $2,%xmm3 67238405Sjkim pxor %xmm6,%xmm4 68238405Sjkim pxor %xmm5,%xmm3 69238405Sjkim pand %xmm8,%xmm4 70238405Sjkim pand %xmm8,%xmm3 71238405Sjkim pxor %xmm4,%xmm6 72238405Sjkim psllq $2,%xmm4 73238405Sjkim pxor %xmm3,%xmm5 74238405Sjkim psllq $2,%xmm3 75238405Sjkim pxor %xmm9,%xmm4 76238405Sjkim pxor %xmm10,%xmm3 77238405Sjkim movdqa %xmm0,%xmm9 78238405Sjkim psrlq $2,%xmm0 79238405Sjkim movdqa %xmm15,%xmm10 80238405Sjkim psrlq $2,%xmm15 81238405Sjkim pxor %xmm2,%xmm0 82238405Sjkim pxor %xmm1,%xmm15 83238405Sjkim pand %xmm8,%xmm0 84238405Sjkim pand %xmm8,%xmm15 85238405Sjkim pxor %xmm0,%xmm2 86238405Sjkim psllq $2,%xmm0 87238405Sjkim pxor %xmm15,%xmm1 88238405Sjkim psllq $2,%xmm15 89238405Sjkim pxor %xmm9,%xmm0 90238405Sjkim pxor %xmm10,%xmm15 91238405Sjkim movdqa %xmm2,%xmm9 92238405Sjkim psrlq $4,%xmm2 93238405Sjkim movdqa %xmm1,%xmm10 94238405Sjkim psrlq $4,%xmm1 95238405Sjkim pxor %xmm6,%xmm2 96238405Sjkim pxor %xmm5,%xmm1 97238405Sjkim pand %xmm7,%xmm2 98238405Sjkim pand %xmm7,%xmm1 99238405Sjkim pxor %xmm2,%xmm6 100238405Sjkim psllq $4,%xmm2 101238405Sjkim pxor %xmm1,%xmm5 102238405Sjkim psllq $4,%xmm1 103238405Sjkim pxor %xmm9,%xmm2 104238405Sjkim pxor %xmm10,%xmm1 105238405Sjkim movdqa %xmm0,%xmm9 106238405Sjkim psrlq $4,%xmm0 107238405Sjkim movdqa %xmm15,%xmm10 108238405Sjkim psrlq $4,%xmm15 109238405Sjkim pxor %xmm4,%xmm0 110238405Sjkim pxor %xmm3,%xmm15 111238405Sjkim pand %xmm7,%xmm0 112238405Sjkim pand %xmm7,%xmm15 113238405Sjkim pxor %xmm0,%xmm4 114238405Sjkim psllq $4,%xmm0 115238405Sjkim pxor %xmm15,%xmm3 116238405Sjkim psllq $4,%xmm15 117238405Sjkim pxor %xmm9,%xmm0 118238405Sjkim pxor %xmm10,%xmm15 119238405Sjkim decl %r10d 120238405Sjkim jmp .Lenc_sbox 121238405Sjkim.align 16 122238405Sjkim.Lenc_loop: 123238405Sjkim pxor 0(%rax),%xmm15 124238405Sjkim pxor 16(%rax),%xmm0 125238405Sjkim.byte 102,68,15,56,0,255 126238405Sjkim pxor 32(%rax),%xmm1 127238405Sjkim.byte 102,15,56,0,199 128238405Sjkim pxor 48(%rax),%xmm2 129238405Sjkim.byte 102,15,56,0,207 130238405Sjkim pxor 64(%rax),%xmm3 131238405Sjkim.byte 102,15,56,0,215 132238405Sjkim pxor 80(%rax),%xmm4 133238405Sjkim.byte 102,15,56,0,223 134238405Sjkim pxor 96(%rax),%xmm5 135238405Sjkim.byte 102,15,56,0,231 136238405Sjkim pxor 112(%rax),%xmm6 137238405Sjkim.byte 102,15,56,0,239 138238405Sjkim leaq 128(%rax),%rax 139238405Sjkim.byte 102,15,56,0,247 140238405Sjkim.Lenc_sbox: 141238405Sjkim pxor %xmm5,%xmm4 142238405Sjkim pxor %xmm0,%xmm1 143238405Sjkim pxor %xmm15,%xmm2 144238405Sjkim pxor %xmm1,%xmm5 145238405Sjkim pxor %xmm15,%xmm4 146238405Sjkim 147238405Sjkim pxor %xmm2,%xmm5 148238405Sjkim pxor %xmm6,%xmm2 149238405Sjkim pxor %xmm4,%xmm6 150238405Sjkim pxor %xmm3,%xmm2 151238405Sjkim pxor %xmm4,%xmm3 152238405Sjkim pxor %xmm0,%xmm2 153238405Sjkim 154238405Sjkim pxor %xmm6,%xmm1 155238405Sjkim pxor %xmm4,%xmm0 156238405Sjkim movdqa %xmm6,%xmm10 157238405Sjkim movdqa %xmm0,%xmm9 158238405Sjkim movdqa %xmm4,%xmm8 159238405Sjkim movdqa %xmm1,%xmm12 160238405Sjkim movdqa %xmm5,%xmm11 161238405Sjkim 162238405Sjkim pxor %xmm3,%xmm10 163238405Sjkim pxor %xmm1,%xmm9 164238405Sjkim pxor %xmm2,%xmm8 165238405Sjkim movdqa %xmm10,%xmm13 166238405Sjkim pxor %xmm3,%xmm12 167238405Sjkim movdqa %xmm9,%xmm7 168238405Sjkim pxor %xmm15,%xmm11 169238405Sjkim movdqa %xmm10,%xmm14 170238405Sjkim 171238405Sjkim por %xmm8,%xmm9 172238405Sjkim por %xmm11,%xmm10 173238405Sjkim pxor %xmm7,%xmm14 174238405Sjkim pand %xmm11,%xmm13 175238405Sjkim pxor %xmm8,%xmm11 176238405Sjkim pand %xmm8,%xmm7 177238405Sjkim pand %xmm11,%xmm14 178238405Sjkim movdqa %xmm2,%xmm11 179238405Sjkim pxor %xmm15,%xmm11 180238405Sjkim pand %xmm11,%xmm12 181238405Sjkim pxor %xmm12,%xmm10 182238405Sjkim pxor %xmm12,%xmm9 183238405Sjkim movdqa %xmm6,%xmm12 184238405Sjkim movdqa %xmm4,%xmm11 185238405Sjkim pxor %xmm0,%xmm12 186238405Sjkim pxor %xmm5,%xmm11 187238405Sjkim movdqa %xmm12,%xmm8 188238405Sjkim pand %xmm11,%xmm12 189238405Sjkim por %xmm11,%xmm8 190238405Sjkim pxor %xmm12,%xmm7 191238405Sjkim pxor %xmm14,%xmm10 192238405Sjkim pxor %xmm13,%xmm9 193238405Sjkim pxor %xmm14,%xmm8 194238405Sjkim movdqa %xmm1,%xmm11 195238405Sjkim pxor %xmm13,%xmm7 196238405Sjkim movdqa %xmm3,%xmm12 197238405Sjkim pxor %xmm13,%xmm8 198238405Sjkim movdqa %xmm0,%xmm13 199238405Sjkim pand %xmm2,%xmm11 200238405Sjkim movdqa %xmm6,%xmm14 201238405Sjkim pand %xmm15,%xmm12 202238405Sjkim pand %xmm4,%xmm13 203238405Sjkim por %xmm5,%xmm14 204238405Sjkim pxor %xmm11,%xmm10 205238405Sjkim pxor %xmm12,%xmm9 206238405Sjkim pxor %xmm13,%xmm8 207238405Sjkim pxor %xmm14,%xmm7 208238405Sjkim 209238405Sjkim 210238405Sjkim 211238405Sjkim 212238405Sjkim 213238405Sjkim movdqa %xmm10,%xmm11 214238405Sjkim pand %xmm8,%xmm10 215238405Sjkim pxor %xmm9,%xmm11 216238405Sjkim 217238405Sjkim movdqa %xmm7,%xmm13 218238405Sjkim movdqa %xmm11,%xmm14 219238405Sjkim pxor %xmm10,%xmm13 220238405Sjkim pand %xmm13,%xmm14 221238405Sjkim 222238405Sjkim movdqa %xmm8,%xmm12 223238405Sjkim pxor %xmm9,%xmm14 224238405Sjkim pxor %xmm7,%xmm12 225238405Sjkim 226238405Sjkim pxor %xmm9,%xmm10 227238405Sjkim 228238405Sjkim pand %xmm10,%xmm12 229238405Sjkim 230238405Sjkim movdqa %xmm13,%xmm9 231238405Sjkim pxor %xmm7,%xmm12 232238405Sjkim 233238405Sjkim pxor %xmm12,%xmm9 234238405Sjkim pxor %xmm12,%xmm8 235238405Sjkim 236238405Sjkim pand %xmm7,%xmm9 237238405Sjkim 238238405Sjkim pxor %xmm9,%xmm13 239238405Sjkim pxor %xmm9,%xmm8 240238405Sjkim 241238405Sjkim pand %xmm14,%xmm13 242238405Sjkim 243238405Sjkim pxor %xmm11,%xmm13 244238405Sjkim movdqa %xmm5,%xmm11 245238405Sjkim movdqa %xmm4,%xmm7 246238405Sjkim movdqa %xmm14,%xmm9 247238405Sjkim pxor %xmm13,%xmm9 248238405Sjkim pand %xmm5,%xmm9 249238405Sjkim pxor %xmm4,%xmm5 250238405Sjkim pand %xmm14,%xmm4 251238405Sjkim pand %xmm13,%xmm5 252238405Sjkim pxor %xmm4,%xmm5 253238405Sjkim pxor %xmm9,%xmm4 254238405Sjkim pxor %xmm15,%xmm11 255238405Sjkim pxor %xmm2,%xmm7 256238405Sjkim pxor %xmm12,%xmm14 257238405Sjkim pxor %xmm8,%xmm13 258238405Sjkim movdqa %xmm14,%xmm10 259238405Sjkim movdqa %xmm12,%xmm9 260238405Sjkim pxor %xmm13,%xmm10 261238405Sjkim pxor %xmm8,%xmm9 262238405Sjkim pand %xmm11,%xmm10 263238405Sjkim pand %xmm15,%xmm9 264238405Sjkim pxor %xmm7,%xmm11 265238405Sjkim pxor %xmm2,%xmm15 266238405Sjkim pand %xmm14,%xmm7 267238405Sjkim pand %xmm12,%xmm2 268238405Sjkim pand %xmm13,%xmm11 269238405Sjkim pand %xmm8,%xmm15 270238405Sjkim pxor %xmm11,%xmm7 271238405Sjkim pxor %xmm2,%xmm15 272238405Sjkim pxor %xmm10,%xmm11 273238405Sjkim pxor %xmm9,%xmm2 274238405Sjkim pxor %xmm11,%xmm5 275238405Sjkim pxor %xmm11,%xmm15 276238405Sjkim pxor %xmm7,%xmm4 277238405Sjkim pxor %xmm7,%xmm2 278238405Sjkim 279238405Sjkim movdqa %xmm6,%xmm11 280238405Sjkim movdqa %xmm0,%xmm7 281238405Sjkim pxor %xmm3,%xmm11 282238405Sjkim pxor %xmm1,%xmm7 283238405Sjkim movdqa %xmm14,%xmm10 284238405Sjkim movdqa %xmm12,%xmm9 285238405Sjkim pxor %xmm13,%xmm10 286238405Sjkim pxor %xmm8,%xmm9 287238405Sjkim pand %xmm11,%xmm10 288238405Sjkim pand %xmm3,%xmm9 289238405Sjkim pxor %xmm7,%xmm11 290238405Sjkim pxor %xmm1,%xmm3 291238405Sjkim pand %xmm14,%xmm7 292238405Sjkim pand %xmm12,%xmm1 293238405Sjkim pand %xmm13,%xmm11 294238405Sjkim pand %xmm8,%xmm3 295238405Sjkim pxor %xmm11,%xmm7 296238405Sjkim pxor %xmm1,%xmm3 297238405Sjkim pxor %xmm10,%xmm11 298238405Sjkim pxor %xmm9,%xmm1 299238405Sjkim pxor %xmm12,%xmm14 300238405Sjkim pxor %xmm8,%xmm13 301238405Sjkim movdqa %xmm14,%xmm10 302238405Sjkim pxor %xmm13,%xmm10 303238405Sjkim pand %xmm6,%xmm10 304238405Sjkim pxor %xmm0,%xmm6 305238405Sjkim pand %xmm14,%xmm0 306238405Sjkim pand %xmm13,%xmm6 307238405Sjkim pxor %xmm0,%xmm6 308238405Sjkim pxor %xmm10,%xmm0 309238405Sjkim pxor %xmm11,%xmm6 310238405Sjkim pxor %xmm11,%xmm3 311238405Sjkim pxor %xmm7,%xmm0 312238405Sjkim pxor %xmm7,%xmm1 313238405Sjkim pxor %xmm15,%xmm6 314238405Sjkim pxor %xmm5,%xmm0 315238405Sjkim pxor %xmm6,%xmm3 316238405Sjkim pxor %xmm15,%xmm5 317238405Sjkim pxor %xmm0,%xmm15 318238405Sjkim 319238405Sjkim pxor %xmm4,%xmm0 320238405Sjkim pxor %xmm1,%xmm4 321238405Sjkim pxor %xmm2,%xmm1 322238405Sjkim pxor %xmm4,%xmm2 323238405Sjkim pxor %xmm4,%xmm3 324238405Sjkim 325238405Sjkim pxor %xmm2,%xmm5 326238405Sjkim decl %r10d 327238405Sjkim jl .Lenc_done 328238405Sjkim pshufd $147,%xmm15,%xmm7 329238405Sjkim pshufd $147,%xmm0,%xmm8 330238405Sjkim pxor %xmm7,%xmm15 331238405Sjkim pshufd $147,%xmm3,%xmm9 332238405Sjkim pxor %xmm8,%xmm0 333238405Sjkim pshufd $147,%xmm5,%xmm10 334238405Sjkim pxor %xmm9,%xmm3 335238405Sjkim pshufd $147,%xmm2,%xmm11 336238405Sjkim pxor %xmm10,%xmm5 337238405Sjkim pshufd $147,%xmm6,%xmm12 338238405Sjkim pxor %xmm11,%xmm2 339238405Sjkim pshufd $147,%xmm1,%xmm13 340238405Sjkim pxor %xmm12,%xmm6 341238405Sjkim pshufd $147,%xmm4,%xmm14 342238405Sjkim pxor %xmm13,%xmm1 343238405Sjkim pxor %xmm14,%xmm4 344238405Sjkim 345238405Sjkim pxor %xmm15,%xmm8 346238405Sjkim pxor %xmm4,%xmm7 347238405Sjkim pxor %xmm4,%xmm8 348238405Sjkim pshufd $78,%xmm15,%xmm15 349238405Sjkim pxor %xmm0,%xmm9 350238405Sjkim pshufd $78,%xmm0,%xmm0 351238405Sjkim pxor %xmm2,%xmm12 352238405Sjkim pxor %xmm7,%xmm15 353238405Sjkim pxor %xmm6,%xmm13 354238405Sjkim pxor %xmm8,%xmm0 355238405Sjkim pxor %xmm5,%xmm11 356238405Sjkim pshufd $78,%xmm2,%xmm7 357238405Sjkim pxor %xmm1,%xmm14 358238405Sjkim pshufd $78,%xmm6,%xmm8 359238405Sjkim pxor %xmm3,%xmm10 360238405Sjkim pshufd $78,%xmm5,%xmm2 361238405Sjkim pxor %xmm4,%xmm10 362238405Sjkim pshufd $78,%xmm4,%xmm6 363238405Sjkim pxor %xmm4,%xmm11 364238405Sjkim pshufd $78,%xmm1,%xmm5 365238405Sjkim pxor %xmm11,%xmm7 366238405Sjkim pshufd $78,%xmm3,%xmm1 367238405Sjkim pxor %xmm12,%xmm8 368238405Sjkim pxor %xmm10,%xmm2 369238405Sjkim pxor %xmm14,%xmm6 370238405Sjkim pxor %xmm13,%xmm5 371238405Sjkim movdqa %xmm7,%xmm3 372238405Sjkim pxor %xmm9,%xmm1 373238405Sjkim movdqa %xmm8,%xmm4 374238405Sjkim movdqa 48(%r11),%xmm7 375238405Sjkim jnz .Lenc_loop 376238405Sjkim movdqa 64(%r11),%xmm7 377238405Sjkim jmp .Lenc_loop 378238405Sjkim.align 16 379238405Sjkim.Lenc_done: 380238405Sjkim movdqa 0(%r11),%xmm7 381238405Sjkim movdqa 16(%r11),%xmm8 382238405Sjkim movdqa %xmm1,%xmm9 383238405Sjkim psrlq $1,%xmm1 384238405Sjkim movdqa %xmm2,%xmm10 385238405Sjkim psrlq $1,%xmm2 386238405Sjkim pxor %xmm4,%xmm1 387238405Sjkim pxor %xmm6,%xmm2 388238405Sjkim pand %xmm7,%xmm1 389238405Sjkim pand %xmm7,%xmm2 390238405Sjkim pxor %xmm1,%xmm4 391238405Sjkim psllq $1,%xmm1 392238405Sjkim pxor %xmm2,%xmm6 393238405Sjkim psllq $1,%xmm2 394238405Sjkim pxor %xmm9,%xmm1 395238405Sjkim pxor %xmm10,%xmm2 396238405Sjkim movdqa %xmm3,%xmm9 397238405Sjkim psrlq $1,%xmm3 398238405Sjkim movdqa %xmm15,%xmm10 399238405Sjkim psrlq $1,%xmm15 400238405Sjkim pxor %xmm5,%xmm3 401238405Sjkim pxor %xmm0,%xmm15 402238405Sjkim pand %xmm7,%xmm3 403238405Sjkim pand %xmm7,%xmm15 404238405Sjkim pxor %xmm3,%xmm5 405238405Sjkim psllq $1,%xmm3 406238405Sjkim pxor %xmm15,%xmm0 407238405Sjkim psllq $1,%xmm15 408238405Sjkim pxor %xmm9,%xmm3 409238405Sjkim pxor %xmm10,%xmm15 410238405Sjkim movdqa 32(%r11),%xmm7 411238405Sjkim movdqa %xmm6,%xmm9 412238405Sjkim psrlq $2,%xmm6 413238405Sjkim movdqa %xmm2,%xmm10 414238405Sjkim psrlq $2,%xmm2 415238405Sjkim pxor %xmm4,%xmm6 416238405Sjkim pxor %xmm1,%xmm2 417238405Sjkim pand %xmm8,%xmm6 418238405Sjkim pand %xmm8,%xmm2 419238405Sjkim pxor %xmm6,%xmm4 420238405Sjkim psllq $2,%xmm6 421238405Sjkim pxor %xmm2,%xmm1 422238405Sjkim psllq $2,%xmm2 423238405Sjkim pxor %xmm9,%xmm6 424238405Sjkim pxor %xmm10,%xmm2 425238405Sjkim movdqa %xmm0,%xmm9 426238405Sjkim psrlq $2,%xmm0 427238405Sjkim movdqa %xmm15,%xmm10 428238405Sjkim psrlq $2,%xmm15 429238405Sjkim pxor %xmm5,%xmm0 430238405Sjkim pxor %xmm3,%xmm15 431238405Sjkim pand %xmm8,%xmm0 432238405Sjkim pand %xmm8,%xmm15 433238405Sjkim pxor %xmm0,%xmm5 434238405Sjkim psllq $2,%xmm0 435238405Sjkim pxor %xmm15,%xmm3 436238405Sjkim psllq $2,%xmm15 437238405Sjkim pxor %xmm9,%xmm0 438238405Sjkim pxor %xmm10,%xmm15 439238405Sjkim movdqa %xmm5,%xmm9 440238405Sjkim psrlq $4,%xmm5 441238405Sjkim movdqa %xmm3,%xmm10 442238405Sjkim psrlq $4,%xmm3 443238405Sjkim pxor %xmm4,%xmm5 444238405Sjkim pxor %xmm1,%xmm3 445238405Sjkim pand %xmm7,%xmm5 446238405Sjkim pand %xmm7,%xmm3 447238405Sjkim pxor %xmm5,%xmm4 448238405Sjkim psllq $4,%xmm5 449238405Sjkim pxor %xmm3,%xmm1 450238405Sjkim psllq $4,%xmm3 451238405Sjkim pxor %xmm9,%xmm5 452238405Sjkim pxor %xmm10,%xmm3 453238405Sjkim movdqa %xmm0,%xmm9 454238405Sjkim psrlq $4,%xmm0 455238405Sjkim movdqa %xmm15,%xmm10 456238405Sjkim psrlq $4,%xmm15 457238405Sjkim pxor %xmm6,%xmm0 458238405Sjkim pxor %xmm2,%xmm15 459238405Sjkim pand %xmm7,%xmm0 460238405Sjkim pand %xmm7,%xmm15 461238405Sjkim pxor %xmm0,%xmm6 462238405Sjkim psllq $4,%xmm0 463238405Sjkim pxor %xmm15,%xmm2 464238405Sjkim psllq $4,%xmm15 465238405Sjkim pxor %xmm9,%xmm0 466238405Sjkim pxor %xmm10,%xmm15 467238405Sjkim movdqa (%rax),%xmm7 468238405Sjkim pxor %xmm7,%xmm3 469238405Sjkim pxor %xmm7,%xmm5 470238405Sjkim pxor %xmm7,%xmm2 471238405Sjkim pxor %xmm7,%xmm6 472238405Sjkim pxor %xmm7,%xmm1 473238405Sjkim pxor %xmm7,%xmm4 474238405Sjkim pxor %xmm7,%xmm15 475238405Sjkim pxor %xmm7,%xmm0 476238405Sjkim .byte 0xf3,0xc3 477238405Sjkim.size _bsaes_encrypt8,.-_bsaes_encrypt8 478238405Sjkim 479238405Sjkim.type _bsaes_decrypt8,@function 480238405Sjkim.align 64 481238405Sjkim_bsaes_decrypt8: 482238405Sjkim leaq .LBS0(%rip),%r11 483238405Sjkim 484238405Sjkim movdqa (%rax),%xmm8 485238405Sjkim leaq 16(%rax),%rax 486238405Sjkim movdqa -48(%r11),%xmm7 487238405Sjkim pxor %xmm8,%xmm15 488238405Sjkim pxor %xmm8,%xmm0 489238405Sjkim.byte 102,68,15,56,0,255 490238405Sjkim pxor %xmm8,%xmm1 491238405Sjkim.byte 102,15,56,0,199 492238405Sjkim pxor %xmm8,%xmm2 493238405Sjkim.byte 102,15,56,0,207 494238405Sjkim pxor %xmm8,%xmm3 495238405Sjkim.byte 102,15,56,0,215 496238405Sjkim pxor %xmm8,%xmm4 497238405Sjkim.byte 102,15,56,0,223 498238405Sjkim pxor %xmm8,%xmm5 499238405Sjkim.byte 102,15,56,0,231 500238405Sjkim pxor %xmm8,%xmm6 501238405Sjkim.byte 102,15,56,0,239 502238405Sjkim.byte 102,15,56,0,247 503238405Sjkim movdqa 0(%r11),%xmm7 504238405Sjkim movdqa 16(%r11),%xmm8 505238405Sjkim movdqa %xmm5,%xmm9 506238405Sjkim psrlq $1,%xmm5 507238405Sjkim movdqa %xmm3,%xmm10 508238405Sjkim psrlq $1,%xmm3 509238405Sjkim pxor %xmm6,%xmm5 510238405Sjkim pxor %xmm4,%xmm3 511238405Sjkim pand %xmm7,%xmm5 512238405Sjkim pand %xmm7,%xmm3 513238405Sjkim pxor %xmm5,%xmm6 514238405Sjkim psllq $1,%xmm5 515238405Sjkim pxor %xmm3,%xmm4 516238405Sjkim psllq $1,%xmm3 517238405Sjkim pxor %xmm9,%xmm5 518238405Sjkim pxor %xmm10,%xmm3 519238405Sjkim movdqa %xmm1,%xmm9 520238405Sjkim psrlq $1,%xmm1 521238405Sjkim movdqa %xmm15,%xmm10 522238405Sjkim psrlq $1,%xmm15 523238405Sjkim pxor %xmm2,%xmm1 524238405Sjkim pxor %xmm0,%xmm15 525238405Sjkim pand %xmm7,%xmm1 526238405Sjkim pand %xmm7,%xmm15 527238405Sjkim pxor %xmm1,%xmm2 528238405Sjkim psllq $1,%xmm1 529238405Sjkim pxor %xmm15,%xmm0 530238405Sjkim psllq $1,%xmm15 531238405Sjkim pxor %xmm9,%xmm1 532238405Sjkim pxor %xmm10,%xmm15 533238405Sjkim movdqa 32(%r11),%xmm7 534238405Sjkim movdqa %xmm4,%xmm9 535238405Sjkim psrlq $2,%xmm4 536238405Sjkim movdqa %xmm3,%xmm10 537238405Sjkim psrlq $2,%xmm3 538238405Sjkim pxor %xmm6,%xmm4 539238405Sjkim pxor %xmm5,%xmm3 540238405Sjkim pand %xmm8,%xmm4 541238405Sjkim pand %xmm8,%xmm3 542238405Sjkim pxor %xmm4,%xmm6 543238405Sjkim psllq $2,%xmm4 544238405Sjkim pxor %xmm3,%xmm5 545238405Sjkim psllq $2,%xmm3 546238405Sjkim pxor %xmm9,%xmm4 547238405Sjkim pxor %xmm10,%xmm3 548238405Sjkim movdqa %xmm0,%xmm9 549238405Sjkim psrlq $2,%xmm0 550238405Sjkim movdqa %xmm15,%xmm10 551238405Sjkim psrlq $2,%xmm15 552238405Sjkim pxor %xmm2,%xmm0 553238405Sjkim pxor %xmm1,%xmm15 554238405Sjkim pand %xmm8,%xmm0 555238405Sjkim pand %xmm8,%xmm15 556238405Sjkim pxor %xmm0,%xmm2 557238405Sjkim psllq $2,%xmm0 558238405Sjkim pxor %xmm15,%xmm1 559238405Sjkim psllq $2,%xmm15 560238405Sjkim pxor %xmm9,%xmm0 561238405Sjkim pxor %xmm10,%xmm15 562238405Sjkim movdqa %xmm2,%xmm9 563238405Sjkim psrlq $4,%xmm2 564238405Sjkim movdqa %xmm1,%xmm10 565238405Sjkim psrlq $4,%xmm1 566238405Sjkim pxor %xmm6,%xmm2 567238405Sjkim pxor %xmm5,%xmm1 568238405Sjkim pand %xmm7,%xmm2 569238405Sjkim pand %xmm7,%xmm1 570238405Sjkim pxor %xmm2,%xmm6 571238405Sjkim psllq $4,%xmm2 572238405Sjkim pxor %xmm1,%xmm5 573238405Sjkim psllq $4,%xmm1 574238405Sjkim pxor %xmm9,%xmm2 575238405Sjkim pxor %xmm10,%xmm1 576238405Sjkim movdqa %xmm0,%xmm9 577238405Sjkim psrlq $4,%xmm0 578238405Sjkim movdqa %xmm15,%xmm10 579238405Sjkim psrlq $4,%xmm15 580238405Sjkim pxor %xmm4,%xmm0 581238405Sjkim pxor %xmm3,%xmm15 582238405Sjkim pand %xmm7,%xmm0 583238405Sjkim pand %xmm7,%xmm15 584238405Sjkim pxor %xmm0,%xmm4 585238405Sjkim psllq $4,%xmm0 586238405Sjkim pxor %xmm15,%xmm3 587238405Sjkim psllq $4,%xmm15 588238405Sjkim pxor %xmm9,%xmm0 589238405Sjkim pxor %xmm10,%xmm15 590238405Sjkim decl %r10d 591238405Sjkim jmp .Ldec_sbox 592238405Sjkim.align 16 593238405Sjkim.Ldec_loop: 594238405Sjkim pxor 0(%rax),%xmm15 595238405Sjkim pxor 16(%rax),%xmm0 596238405Sjkim.byte 102,68,15,56,0,255 597238405Sjkim pxor 32(%rax),%xmm1 598238405Sjkim.byte 102,15,56,0,199 599238405Sjkim pxor 48(%rax),%xmm2 600238405Sjkim.byte 102,15,56,0,207 601238405Sjkim pxor 64(%rax),%xmm3 602238405Sjkim.byte 102,15,56,0,215 603238405Sjkim pxor 80(%rax),%xmm4 604238405Sjkim.byte 102,15,56,0,223 605238405Sjkim pxor 96(%rax),%xmm5 606238405Sjkim.byte 102,15,56,0,231 607238405Sjkim pxor 112(%rax),%xmm6 608238405Sjkim.byte 102,15,56,0,239 609238405Sjkim leaq 128(%rax),%rax 610238405Sjkim.byte 102,15,56,0,247 611238405Sjkim.Ldec_sbox: 612238405Sjkim pxor %xmm3,%xmm2 613238405Sjkim 614238405Sjkim pxor %xmm6,%xmm3 615238405Sjkim pxor %xmm6,%xmm1 616238405Sjkim pxor %xmm3,%xmm5 617238405Sjkim pxor %xmm5,%xmm6 618238405Sjkim pxor %xmm6,%xmm0 619238405Sjkim 620238405Sjkim pxor %xmm0,%xmm15 621238405Sjkim pxor %xmm4,%xmm1 622238405Sjkim pxor %xmm15,%xmm2 623238405Sjkim pxor %xmm15,%xmm4 624238405Sjkim pxor %xmm2,%xmm0 625238405Sjkim movdqa %xmm2,%xmm10 626238405Sjkim movdqa %xmm6,%xmm9 627238405Sjkim movdqa %xmm0,%xmm8 628238405Sjkim movdqa %xmm3,%xmm12 629238405Sjkim movdqa %xmm4,%xmm11 630238405Sjkim 631238405Sjkim pxor %xmm15,%xmm10 632238405Sjkim pxor %xmm3,%xmm9 633238405Sjkim pxor %xmm5,%xmm8 634238405Sjkim movdqa %xmm10,%xmm13 635238405Sjkim pxor %xmm15,%xmm12 636238405Sjkim movdqa %xmm9,%xmm7 637238405Sjkim pxor %xmm1,%xmm11 638238405Sjkim movdqa %xmm10,%xmm14 639238405Sjkim 640238405Sjkim por %xmm8,%xmm9 641238405Sjkim por %xmm11,%xmm10 642238405Sjkim pxor %xmm7,%xmm14 643238405Sjkim pand %xmm11,%xmm13 644238405Sjkim pxor %xmm8,%xmm11 645238405Sjkim pand %xmm8,%xmm7 646238405Sjkim pand %xmm11,%xmm14 647238405Sjkim movdqa %xmm5,%xmm11 648238405Sjkim pxor %xmm1,%xmm11 649238405Sjkim pand %xmm11,%xmm12 650238405Sjkim pxor %xmm12,%xmm10 651238405Sjkim pxor %xmm12,%xmm9 652238405Sjkim movdqa %xmm2,%xmm12 653238405Sjkim movdqa %xmm0,%xmm11 654238405Sjkim pxor %xmm6,%xmm12 655238405Sjkim pxor %xmm4,%xmm11 656238405Sjkim movdqa %xmm12,%xmm8 657238405Sjkim pand %xmm11,%xmm12 658238405Sjkim por %xmm11,%xmm8 659238405Sjkim pxor %xmm12,%xmm7 660238405Sjkim pxor %xmm14,%xmm10 661238405Sjkim pxor %xmm13,%xmm9 662238405Sjkim pxor %xmm14,%xmm8 663238405Sjkim movdqa %xmm3,%xmm11 664238405Sjkim pxor %xmm13,%xmm7 665238405Sjkim movdqa %xmm15,%xmm12 666238405Sjkim pxor %xmm13,%xmm8 667238405Sjkim movdqa %xmm6,%xmm13 668238405Sjkim pand %xmm5,%xmm11 669238405Sjkim movdqa %xmm2,%xmm14 670238405Sjkim pand %xmm1,%xmm12 671238405Sjkim pand %xmm0,%xmm13 672238405Sjkim por %xmm4,%xmm14 673238405Sjkim pxor %xmm11,%xmm10 674238405Sjkim pxor %xmm12,%xmm9 675238405Sjkim pxor %xmm13,%xmm8 676238405Sjkim pxor %xmm14,%xmm7 677238405Sjkim 678238405Sjkim 679238405Sjkim 680238405Sjkim 681238405Sjkim 682238405Sjkim movdqa %xmm10,%xmm11 683238405Sjkim pand %xmm8,%xmm10 684238405Sjkim pxor %xmm9,%xmm11 685238405Sjkim 686238405Sjkim movdqa %xmm7,%xmm13 687238405Sjkim movdqa %xmm11,%xmm14 688238405Sjkim pxor %xmm10,%xmm13 689238405Sjkim pand %xmm13,%xmm14 690238405Sjkim 691238405Sjkim movdqa %xmm8,%xmm12 692238405Sjkim pxor %xmm9,%xmm14 693238405Sjkim pxor %xmm7,%xmm12 694238405Sjkim 695238405Sjkim pxor %xmm9,%xmm10 696238405Sjkim 697238405Sjkim pand %xmm10,%xmm12 698238405Sjkim 699238405Sjkim movdqa %xmm13,%xmm9 700238405Sjkim pxor %xmm7,%xmm12 701238405Sjkim 702238405Sjkim pxor %xmm12,%xmm9 703238405Sjkim pxor %xmm12,%xmm8 704238405Sjkim 705238405Sjkim pand %xmm7,%xmm9 706238405Sjkim 707238405Sjkim pxor %xmm9,%xmm13 708238405Sjkim pxor %xmm9,%xmm8 709238405Sjkim 710238405Sjkim pand %xmm14,%xmm13 711238405Sjkim 712238405Sjkim pxor %xmm11,%xmm13 713238405Sjkim movdqa %xmm4,%xmm11 714238405Sjkim movdqa %xmm0,%xmm7 715238405Sjkim movdqa %xmm14,%xmm9 716238405Sjkim pxor %xmm13,%xmm9 717238405Sjkim pand %xmm4,%xmm9 718238405Sjkim pxor %xmm0,%xmm4 719238405Sjkim pand %xmm14,%xmm0 720238405Sjkim pand %xmm13,%xmm4 721238405Sjkim pxor %xmm0,%xmm4 722238405Sjkim pxor %xmm9,%xmm0 723238405Sjkim pxor %xmm1,%xmm11 724238405Sjkim pxor %xmm5,%xmm7 725238405Sjkim pxor %xmm12,%xmm14 726238405Sjkim pxor %xmm8,%xmm13 727238405Sjkim movdqa %xmm14,%xmm10 728238405Sjkim movdqa %xmm12,%xmm9 729238405Sjkim pxor %xmm13,%xmm10 730238405Sjkim pxor %xmm8,%xmm9 731238405Sjkim pand %xmm11,%xmm10 732238405Sjkim pand %xmm1,%xmm9 733238405Sjkim pxor %xmm7,%xmm11 734238405Sjkim pxor %xmm5,%xmm1 735238405Sjkim pand %xmm14,%xmm7 736238405Sjkim pand %xmm12,%xmm5 737238405Sjkim pand %xmm13,%xmm11 738238405Sjkim pand %xmm8,%xmm1 739238405Sjkim pxor %xmm11,%xmm7 740238405Sjkim pxor %xmm5,%xmm1 741238405Sjkim pxor %xmm10,%xmm11 742238405Sjkim pxor %xmm9,%xmm5 743238405Sjkim pxor %xmm11,%xmm4 744238405Sjkim pxor %xmm11,%xmm1 745238405Sjkim pxor %xmm7,%xmm0 746238405Sjkim pxor %xmm7,%xmm5 747238405Sjkim 748238405Sjkim movdqa %xmm2,%xmm11 749238405Sjkim movdqa %xmm6,%xmm7 750238405Sjkim pxor %xmm15,%xmm11 751238405Sjkim pxor %xmm3,%xmm7 752238405Sjkim movdqa %xmm14,%xmm10 753238405Sjkim movdqa %xmm12,%xmm9 754238405Sjkim pxor %xmm13,%xmm10 755238405Sjkim pxor %xmm8,%xmm9 756238405Sjkim pand %xmm11,%xmm10 757238405Sjkim pand %xmm15,%xmm9 758238405Sjkim pxor %xmm7,%xmm11 759238405Sjkim pxor %xmm3,%xmm15 760238405Sjkim pand %xmm14,%xmm7 761238405Sjkim pand %xmm12,%xmm3 762238405Sjkim pand %xmm13,%xmm11 763238405Sjkim pand %xmm8,%xmm15 764238405Sjkim pxor %xmm11,%xmm7 765238405Sjkim pxor %xmm3,%xmm15 766238405Sjkim pxor %xmm10,%xmm11 767238405Sjkim pxor %xmm9,%xmm3 768238405Sjkim pxor %xmm12,%xmm14 769238405Sjkim pxor %xmm8,%xmm13 770238405Sjkim movdqa %xmm14,%xmm10 771238405Sjkim pxor %xmm13,%xmm10 772238405Sjkim pand %xmm2,%xmm10 773238405Sjkim pxor %xmm6,%xmm2 774238405Sjkim pand %xmm14,%xmm6 775238405Sjkim pand %xmm13,%xmm2 776238405Sjkim pxor %xmm6,%xmm2 777238405Sjkim pxor %xmm10,%xmm6 778238405Sjkim pxor %xmm11,%xmm2 779238405Sjkim pxor %xmm11,%xmm15 780238405Sjkim pxor %xmm7,%xmm6 781238405Sjkim pxor %xmm7,%xmm3 782238405Sjkim pxor %xmm6,%xmm0 783238405Sjkim pxor %xmm4,%xmm5 784238405Sjkim 785238405Sjkim pxor %xmm0,%xmm3 786238405Sjkim pxor %xmm6,%xmm1 787238405Sjkim pxor %xmm6,%xmm4 788238405Sjkim pxor %xmm1,%xmm3 789238405Sjkim pxor %xmm15,%xmm6 790238405Sjkim pxor %xmm4,%xmm3 791238405Sjkim pxor %xmm5,%xmm2 792238405Sjkim pxor %xmm0,%xmm5 793238405Sjkim pxor %xmm3,%xmm2 794238405Sjkim 795238405Sjkim pxor %xmm15,%xmm3 796238405Sjkim pxor %xmm2,%xmm6 797238405Sjkim decl %r10d 798238405Sjkim jl .Ldec_done 799238405Sjkim 800264331Sjkim pshufd $78,%xmm15,%xmm7 801264331Sjkim pshufd $78,%xmm2,%xmm13 802264331Sjkim pxor %xmm15,%xmm7 803264331Sjkim pshufd $78,%xmm4,%xmm14 804264331Sjkim pxor %xmm2,%xmm13 805264331Sjkim pshufd $78,%xmm0,%xmm8 806264331Sjkim pxor %xmm4,%xmm14 807264331Sjkim pshufd $78,%xmm5,%xmm9 808264331Sjkim pxor %xmm0,%xmm8 809264331Sjkim pshufd $78,%xmm3,%xmm10 810264331Sjkim pxor %xmm5,%xmm9 811264331Sjkim pxor %xmm13,%xmm15 812264331Sjkim pxor %xmm13,%xmm0 813264331Sjkim pshufd $78,%xmm1,%xmm11 814264331Sjkim pxor %xmm3,%xmm10 815238405Sjkim pxor %xmm7,%xmm5 816264331Sjkim pxor %xmm8,%xmm3 817264331Sjkim pshufd $78,%xmm6,%xmm12 818264331Sjkim pxor %xmm1,%xmm11 819238405Sjkim pxor %xmm14,%xmm0 820264331Sjkim pxor %xmm9,%xmm1 821264331Sjkim pxor %xmm6,%xmm12 822238405Sjkim 823264331Sjkim pxor %xmm14,%xmm5 824264331Sjkim pxor %xmm13,%xmm3 825264331Sjkim pxor %xmm13,%xmm1 826264331Sjkim pxor %xmm10,%xmm6 827238405Sjkim pxor %xmm11,%xmm2 828264331Sjkim pxor %xmm14,%xmm1 829264331Sjkim pxor %xmm14,%xmm6 830264331Sjkim pxor %xmm12,%xmm4 831264331Sjkim pshufd $147,%xmm15,%xmm7 832264331Sjkim pshufd $147,%xmm0,%xmm8 833238405Sjkim pxor %xmm7,%xmm15 834264331Sjkim pshufd $147,%xmm5,%xmm9 835238405Sjkim pxor %xmm8,%xmm0 836264331Sjkim pshufd $147,%xmm3,%xmm10 837264331Sjkim pxor %xmm9,%xmm5 838264331Sjkim pshufd $147,%xmm1,%xmm11 839264331Sjkim pxor %xmm10,%xmm3 840264331Sjkim pshufd $147,%xmm6,%xmm12 841238405Sjkim pxor %xmm11,%xmm1 842264331Sjkim pshufd $147,%xmm2,%xmm13 843264331Sjkim pxor %xmm12,%xmm6 844264331Sjkim pshufd $147,%xmm4,%xmm14 845264331Sjkim pxor %xmm13,%xmm2 846264331Sjkim pxor %xmm14,%xmm4 847238405Sjkim 848264331Sjkim pxor %xmm15,%xmm8 849238405Sjkim pxor %xmm4,%xmm7 850264331Sjkim pxor %xmm4,%xmm8 851264331Sjkim pshufd $78,%xmm15,%xmm15 852264331Sjkim pxor %xmm0,%xmm9 853264331Sjkim pshufd $78,%xmm0,%xmm0 854264331Sjkim pxor %xmm1,%xmm12 855264331Sjkim pxor %xmm7,%xmm15 856264331Sjkim pxor %xmm6,%xmm13 857238405Sjkim pxor %xmm8,%xmm0 858264331Sjkim pxor %xmm3,%xmm11 859264331Sjkim pshufd $78,%xmm1,%xmm7 860264331Sjkim pxor %xmm2,%xmm14 861264331Sjkim pshufd $78,%xmm6,%xmm8 862238405Sjkim pxor %xmm5,%xmm10 863264331Sjkim pshufd $78,%xmm3,%xmm1 864264331Sjkim pxor %xmm4,%xmm10 865264331Sjkim pshufd $78,%xmm4,%xmm6 866264331Sjkim pxor %xmm4,%xmm11 867264331Sjkim pshufd $78,%xmm2,%xmm3 868264331Sjkim pxor %xmm11,%xmm7 869264331Sjkim pshufd $78,%xmm5,%xmm2 870264331Sjkim pxor %xmm12,%xmm8 871264331Sjkim pxor %xmm1,%xmm10 872264331Sjkim pxor %xmm14,%xmm6 873264331Sjkim pxor %xmm3,%xmm13 874264331Sjkim movdqa %xmm7,%xmm3 875264331Sjkim pxor %xmm9,%xmm2 876264331Sjkim movdqa %xmm13,%xmm5 877264331Sjkim movdqa %xmm8,%xmm4 878264331Sjkim movdqa %xmm2,%xmm1 879238405Sjkim movdqa %xmm10,%xmm2 880238405Sjkim movdqa -16(%r11),%xmm7 881238405Sjkim jnz .Ldec_loop 882238405Sjkim movdqa -32(%r11),%xmm7 883238405Sjkim jmp .Ldec_loop 884238405Sjkim.align 16 885238405Sjkim.Ldec_done: 886238405Sjkim movdqa 0(%r11),%xmm7 887238405Sjkim movdqa 16(%r11),%xmm8 888238405Sjkim movdqa %xmm2,%xmm9 889238405Sjkim psrlq $1,%xmm2 890238405Sjkim movdqa %xmm1,%xmm10 891238405Sjkim psrlq $1,%xmm1 892238405Sjkim pxor %xmm4,%xmm2 893238405Sjkim pxor %xmm6,%xmm1 894238405Sjkim pand %xmm7,%xmm2 895238405Sjkim pand %xmm7,%xmm1 896238405Sjkim pxor %xmm2,%xmm4 897238405Sjkim psllq $1,%xmm2 898238405Sjkim pxor %xmm1,%xmm6 899238405Sjkim psllq $1,%xmm1 900238405Sjkim pxor %xmm9,%xmm2 901238405Sjkim pxor %xmm10,%xmm1 902238405Sjkim movdqa %xmm5,%xmm9 903238405Sjkim psrlq $1,%xmm5 904238405Sjkim movdqa %xmm15,%xmm10 905238405Sjkim psrlq $1,%xmm15 906238405Sjkim pxor %xmm3,%xmm5 907238405Sjkim pxor %xmm0,%xmm15 908238405Sjkim pand %xmm7,%xmm5 909238405Sjkim pand %xmm7,%xmm15 910238405Sjkim pxor %xmm5,%xmm3 911238405Sjkim psllq $1,%xmm5 912238405Sjkim pxor %xmm15,%xmm0 913238405Sjkim psllq $1,%xmm15 914238405Sjkim pxor %xmm9,%xmm5 915238405Sjkim pxor %xmm10,%xmm15 916238405Sjkim movdqa 32(%r11),%xmm7 917238405Sjkim movdqa %xmm6,%xmm9 918238405Sjkim psrlq $2,%xmm6 919238405Sjkim movdqa %xmm1,%xmm10 920238405Sjkim psrlq $2,%xmm1 921238405Sjkim pxor %xmm4,%xmm6 922238405Sjkim pxor %xmm2,%xmm1 923238405Sjkim pand %xmm8,%xmm6 924238405Sjkim pand %xmm8,%xmm1 925238405Sjkim pxor %xmm6,%xmm4 926238405Sjkim psllq $2,%xmm6 927238405Sjkim pxor %xmm1,%xmm2 928238405Sjkim psllq $2,%xmm1 929238405Sjkim pxor %xmm9,%xmm6 930238405Sjkim pxor %xmm10,%xmm1 931238405Sjkim movdqa %xmm0,%xmm9 932238405Sjkim psrlq $2,%xmm0 933238405Sjkim movdqa %xmm15,%xmm10 934238405Sjkim psrlq $2,%xmm15 935238405Sjkim pxor %xmm3,%xmm0 936238405Sjkim pxor %xmm5,%xmm15 937238405Sjkim pand %xmm8,%xmm0 938238405Sjkim pand %xmm8,%xmm15 939238405Sjkim pxor %xmm0,%xmm3 940238405Sjkim psllq $2,%xmm0 941238405Sjkim pxor %xmm15,%xmm5 942238405Sjkim psllq $2,%xmm15 943238405Sjkim pxor %xmm9,%xmm0 944238405Sjkim pxor %xmm10,%xmm15 945238405Sjkim movdqa %xmm3,%xmm9 946238405Sjkim psrlq $4,%xmm3 947238405Sjkim movdqa %xmm5,%xmm10 948238405Sjkim psrlq $4,%xmm5 949238405Sjkim pxor %xmm4,%xmm3 950238405Sjkim pxor %xmm2,%xmm5 951238405Sjkim pand %xmm7,%xmm3 952238405Sjkim pand %xmm7,%xmm5 953238405Sjkim pxor %xmm3,%xmm4 954238405Sjkim psllq $4,%xmm3 955238405Sjkim pxor %xmm5,%xmm2 956238405Sjkim psllq $4,%xmm5 957238405Sjkim pxor %xmm9,%xmm3 958238405Sjkim pxor %xmm10,%xmm5 959238405Sjkim movdqa %xmm0,%xmm9 960238405Sjkim psrlq $4,%xmm0 961238405Sjkim movdqa %xmm15,%xmm10 962238405Sjkim psrlq $4,%xmm15 963238405Sjkim pxor %xmm6,%xmm0 964238405Sjkim pxor %xmm1,%xmm15 965238405Sjkim pand %xmm7,%xmm0 966238405Sjkim pand %xmm7,%xmm15 967238405Sjkim pxor %xmm0,%xmm6 968238405Sjkim psllq $4,%xmm0 969238405Sjkim pxor %xmm15,%xmm1 970238405Sjkim psllq $4,%xmm15 971238405Sjkim pxor %xmm9,%xmm0 972238405Sjkim pxor %xmm10,%xmm15 973238405Sjkim movdqa (%rax),%xmm7 974238405Sjkim pxor %xmm7,%xmm5 975238405Sjkim pxor %xmm7,%xmm3 976238405Sjkim pxor %xmm7,%xmm1 977238405Sjkim pxor %xmm7,%xmm6 978238405Sjkim pxor %xmm7,%xmm2 979238405Sjkim pxor %xmm7,%xmm4 980238405Sjkim pxor %xmm7,%xmm15 981238405Sjkim pxor %xmm7,%xmm0 982238405Sjkim .byte 0xf3,0xc3 983238405Sjkim.size _bsaes_decrypt8,.-_bsaes_decrypt8 984238405Sjkim.type _bsaes_key_convert,@function 985238405Sjkim.align 16 986238405Sjkim_bsaes_key_convert: 987238405Sjkim leaq .Lmasks(%rip),%r11 988238405Sjkim movdqu (%rcx),%xmm7 989238405Sjkim leaq 16(%rcx),%rcx 990238405Sjkim movdqa 0(%r11),%xmm0 991238405Sjkim movdqa 16(%r11),%xmm1 992238405Sjkim movdqa 32(%r11),%xmm2 993238405Sjkim movdqa 48(%r11),%xmm3 994238405Sjkim movdqa 64(%r11),%xmm4 995238405Sjkim pcmpeqd %xmm5,%xmm5 996238405Sjkim 997238405Sjkim movdqu (%rcx),%xmm6 998238405Sjkim movdqa %xmm7,(%rax) 999238405Sjkim leaq 16(%rax),%rax 1000238405Sjkim decl %r10d 1001238405Sjkim jmp .Lkey_loop 1002238405Sjkim.align 16 1003238405Sjkim.Lkey_loop: 1004238405Sjkim.byte 102,15,56,0,244 1005238405Sjkim 1006238405Sjkim movdqa %xmm0,%xmm8 1007238405Sjkim movdqa %xmm1,%xmm9 1008238405Sjkim 1009238405Sjkim pand %xmm6,%xmm8 1010238405Sjkim pand %xmm6,%xmm9 1011238405Sjkim movdqa %xmm2,%xmm10 1012238405Sjkim pcmpeqb %xmm0,%xmm8 1013238405Sjkim psllq $4,%xmm0 1014238405Sjkim movdqa %xmm3,%xmm11 1015238405Sjkim pcmpeqb %xmm1,%xmm9 1016238405Sjkim psllq $4,%xmm1 1017238405Sjkim 1018238405Sjkim pand %xmm6,%xmm10 1019238405Sjkim pand %xmm6,%xmm11 1020238405Sjkim movdqa %xmm0,%xmm12 1021238405Sjkim pcmpeqb %xmm2,%xmm10 1022238405Sjkim psllq $4,%xmm2 1023238405Sjkim movdqa %xmm1,%xmm13 1024238405Sjkim pcmpeqb %xmm3,%xmm11 1025238405Sjkim psllq $4,%xmm3 1026238405Sjkim 1027238405Sjkim movdqa %xmm2,%xmm14 1028238405Sjkim movdqa %xmm3,%xmm15 1029238405Sjkim pxor %xmm5,%xmm8 1030238405Sjkim pxor %xmm5,%xmm9 1031238405Sjkim 1032238405Sjkim pand %xmm6,%xmm12 1033238405Sjkim pand %xmm6,%xmm13 1034238405Sjkim movdqa %xmm8,0(%rax) 1035238405Sjkim pcmpeqb %xmm0,%xmm12 1036238405Sjkim psrlq $4,%xmm0 1037238405Sjkim movdqa %xmm9,16(%rax) 1038238405Sjkim pcmpeqb %xmm1,%xmm13 1039238405Sjkim psrlq $4,%xmm1 1040238405Sjkim leaq 16(%rcx),%rcx 1041238405Sjkim 1042238405Sjkim pand %xmm6,%xmm14 1043238405Sjkim pand %xmm6,%xmm15 1044238405Sjkim movdqa %xmm10,32(%rax) 1045238405Sjkim pcmpeqb %xmm2,%xmm14 1046238405Sjkim psrlq $4,%xmm2 1047238405Sjkim movdqa %xmm11,48(%rax) 1048238405Sjkim pcmpeqb %xmm3,%xmm15 1049238405Sjkim psrlq $4,%xmm3 1050238405Sjkim movdqu (%rcx),%xmm6 1051238405Sjkim 1052238405Sjkim pxor %xmm5,%xmm13 1053238405Sjkim pxor %xmm5,%xmm14 1054238405Sjkim movdqa %xmm12,64(%rax) 1055238405Sjkim movdqa %xmm13,80(%rax) 1056238405Sjkim movdqa %xmm14,96(%rax) 1057238405Sjkim movdqa %xmm15,112(%rax) 1058238405Sjkim leaq 128(%rax),%rax 1059238405Sjkim decl %r10d 1060238405Sjkim jnz .Lkey_loop 1061238405Sjkim 1062238405Sjkim movdqa 80(%r11),%xmm7 1063238405Sjkim 1064238405Sjkim .byte 0xf3,0xc3 1065238405Sjkim.size _bsaes_key_convert,.-_bsaes_key_convert 1066238405Sjkim 1067238405Sjkim.globl bsaes_cbc_encrypt 1068238405Sjkim.type bsaes_cbc_encrypt,@function 1069238405Sjkim.align 16 1070238405Sjkimbsaes_cbc_encrypt: 1071238405Sjkim cmpl $0,%r9d 1072238405Sjkim jne asm_AES_cbc_encrypt 1073238405Sjkim cmpq $128,%rdx 1074238405Sjkim jb asm_AES_cbc_encrypt 1075238405Sjkim 1076238405Sjkim movq %rsp,%rax 1077238405Sjkim.Lcbc_dec_prologue: 1078238405Sjkim pushq %rbp 1079238405Sjkim pushq %rbx 1080238405Sjkim pushq %r12 1081238405Sjkim pushq %r13 1082238405Sjkim pushq %r14 1083238405Sjkim pushq %r15 1084238405Sjkim leaq -72(%rsp),%rsp 1085238405Sjkim movq %rsp,%rbp 1086238405Sjkim movl 240(%rcx),%eax 1087238405Sjkim movq %rdi,%r12 1088238405Sjkim movq %rsi,%r13 1089238405Sjkim movq %rdx,%r14 1090238405Sjkim movq %rcx,%r15 1091238405Sjkim movq %r8,%rbx 1092238405Sjkim shrq $4,%r14 1093238405Sjkim 1094238405Sjkim movl %eax,%edx 1095238405Sjkim shlq $7,%rax 1096238405Sjkim subq $96,%rax 1097238405Sjkim subq %rax,%rsp 1098238405Sjkim 1099238405Sjkim movq %rsp,%rax 1100238405Sjkim movq %r15,%rcx 1101238405Sjkim movl %edx,%r10d 1102238405Sjkim call _bsaes_key_convert 1103238405Sjkim pxor (%rsp),%xmm7 1104238405Sjkim movdqa %xmm6,(%rax) 1105238405Sjkim movdqa %xmm7,(%rsp) 1106238405Sjkim 1107238405Sjkim movdqu (%rbx),%xmm14 1108238405Sjkim subq $8,%r14 1109238405Sjkim.Lcbc_dec_loop: 1110238405Sjkim movdqu 0(%r12),%xmm15 1111238405Sjkim movdqu 16(%r12),%xmm0 1112238405Sjkim movdqu 32(%r12),%xmm1 1113238405Sjkim movdqu 48(%r12),%xmm2 1114238405Sjkim movdqu 64(%r12),%xmm3 1115238405Sjkim movdqu 80(%r12),%xmm4 1116238405Sjkim movq %rsp,%rax 1117238405Sjkim movdqu 96(%r12),%xmm5 1118238405Sjkim movl %edx,%r10d 1119238405Sjkim movdqu 112(%r12),%xmm6 1120238405Sjkim movdqa %xmm14,32(%rbp) 1121238405Sjkim 1122238405Sjkim call _bsaes_decrypt8 1123238405Sjkim 1124238405Sjkim pxor 32(%rbp),%xmm15 1125238405Sjkim movdqu 0(%r12),%xmm7 1126238405Sjkim movdqu 16(%r12),%xmm8 1127238405Sjkim pxor %xmm7,%xmm0 1128238405Sjkim movdqu 32(%r12),%xmm9 1129238405Sjkim pxor %xmm8,%xmm5 1130238405Sjkim movdqu 48(%r12),%xmm10 1131238405Sjkim pxor %xmm9,%xmm3 1132238405Sjkim movdqu 64(%r12),%xmm11 1133238405Sjkim pxor %xmm10,%xmm1 1134238405Sjkim movdqu 80(%r12),%xmm12 1135238405Sjkim pxor %xmm11,%xmm6 1136238405Sjkim movdqu 96(%r12),%xmm13 1137238405Sjkim pxor %xmm12,%xmm2 1138238405Sjkim movdqu 112(%r12),%xmm14 1139238405Sjkim pxor %xmm13,%xmm4 1140238405Sjkim movdqu %xmm15,0(%r13) 1141238405Sjkim leaq 128(%r12),%r12 1142238405Sjkim movdqu %xmm0,16(%r13) 1143238405Sjkim movdqu %xmm5,32(%r13) 1144238405Sjkim movdqu %xmm3,48(%r13) 1145238405Sjkim movdqu %xmm1,64(%r13) 1146238405Sjkim movdqu %xmm6,80(%r13) 1147238405Sjkim movdqu %xmm2,96(%r13) 1148238405Sjkim movdqu %xmm4,112(%r13) 1149238405Sjkim leaq 128(%r13),%r13 1150238405Sjkim subq $8,%r14 1151238405Sjkim jnc .Lcbc_dec_loop 1152238405Sjkim 1153238405Sjkim addq $8,%r14 1154238405Sjkim jz .Lcbc_dec_done 1155238405Sjkim 1156238405Sjkim movdqu 0(%r12),%xmm15 1157238405Sjkim movq %rsp,%rax 1158238405Sjkim movl %edx,%r10d 1159238405Sjkim cmpq $2,%r14 1160238405Sjkim jb .Lcbc_dec_one 1161238405Sjkim movdqu 16(%r12),%xmm0 1162238405Sjkim je .Lcbc_dec_two 1163238405Sjkim movdqu 32(%r12),%xmm1 1164238405Sjkim cmpq $4,%r14 1165238405Sjkim jb .Lcbc_dec_three 1166238405Sjkim movdqu 48(%r12),%xmm2 1167238405Sjkim je .Lcbc_dec_four 1168238405Sjkim movdqu 64(%r12),%xmm3 1169238405Sjkim cmpq $6,%r14 1170238405Sjkim jb .Lcbc_dec_five 1171238405Sjkim movdqu 80(%r12),%xmm4 1172238405Sjkim je .Lcbc_dec_six 1173238405Sjkim movdqu 96(%r12),%xmm5 1174238405Sjkim movdqa %xmm14,32(%rbp) 1175238405Sjkim call _bsaes_decrypt8 1176238405Sjkim pxor 32(%rbp),%xmm15 1177238405Sjkim movdqu 0(%r12),%xmm7 1178238405Sjkim movdqu 16(%r12),%xmm8 1179238405Sjkim pxor %xmm7,%xmm0 1180238405Sjkim movdqu 32(%r12),%xmm9 1181238405Sjkim pxor %xmm8,%xmm5 1182238405Sjkim movdqu 48(%r12),%xmm10 1183238405Sjkim pxor %xmm9,%xmm3 1184238405Sjkim movdqu 64(%r12),%xmm11 1185238405Sjkim pxor %xmm10,%xmm1 1186238405Sjkim movdqu 80(%r12),%xmm12 1187238405Sjkim pxor %xmm11,%xmm6 1188238405Sjkim movdqu 96(%r12),%xmm14 1189238405Sjkim pxor %xmm12,%xmm2 1190238405Sjkim movdqu %xmm15,0(%r13) 1191238405Sjkim movdqu %xmm0,16(%r13) 1192238405Sjkim movdqu %xmm5,32(%r13) 1193238405Sjkim movdqu %xmm3,48(%r13) 1194238405Sjkim movdqu %xmm1,64(%r13) 1195238405Sjkim movdqu %xmm6,80(%r13) 1196238405Sjkim movdqu %xmm2,96(%r13) 1197238405Sjkim jmp .Lcbc_dec_done 1198238405Sjkim.align 16 1199238405Sjkim.Lcbc_dec_six: 1200238405Sjkim movdqa %xmm14,32(%rbp) 1201238405Sjkim call _bsaes_decrypt8 1202238405Sjkim pxor 32(%rbp),%xmm15 1203238405Sjkim movdqu 0(%r12),%xmm7 1204238405Sjkim movdqu 16(%r12),%xmm8 1205238405Sjkim pxor %xmm7,%xmm0 1206238405Sjkim movdqu 32(%r12),%xmm9 1207238405Sjkim pxor %xmm8,%xmm5 1208238405Sjkim movdqu 48(%r12),%xmm10 1209238405Sjkim pxor %xmm9,%xmm3 1210238405Sjkim movdqu 64(%r12),%xmm11 1211238405Sjkim pxor %xmm10,%xmm1 1212238405Sjkim movdqu 80(%r12),%xmm14 1213238405Sjkim pxor %xmm11,%xmm6 1214238405Sjkim movdqu %xmm15,0(%r13) 1215238405Sjkim movdqu %xmm0,16(%r13) 1216238405Sjkim movdqu %xmm5,32(%r13) 1217238405Sjkim movdqu %xmm3,48(%r13) 1218238405Sjkim movdqu %xmm1,64(%r13) 1219238405Sjkim movdqu %xmm6,80(%r13) 1220238405Sjkim jmp .Lcbc_dec_done 1221238405Sjkim.align 16 1222238405Sjkim.Lcbc_dec_five: 1223238405Sjkim movdqa %xmm14,32(%rbp) 1224238405Sjkim call _bsaes_decrypt8 1225238405Sjkim pxor 32(%rbp),%xmm15 1226238405Sjkim movdqu 0(%r12),%xmm7 1227238405Sjkim movdqu 16(%r12),%xmm8 1228238405Sjkim pxor %xmm7,%xmm0 1229238405Sjkim movdqu 32(%r12),%xmm9 1230238405Sjkim pxor %xmm8,%xmm5 1231238405Sjkim movdqu 48(%r12),%xmm10 1232238405Sjkim pxor %xmm9,%xmm3 1233238405Sjkim movdqu 64(%r12),%xmm14 1234238405Sjkim pxor %xmm10,%xmm1 1235238405Sjkim movdqu %xmm15,0(%r13) 1236238405Sjkim movdqu %xmm0,16(%r13) 1237238405Sjkim movdqu %xmm5,32(%r13) 1238238405Sjkim movdqu %xmm3,48(%r13) 1239238405Sjkim movdqu %xmm1,64(%r13) 1240238405Sjkim jmp .Lcbc_dec_done 1241238405Sjkim.align 16 1242238405Sjkim.Lcbc_dec_four: 1243238405Sjkim movdqa %xmm14,32(%rbp) 1244238405Sjkim call _bsaes_decrypt8 1245238405Sjkim pxor 32(%rbp),%xmm15 1246238405Sjkim movdqu 0(%r12),%xmm7 1247238405Sjkim movdqu 16(%r12),%xmm8 1248238405Sjkim pxor %xmm7,%xmm0 1249238405Sjkim movdqu 32(%r12),%xmm9 1250238405Sjkim pxor %xmm8,%xmm5 1251238405Sjkim movdqu 48(%r12),%xmm14 1252238405Sjkim pxor %xmm9,%xmm3 1253238405Sjkim movdqu %xmm15,0(%r13) 1254238405Sjkim movdqu %xmm0,16(%r13) 1255238405Sjkim movdqu %xmm5,32(%r13) 1256238405Sjkim movdqu %xmm3,48(%r13) 1257238405Sjkim jmp .Lcbc_dec_done 1258238405Sjkim.align 16 1259238405Sjkim.Lcbc_dec_three: 1260238405Sjkim movdqa %xmm14,32(%rbp) 1261238405Sjkim call _bsaes_decrypt8 1262238405Sjkim pxor 32(%rbp),%xmm15 1263238405Sjkim movdqu 0(%r12),%xmm7 1264238405Sjkim movdqu 16(%r12),%xmm8 1265238405Sjkim pxor %xmm7,%xmm0 1266238405Sjkim movdqu 32(%r12),%xmm14 1267238405Sjkim pxor %xmm8,%xmm5 1268238405Sjkim movdqu %xmm15,0(%r13) 1269238405Sjkim movdqu %xmm0,16(%r13) 1270238405Sjkim movdqu %xmm5,32(%r13) 1271238405Sjkim jmp .Lcbc_dec_done 1272238405Sjkim.align 16 1273238405Sjkim.Lcbc_dec_two: 1274238405Sjkim movdqa %xmm14,32(%rbp) 1275238405Sjkim call _bsaes_decrypt8 1276238405Sjkim pxor 32(%rbp),%xmm15 1277238405Sjkim movdqu 0(%r12),%xmm7 1278238405Sjkim movdqu 16(%r12),%xmm14 1279238405Sjkim pxor %xmm7,%xmm0 1280238405Sjkim movdqu %xmm15,0(%r13) 1281238405Sjkim movdqu %xmm0,16(%r13) 1282238405Sjkim jmp .Lcbc_dec_done 1283238405Sjkim.align 16 1284238405Sjkim.Lcbc_dec_one: 1285238405Sjkim leaq (%r12),%rdi 1286238405Sjkim leaq 32(%rbp),%rsi 1287238405Sjkim leaq (%r15),%rdx 1288238405Sjkim call asm_AES_decrypt 1289238405Sjkim pxor 32(%rbp),%xmm14 1290238405Sjkim movdqu %xmm14,(%r13) 1291238405Sjkim movdqa %xmm15,%xmm14 1292238405Sjkim 1293238405Sjkim.Lcbc_dec_done: 1294238405Sjkim movdqu %xmm14,(%rbx) 1295238405Sjkim leaq (%rsp),%rax 1296238405Sjkim pxor %xmm0,%xmm0 1297238405Sjkim.Lcbc_dec_bzero: 1298238405Sjkim movdqa %xmm0,0(%rax) 1299238405Sjkim movdqa %xmm0,16(%rax) 1300238405Sjkim leaq 32(%rax),%rax 1301238405Sjkim cmpq %rax,%rbp 1302238405Sjkim ja .Lcbc_dec_bzero 1303238405Sjkim 1304238405Sjkim leaq (%rbp),%rsp 1305238405Sjkim movq 72(%rsp),%r15 1306238405Sjkim movq 80(%rsp),%r14 1307238405Sjkim movq 88(%rsp),%r13 1308238405Sjkim movq 96(%rsp),%r12 1309238405Sjkim movq 104(%rsp),%rbx 1310238405Sjkim movq 112(%rsp),%rax 1311238405Sjkim leaq 120(%rsp),%rsp 1312238405Sjkim movq %rax,%rbp 1313238405Sjkim.Lcbc_dec_epilogue: 1314238405Sjkim .byte 0xf3,0xc3 1315238405Sjkim.size bsaes_cbc_encrypt,.-bsaes_cbc_encrypt 1316238405Sjkim 1317238405Sjkim.globl bsaes_ctr32_encrypt_blocks 1318238405Sjkim.type bsaes_ctr32_encrypt_blocks,@function 1319238405Sjkim.align 16 1320238405Sjkimbsaes_ctr32_encrypt_blocks: 1321238405Sjkim movq %rsp,%rax 1322238405Sjkim.Lctr_enc_prologue: 1323238405Sjkim pushq %rbp 1324238405Sjkim pushq %rbx 1325238405Sjkim pushq %r12 1326238405Sjkim pushq %r13 1327238405Sjkim pushq %r14 1328238405Sjkim pushq %r15 1329238405Sjkim leaq -72(%rsp),%rsp 1330238405Sjkim movq %rsp,%rbp 1331238405Sjkim movdqu (%r8),%xmm0 1332238405Sjkim movl 240(%rcx),%eax 1333238405Sjkim movq %rdi,%r12 1334238405Sjkim movq %rsi,%r13 1335238405Sjkim movq %rdx,%r14 1336238405Sjkim movq %rcx,%r15 1337238405Sjkim movdqa %xmm0,32(%rbp) 1338238405Sjkim cmpq $8,%rdx 1339238405Sjkim jb .Lctr_enc_short 1340238405Sjkim 1341238405Sjkim movl %eax,%ebx 1342238405Sjkim shlq $7,%rax 1343238405Sjkim subq $96,%rax 1344238405Sjkim subq %rax,%rsp 1345238405Sjkim 1346238405Sjkim movq %rsp,%rax 1347238405Sjkim movq %r15,%rcx 1348238405Sjkim movl %ebx,%r10d 1349238405Sjkim call _bsaes_key_convert 1350238405Sjkim pxor %xmm6,%xmm7 1351238405Sjkim movdqa %xmm7,(%rax) 1352238405Sjkim 1353238405Sjkim movdqa (%rsp),%xmm8 1354238405Sjkim leaq .LADD1(%rip),%r11 1355238405Sjkim movdqa 32(%rbp),%xmm15 1356238405Sjkim movdqa -32(%r11),%xmm7 1357238405Sjkim.byte 102,68,15,56,0,199 1358238405Sjkim.byte 102,68,15,56,0,255 1359238405Sjkim movdqa %xmm8,(%rsp) 1360238405Sjkim jmp .Lctr_enc_loop 1361238405Sjkim.align 16 1362238405Sjkim.Lctr_enc_loop: 1363238405Sjkim movdqa %xmm15,32(%rbp) 1364238405Sjkim movdqa %xmm15,%xmm0 1365238405Sjkim movdqa %xmm15,%xmm1 1366238405Sjkim paddd 0(%r11),%xmm0 1367238405Sjkim movdqa %xmm15,%xmm2 1368238405Sjkim paddd 16(%r11),%xmm1 1369238405Sjkim movdqa %xmm15,%xmm3 1370238405Sjkim paddd 32(%r11),%xmm2 1371238405Sjkim movdqa %xmm15,%xmm4 1372238405Sjkim paddd 48(%r11),%xmm3 1373238405Sjkim movdqa %xmm15,%xmm5 1374238405Sjkim paddd 64(%r11),%xmm4 1375238405Sjkim movdqa %xmm15,%xmm6 1376238405Sjkim paddd 80(%r11),%xmm5 1377238405Sjkim paddd 96(%r11),%xmm6 1378238405Sjkim 1379238405Sjkim 1380238405Sjkim 1381238405Sjkim movdqa (%rsp),%xmm8 1382238405Sjkim leaq 16(%rsp),%rax 1383238405Sjkim movdqa -16(%r11),%xmm7 1384238405Sjkim pxor %xmm8,%xmm15 1385238405Sjkim pxor %xmm8,%xmm0 1386238405Sjkim.byte 102,68,15,56,0,255 1387238405Sjkim pxor %xmm8,%xmm1 1388238405Sjkim.byte 102,15,56,0,199 1389238405Sjkim pxor %xmm8,%xmm2 1390238405Sjkim.byte 102,15,56,0,207 1391238405Sjkim pxor %xmm8,%xmm3 1392238405Sjkim.byte 102,15,56,0,215 1393238405Sjkim pxor %xmm8,%xmm4 1394238405Sjkim.byte 102,15,56,0,223 1395238405Sjkim pxor %xmm8,%xmm5 1396238405Sjkim.byte 102,15,56,0,231 1397238405Sjkim pxor %xmm8,%xmm6 1398238405Sjkim.byte 102,15,56,0,239 1399238405Sjkim leaq .LBS0(%rip),%r11 1400238405Sjkim.byte 102,15,56,0,247 1401238405Sjkim movl %ebx,%r10d 1402238405Sjkim 1403238405Sjkim call _bsaes_encrypt8_bitslice 1404238405Sjkim 1405238405Sjkim subq $8,%r14 1406238405Sjkim jc .Lctr_enc_loop_done 1407238405Sjkim 1408238405Sjkim movdqu 0(%r12),%xmm7 1409238405Sjkim movdqu 16(%r12),%xmm8 1410238405Sjkim movdqu 32(%r12),%xmm9 1411238405Sjkim movdqu 48(%r12),%xmm10 1412238405Sjkim movdqu 64(%r12),%xmm11 1413238405Sjkim movdqu 80(%r12),%xmm12 1414238405Sjkim movdqu 96(%r12),%xmm13 1415238405Sjkim movdqu 112(%r12),%xmm14 1416238405Sjkim leaq 128(%r12),%r12 1417238405Sjkim pxor %xmm15,%xmm7 1418238405Sjkim movdqa 32(%rbp),%xmm15 1419238405Sjkim pxor %xmm8,%xmm0 1420238405Sjkim movdqu %xmm7,0(%r13) 1421238405Sjkim pxor %xmm9,%xmm3 1422238405Sjkim movdqu %xmm0,16(%r13) 1423238405Sjkim pxor %xmm10,%xmm5 1424238405Sjkim movdqu %xmm3,32(%r13) 1425238405Sjkim pxor %xmm11,%xmm2 1426238405Sjkim movdqu %xmm5,48(%r13) 1427238405Sjkim pxor %xmm12,%xmm6 1428238405Sjkim movdqu %xmm2,64(%r13) 1429238405Sjkim pxor %xmm13,%xmm1 1430238405Sjkim movdqu %xmm6,80(%r13) 1431238405Sjkim pxor %xmm14,%xmm4 1432238405Sjkim movdqu %xmm1,96(%r13) 1433238405Sjkim leaq .LADD1(%rip),%r11 1434238405Sjkim movdqu %xmm4,112(%r13) 1435238405Sjkim leaq 128(%r13),%r13 1436238405Sjkim paddd 112(%r11),%xmm15 1437238405Sjkim jnz .Lctr_enc_loop 1438238405Sjkim 1439238405Sjkim jmp .Lctr_enc_done 1440238405Sjkim.align 16 1441238405Sjkim.Lctr_enc_loop_done: 1442238405Sjkim addq $8,%r14 1443238405Sjkim movdqu 0(%r12),%xmm7 1444238405Sjkim pxor %xmm7,%xmm15 1445238405Sjkim movdqu %xmm15,0(%r13) 1446238405Sjkim cmpq $2,%r14 1447238405Sjkim jb .Lctr_enc_done 1448238405Sjkim movdqu 16(%r12),%xmm8 1449238405Sjkim pxor %xmm8,%xmm0 1450238405Sjkim movdqu %xmm0,16(%r13) 1451238405Sjkim je .Lctr_enc_done 1452238405Sjkim movdqu 32(%r12),%xmm9 1453238405Sjkim pxor %xmm9,%xmm3 1454238405Sjkim movdqu %xmm3,32(%r13) 1455238405Sjkim cmpq $4,%r14 1456238405Sjkim jb .Lctr_enc_done 1457238405Sjkim movdqu 48(%r12),%xmm10 1458238405Sjkim pxor %xmm10,%xmm5 1459238405Sjkim movdqu %xmm5,48(%r13) 1460238405Sjkim je .Lctr_enc_done 1461238405Sjkim movdqu 64(%r12),%xmm11 1462238405Sjkim pxor %xmm11,%xmm2 1463238405Sjkim movdqu %xmm2,64(%r13) 1464238405Sjkim cmpq $6,%r14 1465238405Sjkim jb .Lctr_enc_done 1466238405Sjkim movdqu 80(%r12),%xmm12 1467238405Sjkim pxor %xmm12,%xmm6 1468238405Sjkim movdqu %xmm6,80(%r13) 1469238405Sjkim je .Lctr_enc_done 1470238405Sjkim movdqu 96(%r12),%xmm13 1471238405Sjkim pxor %xmm13,%xmm1 1472238405Sjkim movdqu %xmm1,96(%r13) 1473238405Sjkim jmp .Lctr_enc_done 1474238405Sjkim 1475238405Sjkim.align 16 1476238405Sjkim.Lctr_enc_short: 1477238405Sjkim leaq 32(%rbp),%rdi 1478238405Sjkim leaq 48(%rbp),%rsi 1479238405Sjkim leaq (%r15),%rdx 1480238405Sjkim call asm_AES_encrypt 1481238405Sjkim movdqu (%r12),%xmm0 1482238405Sjkim leaq 16(%r12),%r12 1483238405Sjkim movl 44(%rbp),%eax 1484238405Sjkim bswapl %eax 1485238405Sjkim pxor 48(%rbp),%xmm0 1486238405Sjkim incl %eax 1487238405Sjkim movdqu %xmm0,(%r13) 1488238405Sjkim bswapl %eax 1489238405Sjkim leaq 16(%r13),%r13 1490238405Sjkim movl %eax,44(%rsp) 1491238405Sjkim decq %r14 1492238405Sjkim jnz .Lctr_enc_short 1493238405Sjkim 1494238405Sjkim.Lctr_enc_done: 1495238405Sjkim leaq (%rsp),%rax 1496238405Sjkim pxor %xmm0,%xmm0 1497238405Sjkim.Lctr_enc_bzero: 1498238405Sjkim movdqa %xmm0,0(%rax) 1499238405Sjkim movdqa %xmm0,16(%rax) 1500238405Sjkim leaq 32(%rax),%rax 1501238405Sjkim cmpq %rax,%rbp 1502238405Sjkim ja .Lctr_enc_bzero 1503238405Sjkim 1504238405Sjkim leaq (%rbp),%rsp 1505238405Sjkim movq 72(%rsp),%r15 1506238405Sjkim movq 80(%rsp),%r14 1507238405Sjkim movq 88(%rsp),%r13 1508238405Sjkim movq 96(%rsp),%r12 1509238405Sjkim movq 104(%rsp),%rbx 1510238405Sjkim movq 112(%rsp),%rax 1511238405Sjkim leaq 120(%rsp),%rsp 1512238405Sjkim movq %rax,%rbp 1513238405Sjkim.Lctr_enc_epilogue: 1514238405Sjkim .byte 0xf3,0xc3 1515238405Sjkim.size bsaes_ctr32_encrypt_blocks,.-bsaes_ctr32_encrypt_blocks 1516238405Sjkim.globl bsaes_xts_encrypt 1517238405Sjkim.type bsaes_xts_encrypt,@function 1518238405Sjkim.align 16 1519238405Sjkimbsaes_xts_encrypt: 1520238405Sjkim movq %rsp,%rax 1521238405Sjkim.Lxts_enc_prologue: 1522238405Sjkim pushq %rbp 1523238405Sjkim pushq %rbx 1524238405Sjkim pushq %r12 1525238405Sjkim pushq %r13 1526238405Sjkim pushq %r14 1527238405Sjkim pushq %r15 1528238405Sjkim leaq -72(%rsp),%rsp 1529238405Sjkim movq %rsp,%rbp 1530238405Sjkim movq %rdi,%r12 1531238405Sjkim movq %rsi,%r13 1532238405Sjkim movq %rdx,%r14 1533238405Sjkim movq %rcx,%r15 1534238405Sjkim 1535238405Sjkim leaq (%r9),%rdi 1536238405Sjkim leaq 32(%rbp),%rsi 1537238405Sjkim leaq (%r8),%rdx 1538238405Sjkim call asm_AES_encrypt 1539238405Sjkim 1540238405Sjkim movl 240(%r15),%eax 1541238405Sjkim movq %r14,%rbx 1542238405Sjkim 1543238405Sjkim movl %eax,%edx 1544238405Sjkim shlq $7,%rax 1545238405Sjkim subq $96,%rax 1546238405Sjkim subq %rax,%rsp 1547238405Sjkim 1548238405Sjkim movq %rsp,%rax 1549238405Sjkim movq %r15,%rcx 1550238405Sjkim movl %edx,%r10d 1551238405Sjkim call _bsaes_key_convert 1552238405Sjkim pxor %xmm6,%xmm7 1553238405Sjkim movdqa %xmm7,(%rax) 1554238405Sjkim 1555238405Sjkim andq $-16,%r14 1556238405Sjkim subq $128,%rsp 1557238405Sjkim movdqa 32(%rbp),%xmm6 1558238405Sjkim 1559238405Sjkim pxor %xmm14,%xmm14 1560238405Sjkim movdqa .Lxts_magic(%rip),%xmm12 1561238405Sjkim pcmpgtd %xmm6,%xmm14 1562238405Sjkim 1563238405Sjkim subq $128,%r14 1564238405Sjkim jc .Lxts_enc_short 1565238405Sjkim jmp .Lxts_enc_loop 1566238405Sjkim 1567238405Sjkim.align 16 1568238405Sjkim.Lxts_enc_loop: 1569238405Sjkim pshufd $19,%xmm14,%xmm13 1570238405Sjkim pxor %xmm14,%xmm14 1571238405Sjkim movdqa %xmm6,%xmm15 1572238405Sjkim movdqa %xmm6,0(%rsp) 1573238405Sjkim paddq %xmm6,%xmm6 1574238405Sjkim pand %xmm12,%xmm13 1575238405Sjkim pcmpgtd %xmm6,%xmm14 1576238405Sjkim pxor %xmm13,%xmm6 1577238405Sjkim pshufd $19,%xmm14,%xmm13 1578238405Sjkim pxor %xmm14,%xmm14 1579238405Sjkim movdqa %xmm6,%xmm0 1580238405Sjkim movdqa %xmm6,16(%rsp) 1581238405Sjkim paddq %xmm6,%xmm6 1582238405Sjkim pand %xmm12,%xmm13 1583238405Sjkim pcmpgtd %xmm6,%xmm14 1584238405Sjkim pxor %xmm13,%xmm6 1585238405Sjkim movdqu 0(%r12),%xmm7 1586238405Sjkim pshufd $19,%xmm14,%xmm13 1587238405Sjkim pxor %xmm14,%xmm14 1588238405Sjkim movdqa %xmm6,%xmm1 1589238405Sjkim movdqa %xmm6,32(%rsp) 1590238405Sjkim paddq %xmm6,%xmm6 1591238405Sjkim pand %xmm12,%xmm13 1592238405Sjkim pcmpgtd %xmm6,%xmm14 1593238405Sjkim pxor %xmm13,%xmm6 1594238405Sjkim movdqu 16(%r12),%xmm8 1595238405Sjkim pxor %xmm7,%xmm15 1596238405Sjkim pshufd $19,%xmm14,%xmm13 1597238405Sjkim pxor %xmm14,%xmm14 1598238405Sjkim movdqa %xmm6,%xmm2 1599238405Sjkim movdqa %xmm6,48(%rsp) 1600238405Sjkim paddq %xmm6,%xmm6 1601238405Sjkim pand %xmm12,%xmm13 1602238405Sjkim pcmpgtd %xmm6,%xmm14 1603238405Sjkim pxor %xmm13,%xmm6 1604238405Sjkim movdqu 32(%r12),%xmm9 1605238405Sjkim pxor %xmm8,%xmm0 1606238405Sjkim pshufd $19,%xmm14,%xmm13 1607238405Sjkim pxor %xmm14,%xmm14 1608238405Sjkim movdqa %xmm6,%xmm3 1609238405Sjkim movdqa %xmm6,64(%rsp) 1610238405Sjkim paddq %xmm6,%xmm6 1611238405Sjkim pand %xmm12,%xmm13 1612238405Sjkim pcmpgtd %xmm6,%xmm14 1613238405Sjkim pxor %xmm13,%xmm6 1614238405Sjkim movdqu 48(%r12),%xmm10 1615238405Sjkim pxor %xmm9,%xmm1 1616238405Sjkim pshufd $19,%xmm14,%xmm13 1617238405Sjkim pxor %xmm14,%xmm14 1618238405Sjkim movdqa %xmm6,%xmm4 1619238405Sjkim movdqa %xmm6,80(%rsp) 1620238405Sjkim paddq %xmm6,%xmm6 1621238405Sjkim pand %xmm12,%xmm13 1622238405Sjkim pcmpgtd %xmm6,%xmm14 1623238405Sjkim pxor %xmm13,%xmm6 1624238405Sjkim movdqu 64(%r12),%xmm11 1625238405Sjkim pxor %xmm10,%xmm2 1626238405Sjkim pshufd $19,%xmm14,%xmm13 1627238405Sjkim pxor %xmm14,%xmm14 1628238405Sjkim movdqa %xmm6,%xmm5 1629238405Sjkim movdqa %xmm6,96(%rsp) 1630238405Sjkim paddq %xmm6,%xmm6 1631238405Sjkim pand %xmm12,%xmm13 1632238405Sjkim pcmpgtd %xmm6,%xmm14 1633238405Sjkim pxor %xmm13,%xmm6 1634238405Sjkim movdqu 80(%r12),%xmm12 1635238405Sjkim pxor %xmm11,%xmm3 1636238405Sjkim movdqu 96(%r12),%xmm13 1637238405Sjkim pxor %xmm12,%xmm4 1638238405Sjkim movdqu 112(%r12),%xmm14 1639238405Sjkim leaq 128(%r12),%r12 1640238405Sjkim movdqa %xmm6,112(%rsp) 1641238405Sjkim pxor %xmm13,%xmm5 1642238405Sjkim leaq 128(%rsp),%rax 1643238405Sjkim pxor %xmm14,%xmm6 1644238405Sjkim movl %edx,%r10d 1645238405Sjkim 1646238405Sjkim call _bsaes_encrypt8 1647238405Sjkim 1648238405Sjkim pxor 0(%rsp),%xmm15 1649238405Sjkim pxor 16(%rsp),%xmm0 1650238405Sjkim movdqu %xmm15,0(%r13) 1651238405Sjkim pxor 32(%rsp),%xmm3 1652238405Sjkim movdqu %xmm0,16(%r13) 1653238405Sjkim pxor 48(%rsp),%xmm5 1654238405Sjkim movdqu %xmm3,32(%r13) 1655238405Sjkim pxor 64(%rsp),%xmm2 1656238405Sjkim movdqu %xmm5,48(%r13) 1657238405Sjkim pxor 80(%rsp),%xmm6 1658238405Sjkim movdqu %xmm2,64(%r13) 1659238405Sjkim pxor 96(%rsp),%xmm1 1660238405Sjkim movdqu %xmm6,80(%r13) 1661238405Sjkim pxor 112(%rsp),%xmm4 1662238405Sjkim movdqu %xmm1,96(%r13) 1663238405Sjkim movdqu %xmm4,112(%r13) 1664238405Sjkim leaq 128(%r13),%r13 1665238405Sjkim 1666238405Sjkim movdqa 112(%rsp),%xmm6 1667238405Sjkim pxor %xmm14,%xmm14 1668238405Sjkim movdqa .Lxts_magic(%rip),%xmm12 1669238405Sjkim pcmpgtd %xmm6,%xmm14 1670238405Sjkim pshufd $19,%xmm14,%xmm13 1671238405Sjkim pxor %xmm14,%xmm14 1672238405Sjkim paddq %xmm6,%xmm6 1673238405Sjkim pand %xmm12,%xmm13 1674238405Sjkim pcmpgtd %xmm6,%xmm14 1675238405Sjkim pxor %xmm13,%xmm6 1676238405Sjkim 1677238405Sjkim subq $128,%r14 1678238405Sjkim jnc .Lxts_enc_loop 1679238405Sjkim 1680238405Sjkim.Lxts_enc_short: 1681238405Sjkim addq $128,%r14 1682238405Sjkim jz .Lxts_enc_done 1683238405Sjkim pshufd $19,%xmm14,%xmm13 1684238405Sjkim pxor %xmm14,%xmm14 1685238405Sjkim movdqa %xmm6,%xmm15 1686238405Sjkim movdqa %xmm6,0(%rsp) 1687238405Sjkim paddq %xmm6,%xmm6 1688238405Sjkim pand %xmm12,%xmm13 1689238405Sjkim pcmpgtd %xmm6,%xmm14 1690238405Sjkim pxor %xmm13,%xmm6 1691238405Sjkim pshufd $19,%xmm14,%xmm13 1692238405Sjkim pxor %xmm14,%xmm14 1693238405Sjkim movdqa %xmm6,%xmm0 1694238405Sjkim movdqa %xmm6,16(%rsp) 1695238405Sjkim paddq %xmm6,%xmm6 1696238405Sjkim pand %xmm12,%xmm13 1697238405Sjkim pcmpgtd %xmm6,%xmm14 1698238405Sjkim pxor %xmm13,%xmm6 1699238405Sjkim movdqu 0(%r12),%xmm7 1700238405Sjkim cmpq $16,%r14 1701238405Sjkim je .Lxts_enc_1 1702238405Sjkim pshufd $19,%xmm14,%xmm13 1703238405Sjkim pxor %xmm14,%xmm14 1704238405Sjkim movdqa %xmm6,%xmm1 1705238405Sjkim movdqa %xmm6,32(%rsp) 1706238405Sjkim paddq %xmm6,%xmm6 1707238405Sjkim pand %xmm12,%xmm13 1708238405Sjkim pcmpgtd %xmm6,%xmm14 1709238405Sjkim pxor %xmm13,%xmm6 1710238405Sjkim movdqu 16(%r12),%xmm8 1711238405Sjkim cmpq $32,%r14 1712238405Sjkim je .Lxts_enc_2 1713238405Sjkim pxor %xmm7,%xmm15 1714238405Sjkim pshufd $19,%xmm14,%xmm13 1715238405Sjkim pxor %xmm14,%xmm14 1716238405Sjkim movdqa %xmm6,%xmm2 1717238405Sjkim movdqa %xmm6,48(%rsp) 1718238405Sjkim paddq %xmm6,%xmm6 1719238405Sjkim pand %xmm12,%xmm13 1720238405Sjkim pcmpgtd %xmm6,%xmm14 1721238405Sjkim pxor %xmm13,%xmm6 1722238405Sjkim movdqu 32(%r12),%xmm9 1723238405Sjkim cmpq $48,%r14 1724238405Sjkim je .Lxts_enc_3 1725238405Sjkim pxor %xmm8,%xmm0 1726238405Sjkim pshufd $19,%xmm14,%xmm13 1727238405Sjkim pxor %xmm14,%xmm14 1728238405Sjkim movdqa %xmm6,%xmm3 1729238405Sjkim movdqa %xmm6,64(%rsp) 1730238405Sjkim paddq %xmm6,%xmm6 1731238405Sjkim pand %xmm12,%xmm13 1732238405Sjkim pcmpgtd %xmm6,%xmm14 1733238405Sjkim pxor %xmm13,%xmm6 1734238405Sjkim movdqu 48(%r12),%xmm10 1735238405Sjkim cmpq $64,%r14 1736238405Sjkim je .Lxts_enc_4 1737238405Sjkim pxor %xmm9,%xmm1 1738238405Sjkim pshufd $19,%xmm14,%xmm13 1739238405Sjkim pxor %xmm14,%xmm14 1740238405Sjkim movdqa %xmm6,%xmm4 1741238405Sjkim movdqa %xmm6,80(%rsp) 1742238405Sjkim paddq %xmm6,%xmm6 1743238405Sjkim pand %xmm12,%xmm13 1744238405Sjkim pcmpgtd %xmm6,%xmm14 1745238405Sjkim pxor %xmm13,%xmm6 1746238405Sjkim movdqu 64(%r12),%xmm11 1747238405Sjkim cmpq $80,%r14 1748238405Sjkim je .Lxts_enc_5 1749238405Sjkim pxor %xmm10,%xmm2 1750238405Sjkim pshufd $19,%xmm14,%xmm13 1751238405Sjkim pxor %xmm14,%xmm14 1752238405Sjkim movdqa %xmm6,%xmm5 1753238405Sjkim movdqa %xmm6,96(%rsp) 1754238405Sjkim paddq %xmm6,%xmm6 1755238405Sjkim pand %xmm12,%xmm13 1756238405Sjkim pcmpgtd %xmm6,%xmm14 1757238405Sjkim pxor %xmm13,%xmm6 1758238405Sjkim movdqu 80(%r12),%xmm12 1759238405Sjkim cmpq $96,%r14 1760238405Sjkim je .Lxts_enc_6 1761238405Sjkim pxor %xmm11,%xmm3 1762238405Sjkim movdqu 96(%r12),%xmm13 1763238405Sjkim pxor %xmm12,%xmm4 1764238405Sjkim movdqa %xmm6,112(%rsp) 1765238405Sjkim leaq 112(%r12),%r12 1766238405Sjkim pxor %xmm13,%xmm5 1767238405Sjkim leaq 128(%rsp),%rax 1768238405Sjkim movl %edx,%r10d 1769238405Sjkim 1770238405Sjkim call _bsaes_encrypt8 1771238405Sjkim 1772238405Sjkim pxor 0(%rsp),%xmm15 1773238405Sjkim pxor 16(%rsp),%xmm0 1774238405Sjkim movdqu %xmm15,0(%r13) 1775238405Sjkim pxor 32(%rsp),%xmm3 1776238405Sjkim movdqu %xmm0,16(%r13) 1777238405Sjkim pxor 48(%rsp),%xmm5 1778238405Sjkim movdqu %xmm3,32(%r13) 1779238405Sjkim pxor 64(%rsp),%xmm2 1780238405Sjkim movdqu %xmm5,48(%r13) 1781238405Sjkim pxor 80(%rsp),%xmm6 1782238405Sjkim movdqu %xmm2,64(%r13) 1783238405Sjkim pxor 96(%rsp),%xmm1 1784238405Sjkim movdqu %xmm6,80(%r13) 1785238405Sjkim movdqu %xmm1,96(%r13) 1786238405Sjkim leaq 112(%r13),%r13 1787238405Sjkim 1788238405Sjkim movdqa 112(%rsp),%xmm6 1789238405Sjkim jmp .Lxts_enc_done 1790238405Sjkim.align 16 1791238405Sjkim.Lxts_enc_6: 1792238405Sjkim pxor %xmm11,%xmm3 1793238405Sjkim leaq 96(%r12),%r12 1794238405Sjkim pxor %xmm12,%xmm4 1795238405Sjkim leaq 128(%rsp),%rax 1796238405Sjkim movl %edx,%r10d 1797238405Sjkim 1798238405Sjkim call _bsaes_encrypt8 1799238405Sjkim 1800238405Sjkim pxor 0(%rsp),%xmm15 1801238405Sjkim pxor 16(%rsp),%xmm0 1802238405Sjkim movdqu %xmm15,0(%r13) 1803238405Sjkim pxor 32(%rsp),%xmm3 1804238405Sjkim movdqu %xmm0,16(%r13) 1805238405Sjkim pxor 48(%rsp),%xmm5 1806238405Sjkim movdqu %xmm3,32(%r13) 1807238405Sjkim pxor 64(%rsp),%xmm2 1808238405Sjkim movdqu %xmm5,48(%r13) 1809238405Sjkim pxor 80(%rsp),%xmm6 1810238405Sjkim movdqu %xmm2,64(%r13) 1811238405Sjkim movdqu %xmm6,80(%r13) 1812238405Sjkim leaq 96(%r13),%r13 1813238405Sjkim 1814238405Sjkim movdqa 96(%rsp),%xmm6 1815238405Sjkim jmp .Lxts_enc_done 1816238405Sjkim.align 16 1817238405Sjkim.Lxts_enc_5: 1818238405Sjkim pxor %xmm10,%xmm2 1819238405Sjkim leaq 80(%r12),%r12 1820238405Sjkim pxor %xmm11,%xmm3 1821238405Sjkim leaq 128(%rsp),%rax 1822238405Sjkim movl %edx,%r10d 1823238405Sjkim 1824238405Sjkim call _bsaes_encrypt8 1825238405Sjkim 1826238405Sjkim pxor 0(%rsp),%xmm15 1827238405Sjkim pxor 16(%rsp),%xmm0 1828238405Sjkim movdqu %xmm15,0(%r13) 1829238405Sjkim pxor 32(%rsp),%xmm3 1830238405Sjkim movdqu %xmm0,16(%r13) 1831238405Sjkim pxor 48(%rsp),%xmm5 1832238405Sjkim movdqu %xmm3,32(%r13) 1833238405Sjkim pxor 64(%rsp),%xmm2 1834238405Sjkim movdqu %xmm5,48(%r13) 1835238405Sjkim movdqu %xmm2,64(%r13) 1836238405Sjkim leaq 80(%r13),%r13 1837238405Sjkim 1838238405Sjkim movdqa 80(%rsp),%xmm6 1839238405Sjkim jmp .Lxts_enc_done 1840238405Sjkim.align 16 1841238405Sjkim.Lxts_enc_4: 1842238405Sjkim pxor %xmm9,%xmm1 1843238405Sjkim leaq 64(%r12),%r12 1844238405Sjkim pxor %xmm10,%xmm2 1845238405Sjkim leaq 128(%rsp),%rax 1846238405Sjkim movl %edx,%r10d 1847238405Sjkim 1848238405Sjkim call _bsaes_encrypt8 1849238405Sjkim 1850238405Sjkim pxor 0(%rsp),%xmm15 1851238405Sjkim pxor 16(%rsp),%xmm0 1852238405Sjkim movdqu %xmm15,0(%r13) 1853238405Sjkim pxor 32(%rsp),%xmm3 1854238405Sjkim movdqu %xmm0,16(%r13) 1855238405Sjkim pxor 48(%rsp),%xmm5 1856238405Sjkim movdqu %xmm3,32(%r13) 1857238405Sjkim movdqu %xmm5,48(%r13) 1858238405Sjkim leaq 64(%r13),%r13 1859238405Sjkim 1860238405Sjkim movdqa 64(%rsp),%xmm6 1861238405Sjkim jmp .Lxts_enc_done 1862238405Sjkim.align 16 1863238405Sjkim.Lxts_enc_3: 1864238405Sjkim pxor %xmm8,%xmm0 1865238405Sjkim leaq 48(%r12),%r12 1866238405Sjkim pxor %xmm9,%xmm1 1867238405Sjkim leaq 128(%rsp),%rax 1868238405Sjkim movl %edx,%r10d 1869238405Sjkim 1870238405Sjkim call _bsaes_encrypt8 1871238405Sjkim 1872238405Sjkim pxor 0(%rsp),%xmm15 1873238405Sjkim pxor 16(%rsp),%xmm0 1874238405Sjkim movdqu %xmm15,0(%r13) 1875238405Sjkim pxor 32(%rsp),%xmm3 1876238405Sjkim movdqu %xmm0,16(%r13) 1877238405Sjkim movdqu %xmm3,32(%r13) 1878238405Sjkim leaq 48(%r13),%r13 1879238405Sjkim 1880238405Sjkim movdqa 48(%rsp),%xmm6 1881238405Sjkim jmp .Lxts_enc_done 1882238405Sjkim.align 16 1883238405Sjkim.Lxts_enc_2: 1884238405Sjkim pxor %xmm7,%xmm15 1885238405Sjkim leaq 32(%r12),%r12 1886238405Sjkim pxor %xmm8,%xmm0 1887238405Sjkim leaq 128(%rsp),%rax 1888238405Sjkim movl %edx,%r10d 1889238405Sjkim 1890238405Sjkim call _bsaes_encrypt8 1891238405Sjkim 1892238405Sjkim pxor 0(%rsp),%xmm15 1893238405Sjkim pxor 16(%rsp),%xmm0 1894238405Sjkim movdqu %xmm15,0(%r13) 1895238405Sjkim movdqu %xmm0,16(%r13) 1896238405Sjkim leaq 32(%r13),%r13 1897238405Sjkim 1898238405Sjkim movdqa 32(%rsp),%xmm6 1899238405Sjkim jmp .Lxts_enc_done 1900238405Sjkim.align 16 1901238405Sjkim.Lxts_enc_1: 1902238405Sjkim pxor %xmm15,%xmm7 1903238405Sjkim leaq 16(%r12),%r12 1904238405Sjkim movdqa %xmm7,32(%rbp) 1905238405Sjkim leaq 32(%rbp),%rdi 1906238405Sjkim leaq 32(%rbp),%rsi 1907238405Sjkim leaq (%r15),%rdx 1908238405Sjkim call asm_AES_encrypt 1909238405Sjkim pxor 32(%rbp),%xmm15 1910238405Sjkim 1911238405Sjkim 1912238405Sjkim 1913238405Sjkim 1914238405Sjkim 1915238405Sjkim movdqu %xmm15,0(%r13) 1916238405Sjkim leaq 16(%r13),%r13 1917238405Sjkim 1918238405Sjkim movdqa 16(%rsp),%xmm6 1919238405Sjkim 1920238405Sjkim.Lxts_enc_done: 1921238405Sjkim andl $15,%ebx 1922238405Sjkim jz .Lxts_enc_ret 1923238405Sjkim movq %r13,%rdx 1924238405Sjkim 1925238405Sjkim.Lxts_enc_steal: 1926238405Sjkim movzbl (%r12),%eax 1927238405Sjkim movzbl -16(%rdx),%ecx 1928238405Sjkim leaq 1(%r12),%r12 1929238405Sjkim movb %al,-16(%rdx) 1930238405Sjkim movb %cl,0(%rdx) 1931238405Sjkim leaq 1(%rdx),%rdx 1932238405Sjkim subl $1,%ebx 1933238405Sjkim jnz .Lxts_enc_steal 1934238405Sjkim 1935238405Sjkim movdqu -16(%r13),%xmm15 1936238405Sjkim leaq 32(%rbp),%rdi 1937238405Sjkim pxor %xmm6,%xmm15 1938238405Sjkim leaq 32(%rbp),%rsi 1939238405Sjkim movdqa %xmm15,32(%rbp) 1940238405Sjkim leaq (%r15),%rdx 1941238405Sjkim call asm_AES_encrypt 1942238405Sjkim pxor 32(%rbp),%xmm6 1943238405Sjkim movdqu %xmm6,-16(%r13) 1944238405Sjkim 1945238405Sjkim.Lxts_enc_ret: 1946238405Sjkim leaq (%rsp),%rax 1947238405Sjkim pxor %xmm0,%xmm0 1948238405Sjkim.Lxts_enc_bzero: 1949238405Sjkim movdqa %xmm0,0(%rax) 1950238405Sjkim movdqa %xmm0,16(%rax) 1951238405Sjkim leaq 32(%rax),%rax 1952238405Sjkim cmpq %rax,%rbp 1953238405Sjkim ja .Lxts_enc_bzero 1954238405Sjkim 1955238405Sjkim leaq (%rbp),%rsp 1956238405Sjkim movq 72(%rsp),%r15 1957238405Sjkim movq 80(%rsp),%r14 1958238405Sjkim movq 88(%rsp),%r13 1959238405Sjkim movq 96(%rsp),%r12 1960238405Sjkim movq 104(%rsp),%rbx 1961238405Sjkim movq 112(%rsp),%rax 1962238405Sjkim leaq 120(%rsp),%rsp 1963238405Sjkim movq %rax,%rbp 1964238405Sjkim.Lxts_enc_epilogue: 1965238405Sjkim .byte 0xf3,0xc3 1966238405Sjkim.size bsaes_xts_encrypt,.-bsaes_xts_encrypt 1967238405Sjkim 1968238405Sjkim.globl bsaes_xts_decrypt 1969238405Sjkim.type bsaes_xts_decrypt,@function 1970238405Sjkim.align 16 1971238405Sjkimbsaes_xts_decrypt: 1972238405Sjkim movq %rsp,%rax 1973238405Sjkim.Lxts_dec_prologue: 1974238405Sjkim pushq %rbp 1975238405Sjkim pushq %rbx 1976238405Sjkim pushq %r12 1977238405Sjkim pushq %r13 1978238405Sjkim pushq %r14 1979238405Sjkim pushq %r15 1980238405Sjkim leaq -72(%rsp),%rsp 1981238405Sjkim movq %rsp,%rbp 1982238405Sjkim movq %rdi,%r12 1983238405Sjkim movq %rsi,%r13 1984238405Sjkim movq %rdx,%r14 1985238405Sjkim movq %rcx,%r15 1986238405Sjkim 1987238405Sjkim leaq (%r9),%rdi 1988238405Sjkim leaq 32(%rbp),%rsi 1989238405Sjkim leaq (%r8),%rdx 1990238405Sjkim call asm_AES_encrypt 1991238405Sjkim 1992238405Sjkim movl 240(%r15),%eax 1993238405Sjkim movq %r14,%rbx 1994238405Sjkim 1995238405Sjkim movl %eax,%edx 1996238405Sjkim shlq $7,%rax 1997238405Sjkim subq $96,%rax 1998238405Sjkim subq %rax,%rsp 1999238405Sjkim 2000238405Sjkim movq %rsp,%rax 2001238405Sjkim movq %r15,%rcx 2002238405Sjkim movl %edx,%r10d 2003238405Sjkim call _bsaes_key_convert 2004238405Sjkim pxor (%rsp),%xmm7 2005238405Sjkim movdqa %xmm6,(%rax) 2006238405Sjkim movdqa %xmm7,(%rsp) 2007238405Sjkim 2008238405Sjkim xorl %eax,%eax 2009238405Sjkim andq $-16,%r14 2010238405Sjkim testl $15,%ebx 2011238405Sjkim setnz %al 2012238405Sjkim shlq $4,%rax 2013238405Sjkim subq %rax,%r14 2014238405Sjkim 2015238405Sjkim subq $128,%rsp 2016238405Sjkim movdqa 32(%rbp),%xmm6 2017238405Sjkim 2018238405Sjkim pxor %xmm14,%xmm14 2019238405Sjkim movdqa .Lxts_magic(%rip),%xmm12 2020238405Sjkim pcmpgtd %xmm6,%xmm14 2021238405Sjkim 2022238405Sjkim subq $128,%r14 2023238405Sjkim jc .Lxts_dec_short 2024238405Sjkim jmp .Lxts_dec_loop 2025238405Sjkim 2026238405Sjkim.align 16 2027238405Sjkim.Lxts_dec_loop: 2028238405Sjkim pshufd $19,%xmm14,%xmm13 2029238405Sjkim pxor %xmm14,%xmm14 2030238405Sjkim movdqa %xmm6,%xmm15 2031238405Sjkim movdqa %xmm6,0(%rsp) 2032238405Sjkim paddq %xmm6,%xmm6 2033238405Sjkim pand %xmm12,%xmm13 2034238405Sjkim pcmpgtd %xmm6,%xmm14 2035238405Sjkim pxor %xmm13,%xmm6 2036238405Sjkim pshufd $19,%xmm14,%xmm13 2037238405Sjkim pxor %xmm14,%xmm14 2038238405Sjkim movdqa %xmm6,%xmm0 2039238405Sjkim movdqa %xmm6,16(%rsp) 2040238405Sjkim paddq %xmm6,%xmm6 2041238405Sjkim pand %xmm12,%xmm13 2042238405Sjkim pcmpgtd %xmm6,%xmm14 2043238405Sjkim pxor %xmm13,%xmm6 2044238405Sjkim movdqu 0(%r12),%xmm7 2045238405Sjkim pshufd $19,%xmm14,%xmm13 2046238405Sjkim pxor %xmm14,%xmm14 2047238405Sjkim movdqa %xmm6,%xmm1 2048238405Sjkim movdqa %xmm6,32(%rsp) 2049238405Sjkim paddq %xmm6,%xmm6 2050238405Sjkim pand %xmm12,%xmm13 2051238405Sjkim pcmpgtd %xmm6,%xmm14 2052238405Sjkim pxor %xmm13,%xmm6 2053238405Sjkim movdqu 16(%r12),%xmm8 2054238405Sjkim pxor %xmm7,%xmm15 2055238405Sjkim pshufd $19,%xmm14,%xmm13 2056238405Sjkim pxor %xmm14,%xmm14 2057238405Sjkim movdqa %xmm6,%xmm2 2058238405Sjkim movdqa %xmm6,48(%rsp) 2059238405Sjkim paddq %xmm6,%xmm6 2060238405Sjkim pand %xmm12,%xmm13 2061238405Sjkim pcmpgtd %xmm6,%xmm14 2062238405Sjkim pxor %xmm13,%xmm6 2063238405Sjkim movdqu 32(%r12),%xmm9 2064238405Sjkim pxor %xmm8,%xmm0 2065238405Sjkim pshufd $19,%xmm14,%xmm13 2066238405Sjkim pxor %xmm14,%xmm14 2067238405Sjkim movdqa %xmm6,%xmm3 2068238405Sjkim movdqa %xmm6,64(%rsp) 2069238405Sjkim paddq %xmm6,%xmm6 2070238405Sjkim pand %xmm12,%xmm13 2071238405Sjkim pcmpgtd %xmm6,%xmm14 2072238405Sjkim pxor %xmm13,%xmm6 2073238405Sjkim movdqu 48(%r12),%xmm10 2074238405Sjkim pxor %xmm9,%xmm1 2075238405Sjkim pshufd $19,%xmm14,%xmm13 2076238405Sjkim pxor %xmm14,%xmm14 2077238405Sjkim movdqa %xmm6,%xmm4 2078238405Sjkim movdqa %xmm6,80(%rsp) 2079238405Sjkim paddq %xmm6,%xmm6 2080238405Sjkim pand %xmm12,%xmm13 2081238405Sjkim pcmpgtd %xmm6,%xmm14 2082238405Sjkim pxor %xmm13,%xmm6 2083238405Sjkim movdqu 64(%r12),%xmm11 2084238405Sjkim pxor %xmm10,%xmm2 2085238405Sjkim pshufd $19,%xmm14,%xmm13 2086238405Sjkim pxor %xmm14,%xmm14 2087238405Sjkim movdqa %xmm6,%xmm5 2088238405Sjkim movdqa %xmm6,96(%rsp) 2089238405Sjkim paddq %xmm6,%xmm6 2090238405Sjkim pand %xmm12,%xmm13 2091238405Sjkim pcmpgtd %xmm6,%xmm14 2092238405Sjkim pxor %xmm13,%xmm6 2093238405Sjkim movdqu 80(%r12),%xmm12 2094238405Sjkim pxor %xmm11,%xmm3 2095238405Sjkim movdqu 96(%r12),%xmm13 2096238405Sjkim pxor %xmm12,%xmm4 2097238405Sjkim movdqu 112(%r12),%xmm14 2098238405Sjkim leaq 128(%r12),%r12 2099238405Sjkim movdqa %xmm6,112(%rsp) 2100238405Sjkim pxor %xmm13,%xmm5 2101238405Sjkim leaq 128(%rsp),%rax 2102238405Sjkim pxor %xmm14,%xmm6 2103238405Sjkim movl %edx,%r10d 2104238405Sjkim 2105238405Sjkim call _bsaes_decrypt8 2106238405Sjkim 2107238405Sjkim pxor 0(%rsp),%xmm15 2108238405Sjkim pxor 16(%rsp),%xmm0 2109238405Sjkim movdqu %xmm15,0(%r13) 2110238405Sjkim pxor 32(%rsp),%xmm5 2111238405Sjkim movdqu %xmm0,16(%r13) 2112238405Sjkim pxor 48(%rsp),%xmm3 2113238405Sjkim movdqu %xmm5,32(%r13) 2114238405Sjkim pxor 64(%rsp),%xmm1 2115238405Sjkim movdqu %xmm3,48(%r13) 2116238405Sjkim pxor 80(%rsp),%xmm6 2117238405Sjkim movdqu %xmm1,64(%r13) 2118238405Sjkim pxor 96(%rsp),%xmm2 2119238405Sjkim movdqu %xmm6,80(%r13) 2120238405Sjkim pxor 112(%rsp),%xmm4 2121238405Sjkim movdqu %xmm2,96(%r13) 2122238405Sjkim movdqu %xmm4,112(%r13) 2123238405Sjkim leaq 128(%r13),%r13 2124238405Sjkim 2125238405Sjkim movdqa 112(%rsp),%xmm6 2126238405Sjkim pxor %xmm14,%xmm14 2127238405Sjkim movdqa .Lxts_magic(%rip),%xmm12 2128238405Sjkim pcmpgtd %xmm6,%xmm14 2129238405Sjkim pshufd $19,%xmm14,%xmm13 2130238405Sjkim pxor %xmm14,%xmm14 2131238405Sjkim paddq %xmm6,%xmm6 2132238405Sjkim pand %xmm12,%xmm13 2133238405Sjkim pcmpgtd %xmm6,%xmm14 2134238405Sjkim pxor %xmm13,%xmm6 2135238405Sjkim 2136238405Sjkim subq $128,%r14 2137238405Sjkim jnc .Lxts_dec_loop 2138238405Sjkim 2139238405Sjkim.Lxts_dec_short: 2140238405Sjkim addq $128,%r14 2141238405Sjkim jz .Lxts_dec_done 2142238405Sjkim pshufd $19,%xmm14,%xmm13 2143238405Sjkim pxor %xmm14,%xmm14 2144238405Sjkim movdqa %xmm6,%xmm15 2145238405Sjkim movdqa %xmm6,0(%rsp) 2146238405Sjkim paddq %xmm6,%xmm6 2147238405Sjkim pand %xmm12,%xmm13 2148238405Sjkim pcmpgtd %xmm6,%xmm14 2149238405Sjkim pxor %xmm13,%xmm6 2150238405Sjkim pshufd $19,%xmm14,%xmm13 2151238405Sjkim pxor %xmm14,%xmm14 2152238405Sjkim movdqa %xmm6,%xmm0 2153238405Sjkim movdqa %xmm6,16(%rsp) 2154238405Sjkim paddq %xmm6,%xmm6 2155238405Sjkim pand %xmm12,%xmm13 2156238405Sjkim pcmpgtd %xmm6,%xmm14 2157238405Sjkim pxor %xmm13,%xmm6 2158238405Sjkim movdqu 0(%r12),%xmm7 2159238405Sjkim cmpq $16,%r14 2160238405Sjkim je .Lxts_dec_1 2161238405Sjkim pshufd $19,%xmm14,%xmm13 2162238405Sjkim pxor %xmm14,%xmm14 2163238405Sjkim movdqa %xmm6,%xmm1 2164238405Sjkim movdqa %xmm6,32(%rsp) 2165238405Sjkim paddq %xmm6,%xmm6 2166238405Sjkim pand %xmm12,%xmm13 2167238405Sjkim pcmpgtd %xmm6,%xmm14 2168238405Sjkim pxor %xmm13,%xmm6 2169238405Sjkim movdqu 16(%r12),%xmm8 2170238405Sjkim cmpq $32,%r14 2171238405Sjkim je .Lxts_dec_2 2172238405Sjkim pxor %xmm7,%xmm15 2173238405Sjkim pshufd $19,%xmm14,%xmm13 2174238405Sjkim pxor %xmm14,%xmm14 2175238405Sjkim movdqa %xmm6,%xmm2 2176238405Sjkim movdqa %xmm6,48(%rsp) 2177238405Sjkim paddq %xmm6,%xmm6 2178238405Sjkim pand %xmm12,%xmm13 2179238405Sjkim pcmpgtd %xmm6,%xmm14 2180238405Sjkim pxor %xmm13,%xmm6 2181238405Sjkim movdqu 32(%r12),%xmm9 2182238405Sjkim cmpq $48,%r14 2183238405Sjkim je .Lxts_dec_3 2184238405Sjkim pxor %xmm8,%xmm0 2185238405Sjkim pshufd $19,%xmm14,%xmm13 2186238405Sjkim pxor %xmm14,%xmm14 2187238405Sjkim movdqa %xmm6,%xmm3 2188238405Sjkim movdqa %xmm6,64(%rsp) 2189238405Sjkim paddq %xmm6,%xmm6 2190238405Sjkim pand %xmm12,%xmm13 2191238405Sjkim pcmpgtd %xmm6,%xmm14 2192238405Sjkim pxor %xmm13,%xmm6 2193238405Sjkim movdqu 48(%r12),%xmm10 2194238405Sjkim cmpq $64,%r14 2195238405Sjkim je .Lxts_dec_4 2196238405Sjkim pxor %xmm9,%xmm1 2197238405Sjkim pshufd $19,%xmm14,%xmm13 2198238405Sjkim pxor %xmm14,%xmm14 2199238405Sjkim movdqa %xmm6,%xmm4 2200238405Sjkim movdqa %xmm6,80(%rsp) 2201238405Sjkim paddq %xmm6,%xmm6 2202238405Sjkim pand %xmm12,%xmm13 2203238405Sjkim pcmpgtd %xmm6,%xmm14 2204238405Sjkim pxor %xmm13,%xmm6 2205238405Sjkim movdqu 64(%r12),%xmm11 2206238405Sjkim cmpq $80,%r14 2207238405Sjkim je .Lxts_dec_5 2208238405Sjkim pxor %xmm10,%xmm2 2209238405Sjkim pshufd $19,%xmm14,%xmm13 2210238405Sjkim pxor %xmm14,%xmm14 2211238405Sjkim movdqa %xmm6,%xmm5 2212238405Sjkim movdqa %xmm6,96(%rsp) 2213238405Sjkim paddq %xmm6,%xmm6 2214238405Sjkim pand %xmm12,%xmm13 2215238405Sjkim pcmpgtd %xmm6,%xmm14 2216238405Sjkim pxor %xmm13,%xmm6 2217238405Sjkim movdqu 80(%r12),%xmm12 2218238405Sjkim cmpq $96,%r14 2219238405Sjkim je .Lxts_dec_6 2220238405Sjkim pxor %xmm11,%xmm3 2221238405Sjkim movdqu 96(%r12),%xmm13 2222238405Sjkim pxor %xmm12,%xmm4 2223238405Sjkim movdqa %xmm6,112(%rsp) 2224238405Sjkim leaq 112(%r12),%r12 2225238405Sjkim pxor %xmm13,%xmm5 2226238405Sjkim leaq 128(%rsp),%rax 2227238405Sjkim movl %edx,%r10d 2228238405Sjkim 2229238405Sjkim call _bsaes_decrypt8 2230238405Sjkim 2231238405Sjkim pxor 0(%rsp),%xmm15 2232238405Sjkim pxor 16(%rsp),%xmm0 2233238405Sjkim movdqu %xmm15,0(%r13) 2234238405Sjkim pxor 32(%rsp),%xmm5 2235238405Sjkim movdqu %xmm0,16(%r13) 2236238405Sjkim pxor 48(%rsp),%xmm3 2237238405Sjkim movdqu %xmm5,32(%r13) 2238238405Sjkim pxor 64(%rsp),%xmm1 2239238405Sjkim movdqu %xmm3,48(%r13) 2240238405Sjkim pxor 80(%rsp),%xmm6 2241238405Sjkim movdqu %xmm1,64(%r13) 2242238405Sjkim pxor 96(%rsp),%xmm2 2243238405Sjkim movdqu %xmm6,80(%r13) 2244238405Sjkim movdqu %xmm2,96(%r13) 2245238405Sjkim leaq 112(%r13),%r13 2246238405Sjkim 2247238405Sjkim movdqa 112(%rsp),%xmm6 2248238405Sjkim jmp .Lxts_dec_done 2249238405Sjkim.align 16 2250238405Sjkim.Lxts_dec_6: 2251238405Sjkim pxor %xmm11,%xmm3 2252238405Sjkim leaq 96(%r12),%r12 2253238405Sjkim pxor %xmm12,%xmm4 2254238405Sjkim leaq 128(%rsp),%rax 2255238405Sjkim movl %edx,%r10d 2256238405Sjkim 2257238405Sjkim call _bsaes_decrypt8 2258238405Sjkim 2259238405Sjkim pxor 0(%rsp),%xmm15 2260238405Sjkim pxor 16(%rsp),%xmm0 2261238405Sjkim movdqu %xmm15,0(%r13) 2262238405Sjkim pxor 32(%rsp),%xmm5 2263238405Sjkim movdqu %xmm0,16(%r13) 2264238405Sjkim pxor 48(%rsp),%xmm3 2265238405Sjkim movdqu %xmm5,32(%r13) 2266238405Sjkim pxor 64(%rsp),%xmm1 2267238405Sjkim movdqu %xmm3,48(%r13) 2268238405Sjkim pxor 80(%rsp),%xmm6 2269238405Sjkim movdqu %xmm1,64(%r13) 2270238405Sjkim movdqu %xmm6,80(%r13) 2271238405Sjkim leaq 96(%r13),%r13 2272238405Sjkim 2273238405Sjkim movdqa 96(%rsp),%xmm6 2274238405Sjkim jmp .Lxts_dec_done 2275238405Sjkim.align 16 2276238405Sjkim.Lxts_dec_5: 2277238405Sjkim pxor %xmm10,%xmm2 2278238405Sjkim leaq 80(%r12),%r12 2279238405Sjkim pxor %xmm11,%xmm3 2280238405Sjkim leaq 128(%rsp),%rax 2281238405Sjkim movl %edx,%r10d 2282238405Sjkim 2283238405Sjkim call _bsaes_decrypt8 2284238405Sjkim 2285238405Sjkim pxor 0(%rsp),%xmm15 2286238405Sjkim pxor 16(%rsp),%xmm0 2287238405Sjkim movdqu %xmm15,0(%r13) 2288238405Sjkim pxor 32(%rsp),%xmm5 2289238405Sjkim movdqu %xmm0,16(%r13) 2290238405Sjkim pxor 48(%rsp),%xmm3 2291238405Sjkim movdqu %xmm5,32(%r13) 2292238405Sjkim pxor 64(%rsp),%xmm1 2293238405Sjkim movdqu %xmm3,48(%r13) 2294238405Sjkim movdqu %xmm1,64(%r13) 2295238405Sjkim leaq 80(%r13),%r13 2296238405Sjkim 2297238405Sjkim movdqa 80(%rsp),%xmm6 2298238405Sjkim jmp .Lxts_dec_done 2299238405Sjkim.align 16 2300238405Sjkim.Lxts_dec_4: 2301238405Sjkim pxor %xmm9,%xmm1 2302238405Sjkim leaq 64(%r12),%r12 2303238405Sjkim pxor %xmm10,%xmm2 2304238405Sjkim leaq 128(%rsp),%rax 2305238405Sjkim movl %edx,%r10d 2306238405Sjkim 2307238405Sjkim call _bsaes_decrypt8 2308238405Sjkim 2309238405Sjkim pxor 0(%rsp),%xmm15 2310238405Sjkim pxor 16(%rsp),%xmm0 2311238405Sjkim movdqu %xmm15,0(%r13) 2312238405Sjkim pxor 32(%rsp),%xmm5 2313238405Sjkim movdqu %xmm0,16(%r13) 2314238405Sjkim pxor 48(%rsp),%xmm3 2315238405Sjkim movdqu %xmm5,32(%r13) 2316238405Sjkim movdqu %xmm3,48(%r13) 2317238405Sjkim leaq 64(%r13),%r13 2318238405Sjkim 2319238405Sjkim movdqa 64(%rsp),%xmm6 2320238405Sjkim jmp .Lxts_dec_done 2321238405Sjkim.align 16 2322238405Sjkim.Lxts_dec_3: 2323238405Sjkim pxor %xmm8,%xmm0 2324238405Sjkim leaq 48(%r12),%r12 2325238405Sjkim pxor %xmm9,%xmm1 2326238405Sjkim leaq 128(%rsp),%rax 2327238405Sjkim movl %edx,%r10d 2328238405Sjkim 2329238405Sjkim call _bsaes_decrypt8 2330238405Sjkim 2331238405Sjkim pxor 0(%rsp),%xmm15 2332238405Sjkim pxor 16(%rsp),%xmm0 2333238405Sjkim movdqu %xmm15,0(%r13) 2334238405Sjkim pxor 32(%rsp),%xmm5 2335238405Sjkim movdqu %xmm0,16(%r13) 2336238405Sjkim movdqu %xmm5,32(%r13) 2337238405Sjkim leaq 48(%r13),%r13 2338238405Sjkim 2339238405Sjkim movdqa 48(%rsp),%xmm6 2340238405Sjkim jmp .Lxts_dec_done 2341238405Sjkim.align 16 2342238405Sjkim.Lxts_dec_2: 2343238405Sjkim pxor %xmm7,%xmm15 2344238405Sjkim leaq 32(%r12),%r12 2345238405Sjkim pxor %xmm8,%xmm0 2346238405Sjkim leaq 128(%rsp),%rax 2347238405Sjkim movl %edx,%r10d 2348238405Sjkim 2349238405Sjkim call _bsaes_decrypt8 2350238405Sjkim 2351238405Sjkim pxor 0(%rsp),%xmm15 2352238405Sjkim pxor 16(%rsp),%xmm0 2353238405Sjkim movdqu %xmm15,0(%r13) 2354238405Sjkim movdqu %xmm0,16(%r13) 2355238405Sjkim leaq 32(%r13),%r13 2356238405Sjkim 2357238405Sjkim movdqa 32(%rsp),%xmm6 2358238405Sjkim jmp .Lxts_dec_done 2359238405Sjkim.align 16 2360238405Sjkim.Lxts_dec_1: 2361238405Sjkim pxor %xmm15,%xmm7 2362238405Sjkim leaq 16(%r12),%r12 2363238405Sjkim movdqa %xmm7,32(%rbp) 2364238405Sjkim leaq 32(%rbp),%rdi 2365238405Sjkim leaq 32(%rbp),%rsi 2366238405Sjkim leaq (%r15),%rdx 2367238405Sjkim call asm_AES_decrypt 2368238405Sjkim pxor 32(%rbp),%xmm15 2369238405Sjkim 2370238405Sjkim 2371238405Sjkim 2372238405Sjkim 2373238405Sjkim 2374238405Sjkim movdqu %xmm15,0(%r13) 2375238405Sjkim leaq 16(%r13),%r13 2376238405Sjkim 2377238405Sjkim movdqa 16(%rsp),%xmm6 2378238405Sjkim 2379238405Sjkim.Lxts_dec_done: 2380238405Sjkim andl $15,%ebx 2381238405Sjkim jz .Lxts_dec_ret 2382238405Sjkim 2383238405Sjkim pxor %xmm14,%xmm14 2384238405Sjkim movdqa .Lxts_magic(%rip),%xmm12 2385238405Sjkim pcmpgtd %xmm6,%xmm14 2386238405Sjkim pshufd $19,%xmm14,%xmm13 2387238405Sjkim movdqa %xmm6,%xmm5 2388238405Sjkim paddq %xmm6,%xmm6 2389238405Sjkim pand %xmm12,%xmm13 2390238405Sjkim movdqu (%r12),%xmm15 2391238405Sjkim pxor %xmm13,%xmm6 2392238405Sjkim 2393238405Sjkim leaq 32(%rbp),%rdi 2394238405Sjkim pxor %xmm6,%xmm15 2395238405Sjkim leaq 32(%rbp),%rsi 2396238405Sjkim movdqa %xmm15,32(%rbp) 2397238405Sjkim leaq (%r15),%rdx 2398238405Sjkim call asm_AES_decrypt 2399238405Sjkim pxor 32(%rbp),%xmm6 2400238405Sjkim movq %r13,%rdx 2401238405Sjkim movdqu %xmm6,(%r13) 2402238405Sjkim 2403238405Sjkim.Lxts_dec_steal: 2404238405Sjkim movzbl 16(%r12),%eax 2405238405Sjkim movzbl (%rdx),%ecx 2406238405Sjkim leaq 1(%r12),%r12 2407238405Sjkim movb %al,(%rdx) 2408238405Sjkim movb %cl,16(%rdx) 2409238405Sjkim leaq 1(%rdx),%rdx 2410238405Sjkim subl $1,%ebx 2411238405Sjkim jnz .Lxts_dec_steal 2412238405Sjkim 2413238405Sjkim movdqu (%r13),%xmm15 2414238405Sjkim leaq 32(%rbp),%rdi 2415238405Sjkim pxor %xmm5,%xmm15 2416238405Sjkim leaq 32(%rbp),%rsi 2417238405Sjkim movdqa %xmm15,32(%rbp) 2418238405Sjkim leaq (%r15),%rdx 2419238405Sjkim call asm_AES_decrypt 2420238405Sjkim pxor 32(%rbp),%xmm5 2421238405Sjkim movdqu %xmm5,(%r13) 2422238405Sjkim 2423238405Sjkim.Lxts_dec_ret: 2424238405Sjkim leaq (%rsp),%rax 2425238405Sjkim pxor %xmm0,%xmm0 2426238405Sjkim.Lxts_dec_bzero: 2427238405Sjkim movdqa %xmm0,0(%rax) 2428238405Sjkim movdqa %xmm0,16(%rax) 2429238405Sjkim leaq 32(%rax),%rax 2430238405Sjkim cmpq %rax,%rbp 2431238405Sjkim ja .Lxts_dec_bzero 2432238405Sjkim 2433238405Sjkim leaq (%rbp),%rsp 2434238405Sjkim movq 72(%rsp),%r15 2435238405Sjkim movq 80(%rsp),%r14 2436238405Sjkim movq 88(%rsp),%r13 2437238405Sjkim movq 96(%rsp),%r12 2438238405Sjkim movq 104(%rsp),%rbx 2439238405Sjkim movq 112(%rsp),%rax 2440238405Sjkim leaq 120(%rsp),%rsp 2441238405Sjkim movq %rax,%rbp 2442238405Sjkim.Lxts_dec_epilogue: 2443238405Sjkim .byte 0xf3,0xc3 2444238405Sjkim.size bsaes_xts_decrypt,.-bsaes_xts_decrypt 2445238405Sjkim.type _bsaes_const,@object 2446238405Sjkim.align 64 2447238405Sjkim_bsaes_const: 2448238405Sjkim.LM0ISR: 2449238405Sjkim.quad 0x0a0e0206070b0f03, 0x0004080c0d010509 2450238405Sjkim.LISRM0: 2451238405Sjkim.quad 0x01040b0e0205080f, 0x0306090c00070a0d 2452238405Sjkim.LISR: 2453238405Sjkim.quad 0x0504070602010003, 0x0f0e0d0c080b0a09 2454238405Sjkim.LBS0: 2455238405Sjkim.quad 0x5555555555555555, 0x5555555555555555 2456238405Sjkim.LBS1: 2457238405Sjkim.quad 0x3333333333333333, 0x3333333333333333 2458238405Sjkim.LBS2: 2459238405Sjkim.quad 0x0f0f0f0f0f0f0f0f, 0x0f0f0f0f0f0f0f0f 2460238405Sjkim.LSR: 2461238405Sjkim.quad 0x0504070600030201, 0x0f0e0d0c0a09080b 2462238405Sjkim.LSRM0: 2463238405Sjkim.quad 0x0304090e00050a0f, 0x01060b0c0207080d 2464238405Sjkim.LM0SR: 2465238405Sjkim.quad 0x0a0e02060f03070b, 0x0004080c05090d01 2466238405Sjkim.LSWPUP: 2467238405Sjkim.quad 0x0706050403020100, 0x0c0d0e0f0b0a0908 2468238405Sjkim.LSWPUPM0SR: 2469238405Sjkim.quad 0x0a0d02060c03070b, 0x0004080f05090e01 2470238405Sjkim.LADD1: 2471238405Sjkim.quad 0x0000000000000000, 0x0000000100000000 2472238405Sjkim.LADD2: 2473238405Sjkim.quad 0x0000000000000000, 0x0000000200000000 2474238405Sjkim.LADD3: 2475238405Sjkim.quad 0x0000000000000000, 0x0000000300000000 2476238405Sjkim.LADD4: 2477238405Sjkim.quad 0x0000000000000000, 0x0000000400000000 2478238405Sjkim.LADD5: 2479238405Sjkim.quad 0x0000000000000000, 0x0000000500000000 2480238405Sjkim.LADD6: 2481238405Sjkim.quad 0x0000000000000000, 0x0000000600000000 2482238405Sjkim.LADD7: 2483238405Sjkim.quad 0x0000000000000000, 0x0000000700000000 2484238405Sjkim.LADD8: 2485238405Sjkim.quad 0x0000000000000000, 0x0000000800000000 2486238405Sjkim.Lxts_magic: 2487238405Sjkim.long 0x87,0,1,0 2488238405Sjkim.Lmasks: 2489238405Sjkim.quad 0x0101010101010101, 0x0101010101010101 2490238405Sjkim.quad 0x0202020202020202, 0x0202020202020202 2491238405Sjkim.quad 0x0404040404040404, 0x0404040404040404 2492238405Sjkim.quad 0x0808080808080808, 0x0808080808080808 2493238405Sjkim.LM0: 2494238405Sjkim.quad 0x02060a0e03070b0f, 0x0004080c0105090d 2495238405Sjkim.L63: 2496238405Sjkim.quad 0x6363636363636363, 0x6363636363636363 2497238405Sjkim.byte 66,105,116,45,115,108,105,99,101,100,32,65,69,83,32,102,111,114,32,120,56,54,95,54,52,47,83,83,83,69,51,44,32,69,109,105,108,105,97,32,75,195,164,115,112,101,114,44,32,80,101,116,101,114,32,83,99,104,119,97,98,101,44,32,65,110,100,121,32,80,111,108,121,97,107,111,118,0 2498238405Sjkim.align 64 2499238405Sjkim.size _bsaes_const,.-_bsaes_const 2500