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