1238405Sjkim # $FreeBSD$ 2238405Sjkim.text 3238405Sjkim 4238405Sjkim 5238405Sjkim 6238405Sjkim 7238405Sjkim 8238405Sjkim 9238405Sjkim 10238405Sjkim 11238405Sjkim 12238405Sjkim 13238405Sjkim 14238405Sjkim 15238405Sjkim 16238405Sjkim 17238405Sjkim 18238405Sjkim 19238405Sjkim.type _vpaes_encrypt_core,@function 20238405Sjkim.align 16 21238405Sjkim_vpaes_encrypt_core: 22238405Sjkim movq %rdx,%r9 23238405Sjkim movq $16,%r11 24238405Sjkim movl 240(%rdx),%eax 25238405Sjkim movdqa %xmm9,%xmm1 26238405Sjkim movdqa .Lk_ipt(%rip),%xmm2 27238405Sjkim pandn %xmm0,%xmm1 28238405Sjkim movdqu (%r9),%xmm5 29238405Sjkim psrld $4,%xmm1 30238405Sjkim pand %xmm9,%xmm0 31238405Sjkim.byte 102,15,56,0,208 32238405Sjkim movdqa .Lk_ipt+16(%rip),%xmm0 33238405Sjkim.byte 102,15,56,0,193 34238405Sjkim pxor %xmm5,%xmm2 35238405Sjkim pxor %xmm2,%xmm0 36238405Sjkim addq $16,%r9 37238405Sjkim leaq .Lk_mc_backward(%rip),%r10 38238405Sjkim jmp .Lenc_entry 39238405Sjkim 40238405Sjkim.align 16 41238405Sjkim.Lenc_loop: 42238405Sjkim 43238405Sjkim movdqa %xmm13,%xmm4 44238405Sjkim.byte 102,15,56,0,226 45238405Sjkim pxor %xmm5,%xmm4 46238405Sjkim movdqa %xmm12,%xmm0 47238405Sjkim.byte 102,15,56,0,195 48238405Sjkim pxor %xmm4,%xmm0 49238405Sjkim movdqa %xmm15,%xmm5 50238405Sjkim.byte 102,15,56,0,234 51238405Sjkim movdqa -64(%r11,%r10,1),%xmm1 52238405Sjkim movdqa %xmm14,%xmm2 53238405Sjkim.byte 102,15,56,0,211 54238405Sjkim pxor %xmm5,%xmm2 55238405Sjkim movdqa (%r11,%r10,1),%xmm4 56238405Sjkim movdqa %xmm0,%xmm3 57238405Sjkim.byte 102,15,56,0,193 58238405Sjkim addq $16,%r9 59238405Sjkim pxor %xmm2,%xmm0 60238405Sjkim.byte 102,15,56,0,220 61238405Sjkim addq $16,%r11 62238405Sjkim pxor %xmm0,%xmm3 63238405Sjkim.byte 102,15,56,0,193 64238405Sjkim andq $48,%r11 65238405Sjkim pxor %xmm3,%xmm0 66238405Sjkim subq $1,%rax 67238405Sjkim 68238405Sjkim.Lenc_entry: 69238405Sjkim 70238405Sjkim movdqa %xmm9,%xmm1 71238405Sjkim pandn %xmm0,%xmm1 72238405Sjkim psrld $4,%xmm1 73238405Sjkim pand %xmm9,%xmm0 74238405Sjkim movdqa %xmm11,%xmm5 75238405Sjkim.byte 102,15,56,0,232 76238405Sjkim pxor %xmm1,%xmm0 77238405Sjkim movdqa %xmm10,%xmm3 78238405Sjkim.byte 102,15,56,0,217 79238405Sjkim pxor %xmm5,%xmm3 80238405Sjkim movdqa %xmm10,%xmm4 81238405Sjkim.byte 102,15,56,0,224 82238405Sjkim pxor %xmm5,%xmm4 83238405Sjkim movdqa %xmm10,%xmm2 84238405Sjkim.byte 102,15,56,0,211 85238405Sjkim pxor %xmm0,%xmm2 86238405Sjkim movdqa %xmm10,%xmm3 87238405Sjkim movdqu (%r9),%xmm5 88238405Sjkim.byte 102,15,56,0,220 89238405Sjkim pxor %xmm1,%xmm3 90238405Sjkim jnz .Lenc_loop 91238405Sjkim 92238405Sjkim 93238405Sjkim movdqa -96(%r10),%xmm4 94238405Sjkim movdqa -80(%r10),%xmm0 95238405Sjkim.byte 102,15,56,0,226 96238405Sjkim pxor %xmm5,%xmm4 97238405Sjkim.byte 102,15,56,0,195 98238405Sjkim movdqa 64(%r11,%r10,1),%xmm1 99238405Sjkim pxor %xmm4,%xmm0 100238405Sjkim.byte 102,15,56,0,193 101238405Sjkim .byte 0xf3,0xc3 102238405Sjkim.size _vpaes_encrypt_core,.-_vpaes_encrypt_core 103238405Sjkim 104238405Sjkim 105238405Sjkim 106238405Sjkim 107238405Sjkim 108238405Sjkim 109238405Sjkim.type _vpaes_decrypt_core,@function 110238405Sjkim.align 16 111238405Sjkim_vpaes_decrypt_core: 112238405Sjkim movq %rdx,%r9 113238405Sjkim movl 240(%rdx),%eax 114238405Sjkim movdqa %xmm9,%xmm1 115238405Sjkim movdqa .Lk_dipt(%rip),%xmm2 116238405Sjkim pandn %xmm0,%xmm1 117238405Sjkim movq %rax,%r11 118238405Sjkim psrld $4,%xmm1 119238405Sjkim movdqu (%r9),%xmm5 120238405Sjkim shlq $4,%r11 121238405Sjkim pand %xmm9,%xmm0 122238405Sjkim.byte 102,15,56,0,208 123238405Sjkim movdqa .Lk_dipt+16(%rip),%xmm0 124238405Sjkim xorq $48,%r11 125238405Sjkim leaq .Lk_dsbd(%rip),%r10 126238405Sjkim.byte 102,15,56,0,193 127238405Sjkim andq $48,%r11 128238405Sjkim pxor %xmm5,%xmm2 129238405Sjkim movdqa .Lk_mc_forward+48(%rip),%xmm5 130238405Sjkim pxor %xmm2,%xmm0 131238405Sjkim addq $16,%r9 132238405Sjkim addq %r10,%r11 133238405Sjkim jmp .Ldec_entry 134238405Sjkim 135238405Sjkim.align 16 136238405Sjkim.Ldec_loop: 137238405Sjkim 138238405Sjkim 139238405Sjkim 140238405Sjkim movdqa -32(%r10),%xmm4 141238405Sjkim.byte 102,15,56,0,226 142238405Sjkim pxor %xmm0,%xmm4 143238405Sjkim movdqa -16(%r10),%xmm0 144238405Sjkim.byte 102,15,56,0,195 145238405Sjkim pxor %xmm4,%xmm0 146238405Sjkim addq $16,%r9 147238405Sjkim 148238405Sjkim.byte 102,15,56,0,197 149238405Sjkim movdqa 0(%r10),%xmm4 150238405Sjkim.byte 102,15,56,0,226 151238405Sjkim pxor %xmm0,%xmm4 152238405Sjkim movdqa 16(%r10),%xmm0 153238405Sjkim.byte 102,15,56,0,195 154238405Sjkim pxor %xmm4,%xmm0 155238405Sjkim subq $1,%rax 156238405Sjkim 157238405Sjkim.byte 102,15,56,0,197 158238405Sjkim movdqa 32(%r10),%xmm4 159238405Sjkim.byte 102,15,56,0,226 160238405Sjkim pxor %xmm0,%xmm4 161238405Sjkim movdqa 48(%r10),%xmm0 162238405Sjkim.byte 102,15,56,0,195 163238405Sjkim pxor %xmm4,%xmm0 164238405Sjkim 165238405Sjkim.byte 102,15,56,0,197 166238405Sjkim movdqa 64(%r10),%xmm4 167238405Sjkim.byte 102,15,56,0,226 168238405Sjkim pxor %xmm0,%xmm4 169238405Sjkim movdqa 80(%r10),%xmm0 170238405Sjkim.byte 102,15,56,0,195 171238405Sjkim pxor %xmm4,%xmm0 172238405Sjkim 173238405Sjkim.byte 102,15,58,15,237,12 174238405Sjkim 175238405Sjkim.Ldec_entry: 176238405Sjkim 177238405Sjkim movdqa %xmm9,%xmm1 178238405Sjkim pandn %xmm0,%xmm1 179238405Sjkim psrld $4,%xmm1 180238405Sjkim pand %xmm9,%xmm0 181238405Sjkim movdqa %xmm11,%xmm2 182238405Sjkim.byte 102,15,56,0,208 183238405Sjkim pxor %xmm1,%xmm0 184238405Sjkim movdqa %xmm10,%xmm3 185238405Sjkim.byte 102,15,56,0,217 186238405Sjkim pxor %xmm2,%xmm3 187238405Sjkim movdqa %xmm10,%xmm4 188238405Sjkim.byte 102,15,56,0,224 189238405Sjkim pxor %xmm2,%xmm4 190238405Sjkim movdqa %xmm10,%xmm2 191238405Sjkim.byte 102,15,56,0,211 192238405Sjkim pxor %xmm0,%xmm2 193238405Sjkim movdqa %xmm10,%xmm3 194238405Sjkim.byte 102,15,56,0,220 195238405Sjkim pxor %xmm1,%xmm3 196238405Sjkim movdqu (%r9),%xmm0 197238405Sjkim jnz .Ldec_loop 198238405Sjkim 199238405Sjkim 200238405Sjkim movdqa 96(%r10),%xmm4 201238405Sjkim.byte 102,15,56,0,226 202238405Sjkim pxor %xmm0,%xmm4 203238405Sjkim movdqa 112(%r10),%xmm0 204238405Sjkim movdqa -352(%r11),%xmm2 205238405Sjkim.byte 102,15,56,0,195 206238405Sjkim pxor %xmm4,%xmm0 207238405Sjkim.byte 102,15,56,0,194 208238405Sjkim .byte 0xf3,0xc3 209238405Sjkim.size _vpaes_decrypt_core,.-_vpaes_decrypt_core 210238405Sjkim 211238405Sjkim 212238405Sjkim 213238405Sjkim 214238405Sjkim 215238405Sjkim 216238405Sjkim.type _vpaes_schedule_core,@function 217238405Sjkim.align 16 218238405Sjkim_vpaes_schedule_core: 219238405Sjkim 220238405Sjkim 221238405Sjkim 222238405Sjkim 223238405Sjkim 224238405Sjkim call _vpaes_preheat 225238405Sjkim movdqa .Lk_rcon(%rip),%xmm8 226238405Sjkim movdqu (%rdi),%xmm0 227238405Sjkim 228238405Sjkim 229238405Sjkim movdqa %xmm0,%xmm3 230238405Sjkim leaq .Lk_ipt(%rip),%r11 231238405Sjkim call _vpaes_schedule_transform 232238405Sjkim movdqa %xmm0,%xmm7 233238405Sjkim 234238405Sjkim leaq .Lk_sr(%rip),%r10 235238405Sjkim testq %rcx,%rcx 236238405Sjkim jnz .Lschedule_am_decrypting 237238405Sjkim 238238405Sjkim 239238405Sjkim movdqu %xmm0,(%rdx) 240238405Sjkim jmp .Lschedule_go 241238405Sjkim 242238405Sjkim.Lschedule_am_decrypting: 243238405Sjkim 244238405Sjkim movdqa (%r8,%r10,1),%xmm1 245238405Sjkim.byte 102,15,56,0,217 246238405Sjkim movdqu %xmm3,(%rdx) 247238405Sjkim xorq $48,%r8 248238405Sjkim 249238405Sjkim.Lschedule_go: 250238405Sjkim cmpl $192,%esi 251238405Sjkim ja .Lschedule_256 252238405Sjkim je .Lschedule_192 253238405Sjkim 254238405Sjkim 255238405Sjkim 256238405Sjkim 257238405Sjkim 258238405Sjkim 259238405Sjkim 260238405Sjkim 261238405Sjkim 262238405Sjkim 263238405Sjkim.Lschedule_128: 264238405Sjkim movl $10,%esi 265238405Sjkim 266238405Sjkim.Loop_schedule_128: 267238405Sjkim call _vpaes_schedule_round 268238405Sjkim decq %rsi 269238405Sjkim jz .Lschedule_mangle_last 270238405Sjkim call _vpaes_schedule_mangle 271238405Sjkim jmp .Loop_schedule_128 272238405Sjkim 273238405Sjkim 274238405Sjkim 275238405Sjkim 276238405Sjkim 277238405Sjkim 278238405Sjkim 279238405Sjkim 280238405Sjkim 281238405Sjkim 282238405Sjkim 283238405Sjkim 284238405Sjkim 285238405Sjkim 286238405Sjkim 287238405Sjkim 288238405Sjkim.align 16 289238405Sjkim.Lschedule_192: 290238405Sjkim movdqu 8(%rdi),%xmm0 291238405Sjkim call _vpaes_schedule_transform 292238405Sjkim movdqa %xmm0,%xmm6 293238405Sjkim pxor %xmm4,%xmm4 294238405Sjkim movhlps %xmm4,%xmm6 295238405Sjkim movl $4,%esi 296238405Sjkim 297238405Sjkim.Loop_schedule_192: 298238405Sjkim call _vpaes_schedule_round 299238405Sjkim.byte 102,15,58,15,198,8 300238405Sjkim call _vpaes_schedule_mangle 301238405Sjkim call _vpaes_schedule_192_smear 302238405Sjkim call _vpaes_schedule_mangle 303238405Sjkim call _vpaes_schedule_round 304238405Sjkim decq %rsi 305238405Sjkim jz .Lschedule_mangle_last 306238405Sjkim call _vpaes_schedule_mangle 307238405Sjkim call _vpaes_schedule_192_smear 308238405Sjkim jmp .Loop_schedule_192 309238405Sjkim 310238405Sjkim 311238405Sjkim 312238405Sjkim 313238405Sjkim 314238405Sjkim 315238405Sjkim 316238405Sjkim 317238405Sjkim 318238405Sjkim 319238405Sjkim 320238405Sjkim.align 16 321238405Sjkim.Lschedule_256: 322238405Sjkim movdqu 16(%rdi),%xmm0 323238405Sjkim call _vpaes_schedule_transform 324238405Sjkim movl $7,%esi 325238405Sjkim 326238405Sjkim.Loop_schedule_256: 327238405Sjkim call _vpaes_schedule_mangle 328238405Sjkim movdqa %xmm0,%xmm6 329238405Sjkim 330238405Sjkim 331238405Sjkim call _vpaes_schedule_round 332238405Sjkim decq %rsi 333238405Sjkim jz .Lschedule_mangle_last 334238405Sjkim call _vpaes_schedule_mangle 335238405Sjkim 336238405Sjkim 337238405Sjkim pshufd $255,%xmm0,%xmm0 338238405Sjkim movdqa %xmm7,%xmm5 339238405Sjkim movdqa %xmm6,%xmm7 340238405Sjkim call _vpaes_schedule_low_round 341238405Sjkim movdqa %xmm5,%xmm7 342238405Sjkim 343238405Sjkim jmp .Loop_schedule_256 344238405Sjkim 345238405Sjkim 346238405Sjkim 347238405Sjkim 348238405Sjkim 349238405Sjkim 350238405Sjkim 351238405Sjkim 352238405Sjkim 353238405Sjkim 354238405Sjkim 355238405Sjkim 356238405Sjkim.align 16 357238405Sjkim.Lschedule_mangle_last: 358238405Sjkim 359238405Sjkim leaq .Lk_deskew(%rip),%r11 360238405Sjkim testq %rcx,%rcx 361238405Sjkim jnz .Lschedule_mangle_last_dec 362238405Sjkim 363238405Sjkim 364238405Sjkim movdqa (%r8,%r10,1),%xmm1 365238405Sjkim.byte 102,15,56,0,193 366238405Sjkim leaq .Lk_opt(%rip),%r11 367238405Sjkim addq $32,%rdx 368238405Sjkim 369238405Sjkim.Lschedule_mangle_last_dec: 370238405Sjkim addq $-16,%rdx 371238405Sjkim pxor .Lk_s63(%rip),%xmm0 372238405Sjkim call _vpaes_schedule_transform 373238405Sjkim movdqu %xmm0,(%rdx) 374238405Sjkim 375238405Sjkim 376238405Sjkim pxor %xmm0,%xmm0 377238405Sjkim pxor %xmm1,%xmm1 378238405Sjkim pxor %xmm2,%xmm2 379238405Sjkim pxor %xmm3,%xmm3 380238405Sjkim pxor %xmm4,%xmm4 381238405Sjkim pxor %xmm5,%xmm5 382238405Sjkim pxor %xmm6,%xmm6 383238405Sjkim pxor %xmm7,%xmm7 384238405Sjkim .byte 0xf3,0xc3 385238405Sjkim.size _vpaes_schedule_core,.-_vpaes_schedule_core 386238405Sjkim 387238405Sjkim 388238405Sjkim 389238405Sjkim 390238405Sjkim 391238405Sjkim 392238405Sjkim 393238405Sjkim 394238405Sjkim 395238405Sjkim 396238405Sjkim 397238405Sjkim 398238405Sjkim 399238405Sjkim 400238405Sjkim 401238405Sjkim.type _vpaes_schedule_192_smear,@function 402238405Sjkim.align 16 403238405Sjkim_vpaes_schedule_192_smear: 404238405Sjkim pshufd $128,%xmm6,%xmm0 405238405Sjkim pxor %xmm0,%xmm6 406238405Sjkim pshufd $254,%xmm7,%xmm0 407238405Sjkim pxor %xmm0,%xmm6 408238405Sjkim movdqa %xmm6,%xmm0 409238405Sjkim pxor %xmm1,%xmm1 410238405Sjkim movhlps %xmm1,%xmm6 411238405Sjkim .byte 0xf3,0xc3 412238405Sjkim.size _vpaes_schedule_192_smear,.-_vpaes_schedule_192_smear 413238405Sjkim 414238405Sjkim 415238405Sjkim 416238405Sjkim 417238405Sjkim 418238405Sjkim 419238405Sjkim 420238405Sjkim 421238405Sjkim 422238405Sjkim 423238405Sjkim 424238405Sjkim 425238405Sjkim 426238405Sjkim 427238405Sjkim 428238405Sjkim 429238405Sjkim 430238405Sjkim 431238405Sjkim 432238405Sjkim.type _vpaes_schedule_round,@function 433238405Sjkim.align 16 434238405Sjkim_vpaes_schedule_round: 435238405Sjkim 436238405Sjkim pxor %xmm1,%xmm1 437238405Sjkim.byte 102,65,15,58,15,200,15 438238405Sjkim.byte 102,69,15,58,15,192,15 439238405Sjkim pxor %xmm1,%xmm7 440238405Sjkim 441238405Sjkim 442238405Sjkim pshufd $255,%xmm0,%xmm0 443238405Sjkim.byte 102,15,58,15,192,1 444238405Sjkim 445238405Sjkim 446238405Sjkim 447238405Sjkim 448238405Sjkim_vpaes_schedule_low_round: 449238405Sjkim 450238405Sjkim movdqa %xmm7,%xmm1 451238405Sjkim pslldq $4,%xmm7 452238405Sjkim pxor %xmm1,%xmm7 453238405Sjkim movdqa %xmm7,%xmm1 454238405Sjkim pslldq $8,%xmm7 455238405Sjkim pxor %xmm1,%xmm7 456238405Sjkim pxor .Lk_s63(%rip),%xmm7 457238405Sjkim 458238405Sjkim 459238405Sjkim movdqa %xmm9,%xmm1 460238405Sjkim pandn %xmm0,%xmm1 461238405Sjkim psrld $4,%xmm1 462238405Sjkim pand %xmm9,%xmm0 463238405Sjkim movdqa %xmm11,%xmm2 464238405Sjkim.byte 102,15,56,0,208 465238405Sjkim pxor %xmm1,%xmm0 466238405Sjkim movdqa %xmm10,%xmm3 467238405Sjkim.byte 102,15,56,0,217 468238405Sjkim pxor %xmm2,%xmm3 469238405Sjkim movdqa %xmm10,%xmm4 470238405Sjkim.byte 102,15,56,0,224 471238405Sjkim pxor %xmm2,%xmm4 472238405Sjkim movdqa %xmm10,%xmm2 473238405Sjkim.byte 102,15,56,0,211 474238405Sjkim pxor %xmm0,%xmm2 475238405Sjkim movdqa %xmm10,%xmm3 476238405Sjkim.byte 102,15,56,0,220 477238405Sjkim pxor %xmm1,%xmm3 478238405Sjkim movdqa %xmm13,%xmm4 479238405Sjkim.byte 102,15,56,0,226 480238405Sjkim movdqa %xmm12,%xmm0 481238405Sjkim.byte 102,15,56,0,195 482238405Sjkim pxor %xmm4,%xmm0 483238405Sjkim 484238405Sjkim 485238405Sjkim pxor %xmm7,%xmm0 486238405Sjkim movdqa %xmm0,%xmm7 487238405Sjkim .byte 0xf3,0xc3 488238405Sjkim.size _vpaes_schedule_round,.-_vpaes_schedule_round 489238405Sjkim 490238405Sjkim 491238405Sjkim 492238405Sjkim 493238405Sjkim 494238405Sjkim 495238405Sjkim 496238405Sjkim 497238405Sjkim 498238405Sjkim 499238405Sjkim.type _vpaes_schedule_transform,@function 500238405Sjkim.align 16 501238405Sjkim_vpaes_schedule_transform: 502238405Sjkim movdqa %xmm9,%xmm1 503238405Sjkim pandn %xmm0,%xmm1 504238405Sjkim psrld $4,%xmm1 505238405Sjkim pand %xmm9,%xmm0 506238405Sjkim movdqa (%r11),%xmm2 507238405Sjkim.byte 102,15,56,0,208 508238405Sjkim movdqa 16(%r11),%xmm0 509238405Sjkim.byte 102,15,56,0,193 510238405Sjkim pxor %xmm2,%xmm0 511238405Sjkim .byte 0xf3,0xc3 512238405Sjkim.size _vpaes_schedule_transform,.-_vpaes_schedule_transform 513238405Sjkim 514238405Sjkim 515238405Sjkim 516238405Sjkim 517238405Sjkim 518238405Sjkim 519238405Sjkim 520238405Sjkim 521238405Sjkim 522238405Sjkim 523238405Sjkim 524238405Sjkim 525238405Sjkim 526238405Sjkim 527238405Sjkim 528238405Sjkim 529238405Sjkim 530238405Sjkim 531238405Sjkim 532238405Sjkim 533238405Sjkim 534238405Sjkim 535238405Sjkim 536238405Sjkim 537238405Sjkim.type _vpaes_schedule_mangle,@function 538238405Sjkim.align 16 539238405Sjkim_vpaes_schedule_mangle: 540238405Sjkim movdqa %xmm0,%xmm4 541238405Sjkim movdqa .Lk_mc_forward(%rip),%xmm5 542238405Sjkim testq %rcx,%rcx 543238405Sjkim jnz .Lschedule_mangle_dec 544238405Sjkim 545238405Sjkim 546238405Sjkim addq $16,%rdx 547238405Sjkim pxor .Lk_s63(%rip),%xmm4 548238405Sjkim.byte 102,15,56,0,229 549238405Sjkim movdqa %xmm4,%xmm3 550238405Sjkim.byte 102,15,56,0,229 551238405Sjkim pxor %xmm4,%xmm3 552238405Sjkim.byte 102,15,56,0,229 553238405Sjkim pxor %xmm4,%xmm3 554238405Sjkim 555238405Sjkim jmp .Lschedule_mangle_both 556238405Sjkim.align 16 557238405Sjkim.Lschedule_mangle_dec: 558238405Sjkim 559238405Sjkim leaq .Lk_dksd(%rip),%r11 560238405Sjkim movdqa %xmm9,%xmm1 561238405Sjkim pandn %xmm4,%xmm1 562238405Sjkim psrld $4,%xmm1 563238405Sjkim pand %xmm9,%xmm4 564238405Sjkim 565238405Sjkim movdqa 0(%r11),%xmm2 566238405Sjkim.byte 102,15,56,0,212 567238405Sjkim movdqa 16(%r11),%xmm3 568238405Sjkim.byte 102,15,56,0,217 569238405Sjkim pxor %xmm2,%xmm3 570238405Sjkim.byte 102,15,56,0,221 571238405Sjkim 572238405Sjkim movdqa 32(%r11),%xmm2 573238405Sjkim.byte 102,15,56,0,212 574238405Sjkim pxor %xmm3,%xmm2 575238405Sjkim movdqa 48(%r11),%xmm3 576238405Sjkim.byte 102,15,56,0,217 577238405Sjkim pxor %xmm2,%xmm3 578238405Sjkim.byte 102,15,56,0,221 579238405Sjkim 580238405Sjkim movdqa 64(%r11),%xmm2 581238405Sjkim.byte 102,15,56,0,212 582238405Sjkim pxor %xmm3,%xmm2 583238405Sjkim movdqa 80(%r11),%xmm3 584238405Sjkim.byte 102,15,56,0,217 585238405Sjkim pxor %xmm2,%xmm3 586238405Sjkim.byte 102,15,56,0,221 587238405Sjkim 588238405Sjkim movdqa 96(%r11),%xmm2 589238405Sjkim.byte 102,15,56,0,212 590238405Sjkim pxor %xmm3,%xmm2 591238405Sjkim movdqa 112(%r11),%xmm3 592238405Sjkim.byte 102,15,56,0,217 593238405Sjkim pxor %xmm2,%xmm3 594238405Sjkim 595238405Sjkim addq $-16,%rdx 596238405Sjkim 597238405Sjkim.Lschedule_mangle_both: 598238405Sjkim movdqa (%r8,%r10,1),%xmm1 599238405Sjkim.byte 102,15,56,0,217 600238405Sjkim addq $-16,%r8 601238405Sjkim andq $48,%r8 602238405Sjkim movdqu %xmm3,(%rdx) 603238405Sjkim .byte 0xf3,0xc3 604238405Sjkim.size _vpaes_schedule_mangle,.-_vpaes_schedule_mangle 605238405Sjkim 606238405Sjkim 607238405Sjkim 608238405Sjkim 609238405Sjkim.globl vpaes_set_encrypt_key 610238405Sjkim.type vpaes_set_encrypt_key,@function 611238405Sjkim.align 16 612238405Sjkimvpaes_set_encrypt_key: 613238405Sjkim movl %esi,%eax 614238405Sjkim shrl $5,%eax 615238405Sjkim addl $5,%eax 616238405Sjkim movl %eax,240(%rdx) 617238405Sjkim 618238405Sjkim movl $0,%ecx 619238405Sjkim movl $48,%r8d 620238405Sjkim call _vpaes_schedule_core 621238405Sjkim xorl %eax,%eax 622238405Sjkim .byte 0xf3,0xc3 623238405Sjkim.size vpaes_set_encrypt_key,.-vpaes_set_encrypt_key 624238405Sjkim 625238405Sjkim.globl vpaes_set_decrypt_key 626238405Sjkim.type vpaes_set_decrypt_key,@function 627238405Sjkim.align 16 628238405Sjkimvpaes_set_decrypt_key: 629238405Sjkim movl %esi,%eax 630238405Sjkim shrl $5,%eax 631238405Sjkim addl $5,%eax 632238405Sjkim movl %eax,240(%rdx) 633238405Sjkim shll $4,%eax 634238405Sjkim leaq 16(%rdx,%rax,1),%rdx 635238405Sjkim 636238405Sjkim movl $1,%ecx 637238405Sjkim movl %esi,%r8d 638238405Sjkim shrl $1,%r8d 639238405Sjkim andl $32,%r8d 640238405Sjkim xorl $32,%r8d 641238405Sjkim call _vpaes_schedule_core 642238405Sjkim xorl %eax,%eax 643238405Sjkim .byte 0xf3,0xc3 644238405Sjkim.size vpaes_set_decrypt_key,.-vpaes_set_decrypt_key 645238405Sjkim 646238405Sjkim.globl vpaes_encrypt 647238405Sjkim.type vpaes_encrypt,@function 648238405Sjkim.align 16 649238405Sjkimvpaes_encrypt: 650238405Sjkim movdqu (%rdi),%xmm0 651238405Sjkim call _vpaes_preheat 652238405Sjkim call _vpaes_encrypt_core 653238405Sjkim movdqu %xmm0,(%rsi) 654238405Sjkim .byte 0xf3,0xc3 655238405Sjkim.size vpaes_encrypt,.-vpaes_encrypt 656238405Sjkim 657238405Sjkim.globl vpaes_decrypt 658238405Sjkim.type vpaes_decrypt,@function 659238405Sjkim.align 16 660238405Sjkimvpaes_decrypt: 661238405Sjkim movdqu (%rdi),%xmm0 662238405Sjkim call _vpaes_preheat 663238405Sjkim call _vpaes_decrypt_core 664238405Sjkim movdqu %xmm0,(%rsi) 665238405Sjkim .byte 0xf3,0xc3 666238405Sjkim.size vpaes_decrypt,.-vpaes_decrypt 667238405Sjkim.globl vpaes_cbc_encrypt 668238405Sjkim.type vpaes_cbc_encrypt,@function 669238405Sjkim.align 16 670238405Sjkimvpaes_cbc_encrypt: 671238405Sjkim xchgq %rcx,%rdx 672238405Sjkim subq $16,%rcx 673238405Sjkim jc .Lcbc_abort 674238405Sjkim movdqu (%r8),%xmm6 675238405Sjkim subq %rdi,%rsi 676238405Sjkim call _vpaes_preheat 677238405Sjkim cmpl $0,%r9d 678238405Sjkim je .Lcbc_dec_loop 679238405Sjkim jmp .Lcbc_enc_loop 680238405Sjkim.align 16 681238405Sjkim.Lcbc_enc_loop: 682238405Sjkim movdqu (%rdi),%xmm0 683238405Sjkim pxor %xmm6,%xmm0 684238405Sjkim call _vpaes_encrypt_core 685238405Sjkim movdqa %xmm0,%xmm6 686238405Sjkim movdqu %xmm0,(%rsi,%rdi,1) 687238405Sjkim leaq 16(%rdi),%rdi 688238405Sjkim subq $16,%rcx 689238405Sjkim jnc .Lcbc_enc_loop 690238405Sjkim jmp .Lcbc_done 691238405Sjkim.align 16 692238405Sjkim.Lcbc_dec_loop: 693238405Sjkim movdqu (%rdi),%xmm0 694238405Sjkim movdqa %xmm0,%xmm7 695238405Sjkim call _vpaes_decrypt_core 696238405Sjkim pxor %xmm6,%xmm0 697238405Sjkim movdqa %xmm7,%xmm6 698238405Sjkim movdqu %xmm0,(%rsi,%rdi,1) 699238405Sjkim leaq 16(%rdi),%rdi 700238405Sjkim subq $16,%rcx 701238405Sjkim jnc .Lcbc_dec_loop 702238405Sjkim.Lcbc_done: 703238405Sjkim movdqu %xmm6,(%r8) 704238405Sjkim.Lcbc_abort: 705238405Sjkim .byte 0xf3,0xc3 706238405Sjkim.size vpaes_cbc_encrypt,.-vpaes_cbc_encrypt 707238405Sjkim 708238405Sjkim 709238405Sjkim 710238405Sjkim 711238405Sjkim 712238405Sjkim 713238405Sjkim.type _vpaes_preheat,@function 714238405Sjkim.align 16 715238405Sjkim_vpaes_preheat: 716238405Sjkim leaq .Lk_s0F(%rip),%r10 717238405Sjkim movdqa -32(%r10),%xmm10 718238405Sjkim movdqa -16(%r10),%xmm11 719238405Sjkim movdqa 0(%r10),%xmm9 720238405Sjkim movdqa 48(%r10),%xmm13 721238405Sjkim movdqa 64(%r10),%xmm12 722238405Sjkim movdqa 80(%r10),%xmm15 723238405Sjkim movdqa 96(%r10),%xmm14 724238405Sjkim .byte 0xf3,0xc3 725238405Sjkim.size _vpaes_preheat,.-_vpaes_preheat 726238405Sjkim 727238405Sjkim 728238405Sjkim 729238405Sjkim 730238405Sjkim 731238405Sjkim.type _vpaes_consts,@object 732238405Sjkim.align 64 733238405Sjkim_vpaes_consts: 734238405Sjkim.Lk_inv: 735238405Sjkim.quad 0x0E05060F0D080180, 0x040703090A0B0C02 736238405Sjkim.quad 0x01040A060F0B0780, 0x030D0E0C02050809 737238405Sjkim 738238405Sjkim.Lk_s0F: 739238405Sjkim.quad 0x0F0F0F0F0F0F0F0F, 0x0F0F0F0F0F0F0F0F 740238405Sjkim 741238405Sjkim.Lk_ipt: 742238405Sjkim.quad 0xC2B2E8985A2A7000, 0xCABAE09052227808 743238405Sjkim.quad 0x4C01307D317C4D00, 0xCD80B1FCB0FDCC81 744238405Sjkim 745238405Sjkim.Lk_sb1: 746238405Sjkim.quad 0xB19BE18FCB503E00, 0xA5DF7A6E142AF544 747238405Sjkim.quad 0x3618D415FAE22300, 0x3BF7CCC10D2ED9EF 748238405Sjkim.Lk_sb2: 749238405Sjkim.quad 0xE27A93C60B712400, 0x5EB7E955BC982FCD 750238405Sjkim.quad 0x69EB88400AE12900, 0xC2A163C8AB82234A 751238405Sjkim.Lk_sbo: 752238405Sjkim.quad 0xD0D26D176FBDC700, 0x15AABF7AC502A878 753238405Sjkim.quad 0xCFE474A55FBB6A00, 0x8E1E90D1412B35FA 754238405Sjkim 755238405Sjkim.Lk_mc_forward: 756238405Sjkim.quad 0x0407060500030201, 0x0C0F0E0D080B0A09 757238405Sjkim.quad 0x080B0A0904070605, 0x000302010C0F0E0D 758238405Sjkim.quad 0x0C0F0E0D080B0A09, 0x0407060500030201 759238405Sjkim.quad 0x000302010C0F0E0D, 0x080B0A0904070605 760238405Sjkim 761238405Sjkim.Lk_mc_backward: 762238405Sjkim.quad 0x0605040702010003, 0x0E0D0C0F0A09080B 763238405Sjkim.quad 0x020100030E0D0C0F, 0x0A09080B06050407 764238405Sjkim.quad 0x0E0D0C0F0A09080B, 0x0605040702010003 765238405Sjkim.quad 0x0A09080B06050407, 0x020100030E0D0C0F 766238405Sjkim 767238405Sjkim.Lk_sr: 768238405Sjkim.quad 0x0706050403020100, 0x0F0E0D0C0B0A0908 769238405Sjkim.quad 0x030E09040F0A0500, 0x0B06010C07020D08 770238405Sjkim.quad 0x0F060D040B020900, 0x070E050C030A0108 771238405Sjkim.quad 0x0B0E0104070A0D00, 0x0306090C0F020508 772238405Sjkim 773238405Sjkim.Lk_rcon: 774238405Sjkim.quad 0x1F8391B9AF9DEEB6, 0x702A98084D7C7D81 775238405Sjkim 776238405Sjkim.Lk_s63: 777238405Sjkim.quad 0x5B5B5B5B5B5B5B5B, 0x5B5B5B5B5B5B5B5B 778238405Sjkim 779238405Sjkim.Lk_opt: 780238405Sjkim.quad 0xFF9F4929D6B66000, 0xF7974121DEBE6808 781238405Sjkim.quad 0x01EDBD5150BCEC00, 0xE10D5DB1B05C0CE0 782238405Sjkim 783238405Sjkim.Lk_deskew: 784238405Sjkim.quad 0x07E4A34047A4E300, 0x1DFEB95A5DBEF91A 785238405Sjkim.quad 0x5F36B5DC83EA6900, 0x2841C2ABF49D1E77 786238405Sjkim 787238405Sjkim 788238405Sjkim 789238405Sjkim 790238405Sjkim 791238405Sjkim.Lk_dksd: 792238405Sjkim.quad 0xFEB91A5DA3E44700, 0x0740E3A45A1DBEF9 793238405Sjkim.quad 0x41C277F4B5368300, 0x5FDC69EAAB289D1E 794238405Sjkim.Lk_dksb: 795238405Sjkim.quad 0x9A4FCA1F8550D500, 0x03D653861CC94C99 796238405Sjkim.quad 0x115BEDA7B6FC4A00, 0xD993256F7E3482C8 797238405Sjkim.Lk_dkse: 798238405Sjkim.quad 0xD5031CCA1FC9D600, 0x53859A4C994F5086 799238405Sjkim.quad 0xA23196054FDC7BE8, 0xCD5EF96A20B31487 800238405Sjkim.Lk_dks9: 801238405Sjkim.quad 0xB6116FC87ED9A700, 0x4AED933482255BFC 802238405Sjkim.quad 0x4576516227143300, 0x8BB89FACE9DAFDCE 803238405Sjkim 804238405Sjkim 805238405Sjkim 806238405Sjkim 807238405Sjkim 808238405Sjkim.Lk_dipt: 809238405Sjkim.quad 0x0F505B040B545F00, 0x154A411E114E451A 810238405Sjkim.quad 0x86E383E660056500, 0x12771772F491F194 811238405Sjkim 812238405Sjkim.Lk_dsb9: 813238405Sjkim.quad 0x851C03539A86D600, 0xCAD51F504F994CC9 814238405Sjkim.quad 0xC03B1789ECD74900, 0x725E2C9EB2FBA565 815238405Sjkim.Lk_dsbd: 816238405Sjkim.quad 0x7D57CCDFE6B1A200, 0xF56E9B13882A4439 817238405Sjkim.quad 0x3CE2FAF724C6CB00, 0x2931180D15DEEFD3 818238405Sjkim.Lk_dsbb: 819238405Sjkim.quad 0xD022649296B44200, 0x602646F6B0F2D404 820238405Sjkim.quad 0xC19498A6CD596700, 0xF3FF0C3E3255AA6B 821238405Sjkim.Lk_dsbe: 822238405Sjkim.quad 0x46F2929626D4D000, 0x2242600464B4F6B0 823238405Sjkim.quad 0x0C55A6CDFFAAC100, 0x9467F36B98593E32 824238405Sjkim.Lk_dsbo: 825238405Sjkim.quad 0x1387EA537EF94000, 0xC7AA6DB9D4943E2D 826238405Sjkim.quad 0x12D7560F93441D00, 0xCA4B8159D8C58E9C 827279264Sdelphij.byte 86,101,99,116,111,114,32,80,101,114,109,117,116,97,116,105,111,110,32,65,69,83,32,102,111,114,32,120,56,54,95,54,52,47,83,83,83,69,51,44,32,77,105,107,101,32,72,97,109,98,117,114,103,32,40,83,116,97,110,102,111,114,100,32,85,110,105,118,101,114,115,105,116,121,41,0 828238405Sjkim.align 64 829238405Sjkim.size _vpaes_consts,.-_vpaes_consts 830