1238405Sjkim # $FreeBSD$ 2238405Sjkim.file "aesni-x86.s" 3238405Sjkim.text 4238405Sjkim.globl aesni_encrypt 5238405Sjkim.type aesni_encrypt,@function 6238405Sjkim.align 16 7238405Sjkimaesni_encrypt: 8238405Sjkim.L_aesni_encrypt_begin: 9238405Sjkim movl 4(%esp),%eax 10238405Sjkim movl 12(%esp),%edx 11238405Sjkim movups (%eax),%xmm2 12238405Sjkim movl 240(%edx),%ecx 13238405Sjkim movl 8(%esp),%eax 14238405Sjkim movups (%edx),%xmm0 15238405Sjkim movups 16(%edx),%xmm1 16238405Sjkim leal 32(%edx),%edx 17238405Sjkim xorps %xmm0,%xmm2 18238405Sjkim.L000enc1_loop_1: 19238405Sjkim.byte 102,15,56,220,209 20238405Sjkim decl %ecx 21238405Sjkim movups (%edx),%xmm1 22238405Sjkim leal 16(%edx),%edx 23238405Sjkim jnz .L000enc1_loop_1 24238405Sjkim.byte 102,15,56,221,209 25238405Sjkim movups %xmm2,(%eax) 26238405Sjkim ret 27238405Sjkim.size aesni_encrypt,.-.L_aesni_encrypt_begin 28238405Sjkim.globl aesni_decrypt 29238405Sjkim.type aesni_decrypt,@function 30238405Sjkim.align 16 31238405Sjkimaesni_decrypt: 32238405Sjkim.L_aesni_decrypt_begin: 33238405Sjkim movl 4(%esp),%eax 34238405Sjkim movl 12(%esp),%edx 35238405Sjkim movups (%eax),%xmm2 36238405Sjkim movl 240(%edx),%ecx 37238405Sjkim movl 8(%esp),%eax 38238405Sjkim movups (%edx),%xmm0 39238405Sjkim movups 16(%edx),%xmm1 40238405Sjkim leal 32(%edx),%edx 41238405Sjkim xorps %xmm0,%xmm2 42238405Sjkim.L001dec1_loop_2: 43238405Sjkim.byte 102,15,56,222,209 44238405Sjkim decl %ecx 45238405Sjkim movups (%edx),%xmm1 46238405Sjkim leal 16(%edx),%edx 47238405Sjkim jnz .L001dec1_loop_2 48238405Sjkim.byte 102,15,56,223,209 49238405Sjkim movups %xmm2,(%eax) 50238405Sjkim ret 51238405Sjkim.size aesni_decrypt,.-.L_aesni_decrypt_begin 52238405Sjkim.type _aesni_encrypt3,@function 53238405Sjkim.align 16 54238405Sjkim_aesni_encrypt3: 55238405Sjkim movups (%edx),%xmm0 56238405Sjkim shrl $1,%ecx 57238405Sjkim movups 16(%edx),%xmm1 58238405Sjkim leal 32(%edx),%edx 59238405Sjkim xorps %xmm0,%xmm2 60238405Sjkim pxor %xmm0,%xmm3 61238405Sjkim pxor %xmm0,%xmm4 62238405Sjkim movups (%edx),%xmm0 63238405Sjkim.L002enc3_loop: 64238405Sjkim.byte 102,15,56,220,209 65238405Sjkim.byte 102,15,56,220,217 66238405Sjkim decl %ecx 67238405Sjkim.byte 102,15,56,220,225 68238405Sjkim movups 16(%edx),%xmm1 69238405Sjkim.byte 102,15,56,220,208 70238405Sjkim.byte 102,15,56,220,216 71238405Sjkim leal 32(%edx),%edx 72238405Sjkim.byte 102,15,56,220,224 73238405Sjkim movups (%edx),%xmm0 74238405Sjkim jnz .L002enc3_loop 75238405Sjkim.byte 102,15,56,220,209 76238405Sjkim.byte 102,15,56,220,217 77238405Sjkim.byte 102,15,56,220,225 78238405Sjkim.byte 102,15,56,221,208 79238405Sjkim.byte 102,15,56,221,216 80238405Sjkim.byte 102,15,56,221,224 81238405Sjkim ret 82238405Sjkim.size _aesni_encrypt3,.-_aesni_encrypt3 83238405Sjkim.type _aesni_decrypt3,@function 84238405Sjkim.align 16 85238405Sjkim_aesni_decrypt3: 86238405Sjkim movups (%edx),%xmm0 87238405Sjkim shrl $1,%ecx 88238405Sjkim movups 16(%edx),%xmm1 89238405Sjkim leal 32(%edx),%edx 90238405Sjkim xorps %xmm0,%xmm2 91238405Sjkim pxor %xmm0,%xmm3 92238405Sjkim pxor %xmm0,%xmm4 93238405Sjkim movups (%edx),%xmm0 94238405Sjkim.L003dec3_loop: 95238405Sjkim.byte 102,15,56,222,209 96238405Sjkim.byte 102,15,56,222,217 97238405Sjkim decl %ecx 98238405Sjkim.byte 102,15,56,222,225 99238405Sjkim movups 16(%edx),%xmm1 100238405Sjkim.byte 102,15,56,222,208 101238405Sjkim.byte 102,15,56,222,216 102238405Sjkim leal 32(%edx),%edx 103238405Sjkim.byte 102,15,56,222,224 104238405Sjkim movups (%edx),%xmm0 105238405Sjkim jnz .L003dec3_loop 106238405Sjkim.byte 102,15,56,222,209 107238405Sjkim.byte 102,15,56,222,217 108238405Sjkim.byte 102,15,56,222,225 109238405Sjkim.byte 102,15,56,223,208 110238405Sjkim.byte 102,15,56,223,216 111238405Sjkim.byte 102,15,56,223,224 112238405Sjkim ret 113238405Sjkim.size _aesni_decrypt3,.-_aesni_decrypt3 114238405Sjkim.type _aesni_encrypt4,@function 115238405Sjkim.align 16 116238405Sjkim_aesni_encrypt4: 117238405Sjkim movups (%edx),%xmm0 118238405Sjkim movups 16(%edx),%xmm1 119238405Sjkim shrl $1,%ecx 120238405Sjkim leal 32(%edx),%edx 121238405Sjkim xorps %xmm0,%xmm2 122238405Sjkim pxor %xmm0,%xmm3 123238405Sjkim pxor %xmm0,%xmm4 124238405Sjkim pxor %xmm0,%xmm5 125238405Sjkim movups (%edx),%xmm0 126238405Sjkim.L004enc4_loop: 127238405Sjkim.byte 102,15,56,220,209 128238405Sjkim.byte 102,15,56,220,217 129238405Sjkim decl %ecx 130238405Sjkim.byte 102,15,56,220,225 131238405Sjkim.byte 102,15,56,220,233 132238405Sjkim movups 16(%edx),%xmm1 133238405Sjkim.byte 102,15,56,220,208 134238405Sjkim.byte 102,15,56,220,216 135238405Sjkim leal 32(%edx),%edx 136238405Sjkim.byte 102,15,56,220,224 137238405Sjkim.byte 102,15,56,220,232 138238405Sjkim movups (%edx),%xmm0 139238405Sjkim jnz .L004enc4_loop 140238405Sjkim.byte 102,15,56,220,209 141238405Sjkim.byte 102,15,56,220,217 142238405Sjkim.byte 102,15,56,220,225 143238405Sjkim.byte 102,15,56,220,233 144238405Sjkim.byte 102,15,56,221,208 145238405Sjkim.byte 102,15,56,221,216 146238405Sjkim.byte 102,15,56,221,224 147238405Sjkim.byte 102,15,56,221,232 148238405Sjkim ret 149238405Sjkim.size _aesni_encrypt4,.-_aesni_encrypt4 150238405Sjkim.type _aesni_decrypt4,@function 151238405Sjkim.align 16 152238405Sjkim_aesni_decrypt4: 153238405Sjkim movups (%edx),%xmm0 154238405Sjkim movups 16(%edx),%xmm1 155238405Sjkim shrl $1,%ecx 156238405Sjkim leal 32(%edx),%edx 157238405Sjkim xorps %xmm0,%xmm2 158238405Sjkim pxor %xmm0,%xmm3 159238405Sjkim pxor %xmm0,%xmm4 160238405Sjkim pxor %xmm0,%xmm5 161238405Sjkim movups (%edx),%xmm0 162238405Sjkim.L005dec4_loop: 163238405Sjkim.byte 102,15,56,222,209 164238405Sjkim.byte 102,15,56,222,217 165238405Sjkim decl %ecx 166238405Sjkim.byte 102,15,56,222,225 167238405Sjkim.byte 102,15,56,222,233 168238405Sjkim movups 16(%edx),%xmm1 169238405Sjkim.byte 102,15,56,222,208 170238405Sjkim.byte 102,15,56,222,216 171238405Sjkim leal 32(%edx),%edx 172238405Sjkim.byte 102,15,56,222,224 173238405Sjkim.byte 102,15,56,222,232 174238405Sjkim movups (%edx),%xmm0 175238405Sjkim jnz .L005dec4_loop 176238405Sjkim.byte 102,15,56,222,209 177238405Sjkim.byte 102,15,56,222,217 178238405Sjkim.byte 102,15,56,222,225 179238405Sjkim.byte 102,15,56,222,233 180238405Sjkim.byte 102,15,56,223,208 181238405Sjkim.byte 102,15,56,223,216 182238405Sjkim.byte 102,15,56,223,224 183238405Sjkim.byte 102,15,56,223,232 184238405Sjkim ret 185238405Sjkim.size _aesni_decrypt4,.-_aesni_decrypt4 186238405Sjkim.type _aesni_encrypt6,@function 187238405Sjkim.align 16 188238405Sjkim_aesni_encrypt6: 189238405Sjkim movups (%edx),%xmm0 190238405Sjkim shrl $1,%ecx 191238405Sjkim movups 16(%edx),%xmm1 192238405Sjkim leal 32(%edx),%edx 193238405Sjkim xorps %xmm0,%xmm2 194238405Sjkim pxor %xmm0,%xmm3 195238405Sjkim.byte 102,15,56,220,209 196238405Sjkim pxor %xmm0,%xmm4 197238405Sjkim.byte 102,15,56,220,217 198238405Sjkim pxor %xmm0,%xmm5 199238405Sjkim decl %ecx 200238405Sjkim.byte 102,15,56,220,225 201238405Sjkim pxor %xmm0,%xmm6 202238405Sjkim.byte 102,15,56,220,233 203238405Sjkim pxor %xmm0,%xmm7 204238405Sjkim.byte 102,15,56,220,241 205238405Sjkim movups (%edx),%xmm0 206238405Sjkim.byte 102,15,56,220,249 207238405Sjkim jmp .L_aesni_encrypt6_enter 208238405Sjkim.align 16 209238405Sjkim.L006enc6_loop: 210238405Sjkim.byte 102,15,56,220,209 211238405Sjkim.byte 102,15,56,220,217 212238405Sjkim decl %ecx 213238405Sjkim.byte 102,15,56,220,225 214238405Sjkim.byte 102,15,56,220,233 215238405Sjkim.byte 102,15,56,220,241 216238405Sjkim.byte 102,15,56,220,249 217238405Sjkim.align 16 218238405Sjkim.L_aesni_encrypt6_enter: 219238405Sjkim movups 16(%edx),%xmm1 220238405Sjkim.byte 102,15,56,220,208 221238405Sjkim.byte 102,15,56,220,216 222238405Sjkim leal 32(%edx),%edx 223238405Sjkim.byte 102,15,56,220,224 224238405Sjkim.byte 102,15,56,220,232 225238405Sjkim.byte 102,15,56,220,240 226238405Sjkim.byte 102,15,56,220,248 227238405Sjkim movups (%edx),%xmm0 228238405Sjkim jnz .L006enc6_loop 229238405Sjkim.byte 102,15,56,220,209 230238405Sjkim.byte 102,15,56,220,217 231238405Sjkim.byte 102,15,56,220,225 232238405Sjkim.byte 102,15,56,220,233 233238405Sjkim.byte 102,15,56,220,241 234238405Sjkim.byte 102,15,56,220,249 235238405Sjkim.byte 102,15,56,221,208 236238405Sjkim.byte 102,15,56,221,216 237238405Sjkim.byte 102,15,56,221,224 238238405Sjkim.byte 102,15,56,221,232 239238405Sjkim.byte 102,15,56,221,240 240238405Sjkim.byte 102,15,56,221,248 241238405Sjkim ret 242238405Sjkim.size _aesni_encrypt6,.-_aesni_encrypt6 243238405Sjkim.type _aesni_decrypt6,@function 244238405Sjkim.align 16 245238405Sjkim_aesni_decrypt6: 246238405Sjkim movups (%edx),%xmm0 247238405Sjkim shrl $1,%ecx 248238405Sjkim movups 16(%edx),%xmm1 249238405Sjkim leal 32(%edx),%edx 250238405Sjkim xorps %xmm0,%xmm2 251238405Sjkim pxor %xmm0,%xmm3 252238405Sjkim.byte 102,15,56,222,209 253238405Sjkim pxor %xmm0,%xmm4 254238405Sjkim.byte 102,15,56,222,217 255238405Sjkim pxor %xmm0,%xmm5 256238405Sjkim decl %ecx 257238405Sjkim.byte 102,15,56,222,225 258238405Sjkim pxor %xmm0,%xmm6 259238405Sjkim.byte 102,15,56,222,233 260238405Sjkim pxor %xmm0,%xmm7 261238405Sjkim.byte 102,15,56,222,241 262238405Sjkim movups (%edx),%xmm0 263238405Sjkim.byte 102,15,56,222,249 264238405Sjkim jmp .L_aesni_decrypt6_enter 265238405Sjkim.align 16 266238405Sjkim.L007dec6_loop: 267238405Sjkim.byte 102,15,56,222,209 268238405Sjkim.byte 102,15,56,222,217 269238405Sjkim decl %ecx 270238405Sjkim.byte 102,15,56,222,225 271238405Sjkim.byte 102,15,56,222,233 272238405Sjkim.byte 102,15,56,222,241 273238405Sjkim.byte 102,15,56,222,249 274238405Sjkim.align 16 275238405Sjkim.L_aesni_decrypt6_enter: 276238405Sjkim movups 16(%edx),%xmm1 277238405Sjkim.byte 102,15,56,222,208 278238405Sjkim.byte 102,15,56,222,216 279238405Sjkim leal 32(%edx),%edx 280238405Sjkim.byte 102,15,56,222,224 281238405Sjkim.byte 102,15,56,222,232 282238405Sjkim.byte 102,15,56,222,240 283238405Sjkim.byte 102,15,56,222,248 284238405Sjkim movups (%edx),%xmm0 285238405Sjkim jnz .L007dec6_loop 286238405Sjkim.byte 102,15,56,222,209 287238405Sjkim.byte 102,15,56,222,217 288238405Sjkim.byte 102,15,56,222,225 289238405Sjkim.byte 102,15,56,222,233 290238405Sjkim.byte 102,15,56,222,241 291238405Sjkim.byte 102,15,56,222,249 292238405Sjkim.byte 102,15,56,223,208 293238405Sjkim.byte 102,15,56,223,216 294238405Sjkim.byte 102,15,56,223,224 295238405Sjkim.byte 102,15,56,223,232 296238405Sjkim.byte 102,15,56,223,240 297238405Sjkim.byte 102,15,56,223,248 298238405Sjkim ret 299238405Sjkim.size _aesni_decrypt6,.-_aesni_decrypt6 300238405Sjkim.globl aesni_ecb_encrypt 301238405Sjkim.type aesni_ecb_encrypt,@function 302238405Sjkim.align 16 303238405Sjkimaesni_ecb_encrypt: 304238405Sjkim.L_aesni_ecb_encrypt_begin: 305238405Sjkim pushl %ebp 306238405Sjkim pushl %ebx 307238405Sjkim pushl %esi 308238405Sjkim pushl %edi 309238405Sjkim movl 20(%esp),%esi 310238405Sjkim movl 24(%esp),%edi 311238405Sjkim movl 28(%esp),%eax 312238405Sjkim movl 32(%esp),%edx 313238405Sjkim movl 36(%esp),%ebx 314238405Sjkim andl $-16,%eax 315238405Sjkim jz .L008ecb_ret 316238405Sjkim movl 240(%edx),%ecx 317238405Sjkim testl %ebx,%ebx 318238405Sjkim jz .L009ecb_decrypt 319238405Sjkim movl %edx,%ebp 320238405Sjkim movl %ecx,%ebx 321238405Sjkim cmpl $96,%eax 322238405Sjkim jb .L010ecb_enc_tail 323238405Sjkim movdqu (%esi),%xmm2 324238405Sjkim movdqu 16(%esi),%xmm3 325238405Sjkim movdqu 32(%esi),%xmm4 326238405Sjkim movdqu 48(%esi),%xmm5 327238405Sjkim movdqu 64(%esi),%xmm6 328238405Sjkim movdqu 80(%esi),%xmm7 329238405Sjkim leal 96(%esi),%esi 330238405Sjkim subl $96,%eax 331238405Sjkim jmp .L011ecb_enc_loop6_enter 332238405Sjkim.align 16 333238405Sjkim.L012ecb_enc_loop6: 334238405Sjkim movups %xmm2,(%edi) 335238405Sjkim movdqu (%esi),%xmm2 336238405Sjkim movups %xmm3,16(%edi) 337238405Sjkim movdqu 16(%esi),%xmm3 338238405Sjkim movups %xmm4,32(%edi) 339238405Sjkim movdqu 32(%esi),%xmm4 340238405Sjkim movups %xmm5,48(%edi) 341238405Sjkim movdqu 48(%esi),%xmm5 342238405Sjkim movups %xmm6,64(%edi) 343238405Sjkim movdqu 64(%esi),%xmm6 344238405Sjkim movups %xmm7,80(%edi) 345238405Sjkim leal 96(%edi),%edi 346238405Sjkim movdqu 80(%esi),%xmm7 347238405Sjkim leal 96(%esi),%esi 348238405Sjkim.L011ecb_enc_loop6_enter: 349238405Sjkim call _aesni_encrypt6 350238405Sjkim movl %ebp,%edx 351238405Sjkim movl %ebx,%ecx 352238405Sjkim subl $96,%eax 353238405Sjkim jnc .L012ecb_enc_loop6 354238405Sjkim movups %xmm2,(%edi) 355238405Sjkim movups %xmm3,16(%edi) 356238405Sjkim movups %xmm4,32(%edi) 357238405Sjkim movups %xmm5,48(%edi) 358238405Sjkim movups %xmm6,64(%edi) 359238405Sjkim movups %xmm7,80(%edi) 360238405Sjkim leal 96(%edi),%edi 361238405Sjkim addl $96,%eax 362238405Sjkim jz .L008ecb_ret 363238405Sjkim.L010ecb_enc_tail: 364238405Sjkim movups (%esi),%xmm2 365238405Sjkim cmpl $32,%eax 366238405Sjkim jb .L013ecb_enc_one 367238405Sjkim movups 16(%esi),%xmm3 368238405Sjkim je .L014ecb_enc_two 369238405Sjkim movups 32(%esi),%xmm4 370238405Sjkim cmpl $64,%eax 371238405Sjkim jb .L015ecb_enc_three 372238405Sjkim movups 48(%esi),%xmm5 373238405Sjkim je .L016ecb_enc_four 374238405Sjkim movups 64(%esi),%xmm6 375238405Sjkim xorps %xmm7,%xmm7 376238405Sjkim call _aesni_encrypt6 377238405Sjkim movups %xmm2,(%edi) 378238405Sjkim movups %xmm3,16(%edi) 379238405Sjkim movups %xmm4,32(%edi) 380238405Sjkim movups %xmm5,48(%edi) 381238405Sjkim movups %xmm6,64(%edi) 382238405Sjkim jmp .L008ecb_ret 383238405Sjkim.align 16 384238405Sjkim.L013ecb_enc_one: 385238405Sjkim movups (%edx),%xmm0 386238405Sjkim movups 16(%edx),%xmm1 387238405Sjkim leal 32(%edx),%edx 388238405Sjkim xorps %xmm0,%xmm2 389238405Sjkim.L017enc1_loop_3: 390238405Sjkim.byte 102,15,56,220,209 391238405Sjkim decl %ecx 392238405Sjkim movups (%edx),%xmm1 393238405Sjkim leal 16(%edx),%edx 394238405Sjkim jnz .L017enc1_loop_3 395238405Sjkim.byte 102,15,56,221,209 396238405Sjkim movups %xmm2,(%edi) 397238405Sjkim jmp .L008ecb_ret 398238405Sjkim.align 16 399238405Sjkim.L014ecb_enc_two: 400238405Sjkim xorps %xmm4,%xmm4 401238405Sjkim call _aesni_encrypt3 402238405Sjkim movups %xmm2,(%edi) 403238405Sjkim movups %xmm3,16(%edi) 404238405Sjkim jmp .L008ecb_ret 405238405Sjkim.align 16 406238405Sjkim.L015ecb_enc_three: 407238405Sjkim call _aesni_encrypt3 408238405Sjkim movups %xmm2,(%edi) 409238405Sjkim movups %xmm3,16(%edi) 410238405Sjkim movups %xmm4,32(%edi) 411238405Sjkim jmp .L008ecb_ret 412238405Sjkim.align 16 413238405Sjkim.L016ecb_enc_four: 414238405Sjkim call _aesni_encrypt4 415238405Sjkim movups %xmm2,(%edi) 416238405Sjkim movups %xmm3,16(%edi) 417238405Sjkim movups %xmm4,32(%edi) 418238405Sjkim movups %xmm5,48(%edi) 419238405Sjkim jmp .L008ecb_ret 420238405Sjkim.align 16 421238405Sjkim.L009ecb_decrypt: 422238405Sjkim movl %edx,%ebp 423238405Sjkim movl %ecx,%ebx 424238405Sjkim cmpl $96,%eax 425238405Sjkim jb .L018ecb_dec_tail 426238405Sjkim movdqu (%esi),%xmm2 427238405Sjkim movdqu 16(%esi),%xmm3 428238405Sjkim movdqu 32(%esi),%xmm4 429238405Sjkim movdqu 48(%esi),%xmm5 430238405Sjkim movdqu 64(%esi),%xmm6 431238405Sjkim movdqu 80(%esi),%xmm7 432238405Sjkim leal 96(%esi),%esi 433238405Sjkim subl $96,%eax 434238405Sjkim jmp .L019ecb_dec_loop6_enter 435238405Sjkim.align 16 436238405Sjkim.L020ecb_dec_loop6: 437238405Sjkim movups %xmm2,(%edi) 438238405Sjkim movdqu (%esi),%xmm2 439238405Sjkim movups %xmm3,16(%edi) 440238405Sjkim movdqu 16(%esi),%xmm3 441238405Sjkim movups %xmm4,32(%edi) 442238405Sjkim movdqu 32(%esi),%xmm4 443238405Sjkim movups %xmm5,48(%edi) 444238405Sjkim movdqu 48(%esi),%xmm5 445238405Sjkim movups %xmm6,64(%edi) 446238405Sjkim movdqu 64(%esi),%xmm6 447238405Sjkim movups %xmm7,80(%edi) 448238405Sjkim leal 96(%edi),%edi 449238405Sjkim movdqu 80(%esi),%xmm7 450238405Sjkim leal 96(%esi),%esi 451238405Sjkim.L019ecb_dec_loop6_enter: 452238405Sjkim call _aesni_decrypt6 453238405Sjkim movl %ebp,%edx 454238405Sjkim movl %ebx,%ecx 455238405Sjkim subl $96,%eax 456238405Sjkim jnc .L020ecb_dec_loop6 457238405Sjkim movups %xmm2,(%edi) 458238405Sjkim movups %xmm3,16(%edi) 459238405Sjkim movups %xmm4,32(%edi) 460238405Sjkim movups %xmm5,48(%edi) 461238405Sjkim movups %xmm6,64(%edi) 462238405Sjkim movups %xmm7,80(%edi) 463238405Sjkim leal 96(%edi),%edi 464238405Sjkim addl $96,%eax 465238405Sjkim jz .L008ecb_ret 466238405Sjkim.L018ecb_dec_tail: 467238405Sjkim movups (%esi),%xmm2 468238405Sjkim cmpl $32,%eax 469238405Sjkim jb .L021ecb_dec_one 470238405Sjkim movups 16(%esi),%xmm3 471238405Sjkim je .L022ecb_dec_two 472238405Sjkim movups 32(%esi),%xmm4 473238405Sjkim cmpl $64,%eax 474238405Sjkim jb .L023ecb_dec_three 475238405Sjkim movups 48(%esi),%xmm5 476238405Sjkim je .L024ecb_dec_four 477238405Sjkim movups 64(%esi),%xmm6 478238405Sjkim xorps %xmm7,%xmm7 479238405Sjkim call _aesni_decrypt6 480238405Sjkim movups %xmm2,(%edi) 481238405Sjkim movups %xmm3,16(%edi) 482238405Sjkim movups %xmm4,32(%edi) 483238405Sjkim movups %xmm5,48(%edi) 484238405Sjkim movups %xmm6,64(%edi) 485238405Sjkim jmp .L008ecb_ret 486238405Sjkim.align 16 487238405Sjkim.L021ecb_dec_one: 488238405Sjkim movups (%edx),%xmm0 489238405Sjkim movups 16(%edx),%xmm1 490238405Sjkim leal 32(%edx),%edx 491238405Sjkim xorps %xmm0,%xmm2 492238405Sjkim.L025dec1_loop_4: 493238405Sjkim.byte 102,15,56,222,209 494238405Sjkim decl %ecx 495238405Sjkim movups (%edx),%xmm1 496238405Sjkim leal 16(%edx),%edx 497238405Sjkim jnz .L025dec1_loop_4 498238405Sjkim.byte 102,15,56,223,209 499238405Sjkim movups %xmm2,(%edi) 500238405Sjkim jmp .L008ecb_ret 501238405Sjkim.align 16 502238405Sjkim.L022ecb_dec_two: 503238405Sjkim xorps %xmm4,%xmm4 504238405Sjkim call _aesni_decrypt3 505238405Sjkim movups %xmm2,(%edi) 506238405Sjkim movups %xmm3,16(%edi) 507238405Sjkim jmp .L008ecb_ret 508238405Sjkim.align 16 509238405Sjkim.L023ecb_dec_three: 510238405Sjkim call _aesni_decrypt3 511238405Sjkim movups %xmm2,(%edi) 512238405Sjkim movups %xmm3,16(%edi) 513238405Sjkim movups %xmm4,32(%edi) 514238405Sjkim jmp .L008ecb_ret 515238405Sjkim.align 16 516238405Sjkim.L024ecb_dec_four: 517238405Sjkim call _aesni_decrypt4 518238405Sjkim movups %xmm2,(%edi) 519238405Sjkim movups %xmm3,16(%edi) 520238405Sjkim movups %xmm4,32(%edi) 521238405Sjkim movups %xmm5,48(%edi) 522238405Sjkim.L008ecb_ret: 523238405Sjkim popl %edi 524238405Sjkim popl %esi 525238405Sjkim popl %ebx 526238405Sjkim popl %ebp 527238405Sjkim ret 528238405Sjkim.size aesni_ecb_encrypt,.-.L_aesni_ecb_encrypt_begin 529238405Sjkim.globl aesni_ccm64_encrypt_blocks 530238405Sjkim.type aesni_ccm64_encrypt_blocks,@function 531238405Sjkim.align 16 532238405Sjkimaesni_ccm64_encrypt_blocks: 533238405Sjkim.L_aesni_ccm64_encrypt_blocks_begin: 534238405Sjkim pushl %ebp 535238405Sjkim pushl %ebx 536238405Sjkim pushl %esi 537238405Sjkim pushl %edi 538238405Sjkim movl 20(%esp),%esi 539238405Sjkim movl 24(%esp),%edi 540238405Sjkim movl 28(%esp),%eax 541238405Sjkim movl 32(%esp),%edx 542238405Sjkim movl 36(%esp),%ebx 543238405Sjkim movl 40(%esp),%ecx 544238405Sjkim movl %esp,%ebp 545238405Sjkim subl $60,%esp 546238405Sjkim andl $-16,%esp 547238405Sjkim movl %ebp,48(%esp) 548238405Sjkim movdqu (%ebx),%xmm7 549238405Sjkim movdqu (%ecx),%xmm3 550238405Sjkim movl 240(%edx),%ecx 551238405Sjkim movl $202182159,(%esp) 552238405Sjkim movl $134810123,4(%esp) 553238405Sjkim movl $67438087,8(%esp) 554238405Sjkim movl $66051,12(%esp) 555238405Sjkim movl $1,%ebx 556238405Sjkim xorl %ebp,%ebp 557238405Sjkim movl %ebx,16(%esp) 558238405Sjkim movl %ebp,20(%esp) 559238405Sjkim movl %ebp,24(%esp) 560238405Sjkim movl %ebp,28(%esp) 561238405Sjkim shrl $1,%ecx 562238405Sjkim leal (%edx),%ebp 563238405Sjkim movdqa (%esp),%xmm5 564238405Sjkim movdqa %xmm7,%xmm2 565238405Sjkim movl %ecx,%ebx 566238405Sjkim.byte 102,15,56,0,253 567238405Sjkim.L026ccm64_enc_outer: 568238405Sjkim movups (%ebp),%xmm0 569238405Sjkim movl %ebx,%ecx 570238405Sjkim movups (%esi),%xmm6 571238405Sjkim xorps %xmm0,%xmm2 572238405Sjkim movups 16(%ebp),%xmm1 573238405Sjkim xorps %xmm6,%xmm0 574238405Sjkim leal 32(%ebp),%edx 575238405Sjkim xorps %xmm0,%xmm3 576238405Sjkim movups (%edx),%xmm0 577238405Sjkim.L027ccm64_enc2_loop: 578238405Sjkim.byte 102,15,56,220,209 579238405Sjkim decl %ecx 580238405Sjkim.byte 102,15,56,220,217 581238405Sjkim movups 16(%edx),%xmm1 582238405Sjkim.byte 102,15,56,220,208 583238405Sjkim leal 32(%edx),%edx 584238405Sjkim.byte 102,15,56,220,216 585238405Sjkim movups (%edx),%xmm0 586238405Sjkim jnz .L027ccm64_enc2_loop 587238405Sjkim.byte 102,15,56,220,209 588238405Sjkim.byte 102,15,56,220,217 589238405Sjkim paddq 16(%esp),%xmm7 590238405Sjkim.byte 102,15,56,221,208 591238405Sjkim.byte 102,15,56,221,216 592238405Sjkim decl %eax 593238405Sjkim leal 16(%esi),%esi 594238405Sjkim xorps %xmm2,%xmm6 595238405Sjkim movdqa %xmm7,%xmm2 596238405Sjkim movups %xmm6,(%edi) 597238405Sjkim leal 16(%edi),%edi 598238405Sjkim.byte 102,15,56,0,213 599238405Sjkim jnz .L026ccm64_enc_outer 600238405Sjkim movl 48(%esp),%esp 601238405Sjkim movl 40(%esp),%edi 602238405Sjkim movups %xmm3,(%edi) 603238405Sjkim popl %edi 604238405Sjkim popl %esi 605238405Sjkim popl %ebx 606238405Sjkim popl %ebp 607238405Sjkim ret 608238405Sjkim.size aesni_ccm64_encrypt_blocks,.-.L_aesni_ccm64_encrypt_blocks_begin 609238405Sjkim.globl aesni_ccm64_decrypt_blocks 610238405Sjkim.type aesni_ccm64_decrypt_blocks,@function 611238405Sjkim.align 16 612238405Sjkimaesni_ccm64_decrypt_blocks: 613238405Sjkim.L_aesni_ccm64_decrypt_blocks_begin: 614238405Sjkim pushl %ebp 615238405Sjkim pushl %ebx 616238405Sjkim pushl %esi 617238405Sjkim pushl %edi 618238405Sjkim movl 20(%esp),%esi 619238405Sjkim movl 24(%esp),%edi 620238405Sjkim movl 28(%esp),%eax 621238405Sjkim movl 32(%esp),%edx 622238405Sjkim movl 36(%esp),%ebx 623238405Sjkim movl 40(%esp),%ecx 624238405Sjkim movl %esp,%ebp 625238405Sjkim subl $60,%esp 626238405Sjkim andl $-16,%esp 627238405Sjkim movl %ebp,48(%esp) 628238405Sjkim movdqu (%ebx),%xmm7 629238405Sjkim movdqu (%ecx),%xmm3 630238405Sjkim movl 240(%edx),%ecx 631238405Sjkim movl $202182159,(%esp) 632238405Sjkim movl $134810123,4(%esp) 633238405Sjkim movl $67438087,8(%esp) 634238405Sjkim movl $66051,12(%esp) 635238405Sjkim movl $1,%ebx 636238405Sjkim xorl %ebp,%ebp 637238405Sjkim movl %ebx,16(%esp) 638238405Sjkim movl %ebp,20(%esp) 639238405Sjkim movl %ebp,24(%esp) 640238405Sjkim movl %ebp,28(%esp) 641238405Sjkim movdqa (%esp),%xmm5 642238405Sjkim movdqa %xmm7,%xmm2 643238405Sjkim movl %edx,%ebp 644238405Sjkim movl %ecx,%ebx 645238405Sjkim.byte 102,15,56,0,253 646238405Sjkim movups (%edx),%xmm0 647238405Sjkim movups 16(%edx),%xmm1 648238405Sjkim leal 32(%edx),%edx 649238405Sjkim xorps %xmm0,%xmm2 650238405Sjkim.L028enc1_loop_5: 651238405Sjkim.byte 102,15,56,220,209 652238405Sjkim decl %ecx 653238405Sjkim movups (%edx),%xmm1 654238405Sjkim leal 16(%edx),%edx 655238405Sjkim jnz .L028enc1_loop_5 656238405Sjkim.byte 102,15,56,221,209 657238405Sjkim movups (%esi),%xmm6 658238405Sjkim paddq 16(%esp),%xmm7 659238405Sjkim leal 16(%esi),%esi 660238405Sjkim jmp .L029ccm64_dec_outer 661238405Sjkim.align 16 662238405Sjkim.L029ccm64_dec_outer: 663238405Sjkim xorps %xmm2,%xmm6 664238405Sjkim movdqa %xmm7,%xmm2 665238405Sjkim movl %ebx,%ecx 666238405Sjkim movups %xmm6,(%edi) 667238405Sjkim leal 16(%edi),%edi 668238405Sjkim.byte 102,15,56,0,213 669238405Sjkim subl $1,%eax 670238405Sjkim jz .L030ccm64_dec_break 671238405Sjkim movups (%ebp),%xmm0 672238405Sjkim shrl $1,%ecx 673238405Sjkim movups 16(%ebp),%xmm1 674238405Sjkim xorps %xmm0,%xmm6 675238405Sjkim leal 32(%ebp),%edx 676238405Sjkim xorps %xmm0,%xmm2 677238405Sjkim xorps %xmm6,%xmm3 678238405Sjkim movups (%edx),%xmm0 679238405Sjkim.L031ccm64_dec2_loop: 680238405Sjkim.byte 102,15,56,220,209 681238405Sjkim decl %ecx 682238405Sjkim.byte 102,15,56,220,217 683238405Sjkim movups 16(%edx),%xmm1 684238405Sjkim.byte 102,15,56,220,208 685238405Sjkim leal 32(%edx),%edx 686238405Sjkim.byte 102,15,56,220,216 687238405Sjkim movups (%edx),%xmm0 688238405Sjkim jnz .L031ccm64_dec2_loop 689238405Sjkim movups (%esi),%xmm6 690238405Sjkim paddq 16(%esp),%xmm7 691238405Sjkim.byte 102,15,56,220,209 692238405Sjkim.byte 102,15,56,220,217 693238405Sjkim leal 16(%esi),%esi 694238405Sjkim.byte 102,15,56,221,208 695238405Sjkim.byte 102,15,56,221,216 696238405Sjkim jmp .L029ccm64_dec_outer 697238405Sjkim.align 16 698238405Sjkim.L030ccm64_dec_break: 699238405Sjkim movl %ebp,%edx 700238405Sjkim movups (%edx),%xmm0 701238405Sjkim movups 16(%edx),%xmm1 702238405Sjkim xorps %xmm0,%xmm6 703238405Sjkim leal 32(%edx),%edx 704238405Sjkim xorps %xmm6,%xmm3 705238405Sjkim.L032enc1_loop_6: 706238405Sjkim.byte 102,15,56,220,217 707238405Sjkim decl %ecx 708238405Sjkim movups (%edx),%xmm1 709238405Sjkim leal 16(%edx),%edx 710238405Sjkim jnz .L032enc1_loop_6 711238405Sjkim.byte 102,15,56,221,217 712238405Sjkim movl 48(%esp),%esp 713238405Sjkim movl 40(%esp),%edi 714238405Sjkim movups %xmm3,(%edi) 715238405Sjkim popl %edi 716238405Sjkim popl %esi 717238405Sjkim popl %ebx 718238405Sjkim popl %ebp 719238405Sjkim ret 720238405Sjkim.size aesni_ccm64_decrypt_blocks,.-.L_aesni_ccm64_decrypt_blocks_begin 721238405Sjkim.globl aesni_ctr32_encrypt_blocks 722238405Sjkim.type aesni_ctr32_encrypt_blocks,@function 723238405Sjkim.align 16 724238405Sjkimaesni_ctr32_encrypt_blocks: 725238405Sjkim.L_aesni_ctr32_encrypt_blocks_begin: 726238405Sjkim pushl %ebp 727238405Sjkim pushl %ebx 728238405Sjkim pushl %esi 729238405Sjkim pushl %edi 730238405Sjkim movl 20(%esp),%esi 731238405Sjkim movl 24(%esp),%edi 732238405Sjkim movl 28(%esp),%eax 733238405Sjkim movl 32(%esp),%edx 734238405Sjkim movl 36(%esp),%ebx 735238405Sjkim movl %esp,%ebp 736238405Sjkim subl $88,%esp 737238405Sjkim andl $-16,%esp 738238405Sjkim movl %ebp,80(%esp) 739238405Sjkim cmpl $1,%eax 740238405Sjkim je .L033ctr32_one_shortcut 741238405Sjkim movdqu (%ebx),%xmm7 742238405Sjkim movl $202182159,(%esp) 743238405Sjkim movl $134810123,4(%esp) 744238405Sjkim movl $67438087,8(%esp) 745238405Sjkim movl $66051,12(%esp) 746238405Sjkim movl $6,%ecx 747238405Sjkim xorl %ebp,%ebp 748238405Sjkim movl %ecx,16(%esp) 749238405Sjkim movl %ecx,20(%esp) 750238405Sjkim movl %ecx,24(%esp) 751238405Sjkim movl %ebp,28(%esp) 752238405Sjkim.byte 102,15,58,22,251,3 753238405Sjkim.byte 102,15,58,34,253,3 754238405Sjkim movl 240(%edx),%ecx 755238405Sjkim bswap %ebx 756238405Sjkim pxor %xmm1,%xmm1 757238405Sjkim pxor %xmm0,%xmm0 758238405Sjkim movdqa (%esp),%xmm2 759238405Sjkim.byte 102,15,58,34,203,0 760238405Sjkim leal 3(%ebx),%ebp 761238405Sjkim.byte 102,15,58,34,197,0 762238405Sjkim incl %ebx 763238405Sjkim.byte 102,15,58,34,203,1 764238405Sjkim incl %ebp 765238405Sjkim.byte 102,15,58,34,197,1 766238405Sjkim incl %ebx 767238405Sjkim.byte 102,15,58,34,203,2 768238405Sjkim incl %ebp 769238405Sjkim.byte 102,15,58,34,197,2 770238405Sjkim movdqa %xmm1,48(%esp) 771238405Sjkim.byte 102,15,56,0,202 772238405Sjkim movdqa %xmm0,64(%esp) 773238405Sjkim.byte 102,15,56,0,194 774238405Sjkim pshufd $192,%xmm1,%xmm2 775238405Sjkim pshufd $128,%xmm1,%xmm3 776238405Sjkim cmpl $6,%eax 777238405Sjkim jb .L034ctr32_tail 778238405Sjkim movdqa %xmm7,32(%esp) 779238405Sjkim shrl $1,%ecx 780238405Sjkim movl %edx,%ebp 781238405Sjkim movl %ecx,%ebx 782238405Sjkim subl $6,%eax 783238405Sjkim jmp .L035ctr32_loop6 784238405Sjkim.align 16 785238405Sjkim.L035ctr32_loop6: 786238405Sjkim pshufd $64,%xmm1,%xmm4 787238405Sjkim movdqa 32(%esp),%xmm1 788238405Sjkim pshufd $192,%xmm0,%xmm5 789238405Sjkim por %xmm1,%xmm2 790238405Sjkim pshufd $128,%xmm0,%xmm6 791238405Sjkim por %xmm1,%xmm3 792238405Sjkim pshufd $64,%xmm0,%xmm7 793238405Sjkim por %xmm1,%xmm4 794238405Sjkim por %xmm1,%xmm5 795238405Sjkim por %xmm1,%xmm6 796238405Sjkim por %xmm1,%xmm7 797238405Sjkim movups (%ebp),%xmm0 798238405Sjkim movups 16(%ebp),%xmm1 799238405Sjkim leal 32(%ebp),%edx 800238405Sjkim decl %ecx 801238405Sjkim pxor %xmm0,%xmm2 802238405Sjkim pxor %xmm0,%xmm3 803238405Sjkim.byte 102,15,56,220,209 804238405Sjkim pxor %xmm0,%xmm4 805238405Sjkim.byte 102,15,56,220,217 806238405Sjkim pxor %xmm0,%xmm5 807238405Sjkim.byte 102,15,56,220,225 808238405Sjkim pxor %xmm0,%xmm6 809238405Sjkim.byte 102,15,56,220,233 810238405Sjkim pxor %xmm0,%xmm7 811238405Sjkim.byte 102,15,56,220,241 812238405Sjkim movups (%edx),%xmm0 813238405Sjkim.byte 102,15,56,220,249 814238405Sjkim call .L_aesni_encrypt6_enter 815238405Sjkim movups (%esi),%xmm1 816238405Sjkim movups 16(%esi),%xmm0 817238405Sjkim xorps %xmm1,%xmm2 818238405Sjkim movups 32(%esi),%xmm1 819238405Sjkim xorps %xmm0,%xmm3 820238405Sjkim movups %xmm2,(%edi) 821238405Sjkim movdqa 16(%esp),%xmm0 822238405Sjkim xorps %xmm1,%xmm4 823238405Sjkim movdqa 48(%esp),%xmm1 824238405Sjkim movups %xmm3,16(%edi) 825238405Sjkim movups %xmm4,32(%edi) 826238405Sjkim paddd %xmm0,%xmm1 827238405Sjkim paddd 64(%esp),%xmm0 828238405Sjkim movdqa (%esp),%xmm2 829238405Sjkim movups 48(%esi),%xmm3 830238405Sjkim movups 64(%esi),%xmm4 831238405Sjkim xorps %xmm3,%xmm5 832238405Sjkim movups 80(%esi),%xmm3 833238405Sjkim leal 96(%esi),%esi 834238405Sjkim movdqa %xmm1,48(%esp) 835238405Sjkim.byte 102,15,56,0,202 836238405Sjkim xorps %xmm4,%xmm6 837238405Sjkim movups %xmm5,48(%edi) 838238405Sjkim xorps %xmm3,%xmm7 839238405Sjkim movdqa %xmm0,64(%esp) 840238405Sjkim.byte 102,15,56,0,194 841238405Sjkim movups %xmm6,64(%edi) 842238405Sjkim pshufd $192,%xmm1,%xmm2 843238405Sjkim movups %xmm7,80(%edi) 844238405Sjkim leal 96(%edi),%edi 845238405Sjkim movl %ebx,%ecx 846238405Sjkim pshufd $128,%xmm1,%xmm3 847238405Sjkim subl $6,%eax 848238405Sjkim jnc .L035ctr32_loop6 849238405Sjkim addl $6,%eax 850238405Sjkim jz .L036ctr32_ret 851238405Sjkim movl %ebp,%edx 852238405Sjkim leal 1(,%ecx,2),%ecx 853238405Sjkim movdqa 32(%esp),%xmm7 854238405Sjkim.L034ctr32_tail: 855238405Sjkim por %xmm7,%xmm2 856238405Sjkim cmpl $2,%eax 857238405Sjkim jb .L037ctr32_one 858238405Sjkim pshufd $64,%xmm1,%xmm4 859238405Sjkim por %xmm7,%xmm3 860238405Sjkim je .L038ctr32_two 861238405Sjkim pshufd $192,%xmm0,%xmm5 862238405Sjkim por %xmm7,%xmm4 863238405Sjkim cmpl $4,%eax 864238405Sjkim jb .L039ctr32_three 865238405Sjkim pshufd $128,%xmm0,%xmm6 866238405Sjkim por %xmm7,%xmm5 867238405Sjkim je .L040ctr32_four 868238405Sjkim por %xmm7,%xmm6 869238405Sjkim call _aesni_encrypt6 870238405Sjkim movups (%esi),%xmm1 871238405Sjkim movups 16(%esi),%xmm0 872238405Sjkim xorps %xmm1,%xmm2 873238405Sjkim movups 32(%esi),%xmm1 874238405Sjkim xorps %xmm0,%xmm3 875238405Sjkim movups 48(%esi),%xmm0 876238405Sjkim xorps %xmm1,%xmm4 877238405Sjkim movups 64(%esi),%xmm1 878238405Sjkim xorps %xmm0,%xmm5 879238405Sjkim movups %xmm2,(%edi) 880238405Sjkim xorps %xmm1,%xmm6 881238405Sjkim movups %xmm3,16(%edi) 882238405Sjkim movups %xmm4,32(%edi) 883238405Sjkim movups %xmm5,48(%edi) 884238405Sjkim movups %xmm6,64(%edi) 885238405Sjkim jmp .L036ctr32_ret 886238405Sjkim.align 16 887238405Sjkim.L033ctr32_one_shortcut: 888238405Sjkim movups (%ebx),%xmm2 889238405Sjkim movl 240(%edx),%ecx 890238405Sjkim.L037ctr32_one: 891238405Sjkim movups (%edx),%xmm0 892238405Sjkim movups 16(%edx),%xmm1 893238405Sjkim leal 32(%edx),%edx 894238405Sjkim xorps %xmm0,%xmm2 895238405Sjkim.L041enc1_loop_7: 896238405Sjkim.byte 102,15,56,220,209 897238405Sjkim decl %ecx 898238405Sjkim movups (%edx),%xmm1 899238405Sjkim leal 16(%edx),%edx 900238405Sjkim jnz .L041enc1_loop_7 901238405Sjkim.byte 102,15,56,221,209 902238405Sjkim movups (%esi),%xmm6 903238405Sjkim xorps %xmm2,%xmm6 904238405Sjkim movups %xmm6,(%edi) 905238405Sjkim jmp .L036ctr32_ret 906238405Sjkim.align 16 907238405Sjkim.L038ctr32_two: 908238405Sjkim call _aesni_encrypt3 909238405Sjkim movups (%esi),%xmm5 910238405Sjkim movups 16(%esi),%xmm6 911238405Sjkim xorps %xmm5,%xmm2 912238405Sjkim xorps %xmm6,%xmm3 913238405Sjkim movups %xmm2,(%edi) 914238405Sjkim movups %xmm3,16(%edi) 915238405Sjkim jmp .L036ctr32_ret 916238405Sjkim.align 16 917238405Sjkim.L039ctr32_three: 918238405Sjkim call _aesni_encrypt3 919238405Sjkim movups (%esi),%xmm5 920238405Sjkim movups 16(%esi),%xmm6 921238405Sjkim xorps %xmm5,%xmm2 922238405Sjkim movups 32(%esi),%xmm7 923238405Sjkim xorps %xmm6,%xmm3 924238405Sjkim movups %xmm2,(%edi) 925238405Sjkim xorps %xmm7,%xmm4 926238405Sjkim movups %xmm3,16(%edi) 927238405Sjkim movups %xmm4,32(%edi) 928238405Sjkim jmp .L036ctr32_ret 929238405Sjkim.align 16 930238405Sjkim.L040ctr32_four: 931238405Sjkim call _aesni_encrypt4 932238405Sjkim movups (%esi),%xmm6 933238405Sjkim movups 16(%esi),%xmm7 934238405Sjkim movups 32(%esi),%xmm1 935238405Sjkim xorps %xmm6,%xmm2 936238405Sjkim movups 48(%esi),%xmm0 937238405Sjkim xorps %xmm7,%xmm3 938238405Sjkim movups %xmm2,(%edi) 939238405Sjkim xorps %xmm1,%xmm4 940238405Sjkim movups %xmm3,16(%edi) 941238405Sjkim xorps %xmm0,%xmm5 942238405Sjkim movups %xmm4,32(%edi) 943238405Sjkim movups %xmm5,48(%edi) 944238405Sjkim.L036ctr32_ret: 945238405Sjkim movl 80(%esp),%esp 946238405Sjkim popl %edi 947238405Sjkim popl %esi 948238405Sjkim popl %ebx 949238405Sjkim popl %ebp 950238405Sjkim ret 951238405Sjkim.size aesni_ctr32_encrypt_blocks,.-.L_aesni_ctr32_encrypt_blocks_begin 952238405Sjkim.globl aesni_xts_encrypt 953238405Sjkim.type aesni_xts_encrypt,@function 954238405Sjkim.align 16 955238405Sjkimaesni_xts_encrypt: 956238405Sjkim.L_aesni_xts_encrypt_begin: 957238405Sjkim pushl %ebp 958238405Sjkim pushl %ebx 959238405Sjkim pushl %esi 960238405Sjkim pushl %edi 961238405Sjkim movl 36(%esp),%edx 962238405Sjkim movl 40(%esp),%esi 963238405Sjkim movl 240(%edx),%ecx 964238405Sjkim movups (%esi),%xmm2 965238405Sjkim movups (%edx),%xmm0 966238405Sjkim movups 16(%edx),%xmm1 967238405Sjkim leal 32(%edx),%edx 968238405Sjkim xorps %xmm0,%xmm2 969238405Sjkim.L042enc1_loop_8: 970238405Sjkim.byte 102,15,56,220,209 971238405Sjkim decl %ecx 972238405Sjkim movups (%edx),%xmm1 973238405Sjkim leal 16(%edx),%edx 974238405Sjkim jnz .L042enc1_loop_8 975238405Sjkim.byte 102,15,56,221,209 976238405Sjkim movl 20(%esp),%esi 977238405Sjkim movl 24(%esp),%edi 978238405Sjkim movl 28(%esp),%eax 979238405Sjkim movl 32(%esp),%edx 980238405Sjkim movl %esp,%ebp 981238405Sjkim subl $120,%esp 982238405Sjkim movl 240(%edx),%ecx 983238405Sjkim andl $-16,%esp 984238405Sjkim movl $135,96(%esp) 985238405Sjkim movl $0,100(%esp) 986238405Sjkim movl $1,104(%esp) 987238405Sjkim movl $0,108(%esp) 988238405Sjkim movl %eax,112(%esp) 989238405Sjkim movl %ebp,116(%esp) 990238405Sjkim movdqa %xmm2,%xmm1 991238405Sjkim pxor %xmm0,%xmm0 992238405Sjkim movdqa 96(%esp),%xmm3 993238405Sjkim pcmpgtd %xmm1,%xmm0 994238405Sjkim andl $-16,%eax 995238405Sjkim movl %edx,%ebp 996238405Sjkim movl %ecx,%ebx 997238405Sjkim subl $96,%eax 998238405Sjkim jc .L043xts_enc_short 999238405Sjkim shrl $1,%ecx 1000238405Sjkim movl %ecx,%ebx 1001238405Sjkim jmp .L044xts_enc_loop6 1002238405Sjkim.align 16 1003238405Sjkim.L044xts_enc_loop6: 1004238405Sjkim pshufd $19,%xmm0,%xmm2 1005238405Sjkim pxor %xmm0,%xmm0 1006238405Sjkim movdqa %xmm1,(%esp) 1007238405Sjkim paddq %xmm1,%xmm1 1008238405Sjkim pand %xmm3,%xmm2 1009238405Sjkim pcmpgtd %xmm1,%xmm0 1010238405Sjkim pxor %xmm2,%xmm1 1011238405Sjkim pshufd $19,%xmm0,%xmm2 1012238405Sjkim pxor %xmm0,%xmm0 1013238405Sjkim movdqa %xmm1,16(%esp) 1014238405Sjkim paddq %xmm1,%xmm1 1015238405Sjkim pand %xmm3,%xmm2 1016238405Sjkim pcmpgtd %xmm1,%xmm0 1017238405Sjkim pxor %xmm2,%xmm1 1018238405Sjkim pshufd $19,%xmm0,%xmm2 1019238405Sjkim pxor %xmm0,%xmm0 1020238405Sjkim movdqa %xmm1,32(%esp) 1021238405Sjkim paddq %xmm1,%xmm1 1022238405Sjkim pand %xmm3,%xmm2 1023238405Sjkim pcmpgtd %xmm1,%xmm0 1024238405Sjkim pxor %xmm2,%xmm1 1025238405Sjkim pshufd $19,%xmm0,%xmm2 1026238405Sjkim pxor %xmm0,%xmm0 1027238405Sjkim movdqa %xmm1,48(%esp) 1028238405Sjkim paddq %xmm1,%xmm1 1029238405Sjkim pand %xmm3,%xmm2 1030238405Sjkim pcmpgtd %xmm1,%xmm0 1031238405Sjkim pxor %xmm2,%xmm1 1032238405Sjkim pshufd $19,%xmm0,%xmm7 1033238405Sjkim movdqa %xmm1,64(%esp) 1034238405Sjkim paddq %xmm1,%xmm1 1035238405Sjkim movups (%ebp),%xmm0 1036238405Sjkim pand %xmm3,%xmm7 1037238405Sjkim movups (%esi),%xmm2 1038238405Sjkim pxor %xmm1,%xmm7 1039238405Sjkim movdqu 16(%esi),%xmm3 1040238405Sjkim xorps %xmm0,%xmm2 1041238405Sjkim movdqu 32(%esi),%xmm4 1042238405Sjkim pxor %xmm0,%xmm3 1043238405Sjkim movdqu 48(%esi),%xmm5 1044238405Sjkim pxor %xmm0,%xmm4 1045238405Sjkim movdqu 64(%esi),%xmm6 1046238405Sjkim pxor %xmm0,%xmm5 1047238405Sjkim movdqu 80(%esi),%xmm1 1048238405Sjkim pxor %xmm0,%xmm6 1049238405Sjkim leal 96(%esi),%esi 1050238405Sjkim pxor (%esp),%xmm2 1051238405Sjkim movdqa %xmm7,80(%esp) 1052238405Sjkim pxor %xmm1,%xmm7 1053238405Sjkim movups 16(%ebp),%xmm1 1054238405Sjkim leal 32(%ebp),%edx 1055238405Sjkim pxor 16(%esp),%xmm3 1056238405Sjkim.byte 102,15,56,220,209 1057238405Sjkim pxor 32(%esp),%xmm4 1058238405Sjkim.byte 102,15,56,220,217 1059238405Sjkim pxor 48(%esp),%xmm5 1060238405Sjkim decl %ecx 1061238405Sjkim.byte 102,15,56,220,225 1062238405Sjkim pxor 64(%esp),%xmm6 1063238405Sjkim.byte 102,15,56,220,233 1064238405Sjkim pxor %xmm0,%xmm7 1065238405Sjkim.byte 102,15,56,220,241 1066238405Sjkim movups (%edx),%xmm0 1067238405Sjkim.byte 102,15,56,220,249 1068238405Sjkim call .L_aesni_encrypt6_enter 1069238405Sjkim movdqa 80(%esp),%xmm1 1070238405Sjkim pxor %xmm0,%xmm0 1071238405Sjkim xorps (%esp),%xmm2 1072238405Sjkim pcmpgtd %xmm1,%xmm0 1073238405Sjkim xorps 16(%esp),%xmm3 1074238405Sjkim movups %xmm2,(%edi) 1075238405Sjkim xorps 32(%esp),%xmm4 1076238405Sjkim movups %xmm3,16(%edi) 1077238405Sjkim xorps 48(%esp),%xmm5 1078238405Sjkim movups %xmm4,32(%edi) 1079238405Sjkim xorps 64(%esp),%xmm6 1080238405Sjkim movups %xmm5,48(%edi) 1081238405Sjkim xorps %xmm1,%xmm7 1082238405Sjkim movups %xmm6,64(%edi) 1083238405Sjkim pshufd $19,%xmm0,%xmm2 1084238405Sjkim movups %xmm7,80(%edi) 1085238405Sjkim leal 96(%edi),%edi 1086238405Sjkim movdqa 96(%esp),%xmm3 1087238405Sjkim pxor %xmm0,%xmm0 1088238405Sjkim paddq %xmm1,%xmm1 1089238405Sjkim pand %xmm3,%xmm2 1090238405Sjkim pcmpgtd %xmm1,%xmm0 1091238405Sjkim movl %ebx,%ecx 1092238405Sjkim pxor %xmm2,%xmm1 1093238405Sjkim subl $96,%eax 1094238405Sjkim jnc .L044xts_enc_loop6 1095238405Sjkim leal 1(,%ecx,2),%ecx 1096238405Sjkim movl %ebp,%edx 1097238405Sjkim movl %ecx,%ebx 1098238405Sjkim.L043xts_enc_short: 1099238405Sjkim addl $96,%eax 1100238405Sjkim jz .L045xts_enc_done6x 1101238405Sjkim movdqa %xmm1,%xmm5 1102238405Sjkim cmpl $32,%eax 1103238405Sjkim jb .L046xts_enc_one 1104238405Sjkim pshufd $19,%xmm0,%xmm2 1105238405Sjkim pxor %xmm0,%xmm0 1106238405Sjkim paddq %xmm1,%xmm1 1107238405Sjkim pand %xmm3,%xmm2 1108238405Sjkim pcmpgtd %xmm1,%xmm0 1109238405Sjkim pxor %xmm2,%xmm1 1110238405Sjkim je .L047xts_enc_two 1111238405Sjkim pshufd $19,%xmm0,%xmm2 1112238405Sjkim pxor %xmm0,%xmm0 1113238405Sjkim movdqa %xmm1,%xmm6 1114238405Sjkim paddq %xmm1,%xmm1 1115238405Sjkim pand %xmm3,%xmm2 1116238405Sjkim pcmpgtd %xmm1,%xmm0 1117238405Sjkim pxor %xmm2,%xmm1 1118238405Sjkim cmpl $64,%eax 1119238405Sjkim jb .L048xts_enc_three 1120238405Sjkim pshufd $19,%xmm0,%xmm2 1121238405Sjkim pxor %xmm0,%xmm0 1122238405Sjkim movdqa %xmm1,%xmm7 1123238405Sjkim paddq %xmm1,%xmm1 1124238405Sjkim pand %xmm3,%xmm2 1125238405Sjkim pcmpgtd %xmm1,%xmm0 1126238405Sjkim pxor %xmm2,%xmm1 1127238405Sjkim movdqa %xmm5,(%esp) 1128238405Sjkim movdqa %xmm6,16(%esp) 1129238405Sjkim je .L049xts_enc_four 1130238405Sjkim movdqa %xmm7,32(%esp) 1131238405Sjkim pshufd $19,%xmm0,%xmm7 1132238405Sjkim movdqa %xmm1,48(%esp) 1133238405Sjkim paddq %xmm1,%xmm1 1134238405Sjkim pand %xmm3,%xmm7 1135238405Sjkim pxor %xmm1,%xmm7 1136238405Sjkim movdqu (%esi),%xmm2 1137238405Sjkim movdqu 16(%esi),%xmm3 1138238405Sjkim movdqu 32(%esi),%xmm4 1139238405Sjkim pxor (%esp),%xmm2 1140238405Sjkim movdqu 48(%esi),%xmm5 1141238405Sjkim pxor 16(%esp),%xmm3 1142238405Sjkim movdqu 64(%esi),%xmm6 1143238405Sjkim pxor 32(%esp),%xmm4 1144238405Sjkim leal 80(%esi),%esi 1145238405Sjkim pxor 48(%esp),%xmm5 1146238405Sjkim movdqa %xmm7,64(%esp) 1147238405Sjkim pxor %xmm7,%xmm6 1148238405Sjkim call _aesni_encrypt6 1149238405Sjkim movaps 64(%esp),%xmm1 1150238405Sjkim xorps (%esp),%xmm2 1151238405Sjkim xorps 16(%esp),%xmm3 1152238405Sjkim xorps 32(%esp),%xmm4 1153238405Sjkim movups %xmm2,(%edi) 1154238405Sjkim xorps 48(%esp),%xmm5 1155238405Sjkim movups %xmm3,16(%edi) 1156238405Sjkim xorps %xmm1,%xmm6 1157238405Sjkim movups %xmm4,32(%edi) 1158238405Sjkim movups %xmm5,48(%edi) 1159238405Sjkim movups %xmm6,64(%edi) 1160238405Sjkim leal 80(%edi),%edi 1161238405Sjkim jmp .L050xts_enc_done 1162238405Sjkim.align 16 1163238405Sjkim.L046xts_enc_one: 1164238405Sjkim movups (%esi),%xmm2 1165238405Sjkim leal 16(%esi),%esi 1166238405Sjkim xorps %xmm5,%xmm2 1167238405Sjkim movups (%edx),%xmm0 1168238405Sjkim movups 16(%edx),%xmm1 1169238405Sjkim leal 32(%edx),%edx 1170238405Sjkim xorps %xmm0,%xmm2 1171238405Sjkim.L051enc1_loop_9: 1172238405Sjkim.byte 102,15,56,220,209 1173238405Sjkim decl %ecx 1174238405Sjkim movups (%edx),%xmm1 1175238405Sjkim leal 16(%edx),%edx 1176238405Sjkim jnz .L051enc1_loop_9 1177238405Sjkim.byte 102,15,56,221,209 1178238405Sjkim xorps %xmm5,%xmm2 1179238405Sjkim movups %xmm2,(%edi) 1180238405Sjkim leal 16(%edi),%edi 1181238405Sjkim movdqa %xmm5,%xmm1 1182238405Sjkim jmp .L050xts_enc_done 1183238405Sjkim.align 16 1184238405Sjkim.L047xts_enc_two: 1185238405Sjkim movaps %xmm1,%xmm6 1186238405Sjkim movups (%esi),%xmm2 1187238405Sjkim movups 16(%esi),%xmm3 1188238405Sjkim leal 32(%esi),%esi 1189238405Sjkim xorps %xmm5,%xmm2 1190238405Sjkim xorps %xmm6,%xmm3 1191238405Sjkim xorps %xmm4,%xmm4 1192238405Sjkim call _aesni_encrypt3 1193238405Sjkim xorps %xmm5,%xmm2 1194238405Sjkim xorps %xmm6,%xmm3 1195238405Sjkim movups %xmm2,(%edi) 1196238405Sjkim movups %xmm3,16(%edi) 1197238405Sjkim leal 32(%edi),%edi 1198238405Sjkim movdqa %xmm6,%xmm1 1199238405Sjkim jmp .L050xts_enc_done 1200238405Sjkim.align 16 1201238405Sjkim.L048xts_enc_three: 1202238405Sjkim movaps %xmm1,%xmm7 1203238405Sjkim movups (%esi),%xmm2 1204238405Sjkim movups 16(%esi),%xmm3 1205238405Sjkim movups 32(%esi),%xmm4 1206238405Sjkim leal 48(%esi),%esi 1207238405Sjkim xorps %xmm5,%xmm2 1208238405Sjkim xorps %xmm6,%xmm3 1209238405Sjkim xorps %xmm7,%xmm4 1210238405Sjkim call _aesni_encrypt3 1211238405Sjkim xorps %xmm5,%xmm2 1212238405Sjkim xorps %xmm6,%xmm3 1213238405Sjkim xorps %xmm7,%xmm4 1214238405Sjkim movups %xmm2,(%edi) 1215238405Sjkim movups %xmm3,16(%edi) 1216238405Sjkim movups %xmm4,32(%edi) 1217238405Sjkim leal 48(%edi),%edi 1218238405Sjkim movdqa %xmm7,%xmm1 1219238405Sjkim jmp .L050xts_enc_done 1220238405Sjkim.align 16 1221238405Sjkim.L049xts_enc_four: 1222238405Sjkim movaps %xmm1,%xmm6 1223238405Sjkim movups (%esi),%xmm2 1224238405Sjkim movups 16(%esi),%xmm3 1225238405Sjkim movups 32(%esi),%xmm4 1226238405Sjkim xorps (%esp),%xmm2 1227238405Sjkim movups 48(%esi),%xmm5 1228238405Sjkim leal 64(%esi),%esi 1229238405Sjkim xorps 16(%esp),%xmm3 1230238405Sjkim xorps %xmm7,%xmm4 1231238405Sjkim xorps %xmm6,%xmm5 1232238405Sjkim call _aesni_encrypt4 1233238405Sjkim xorps (%esp),%xmm2 1234238405Sjkim xorps 16(%esp),%xmm3 1235238405Sjkim xorps %xmm7,%xmm4 1236238405Sjkim movups %xmm2,(%edi) 1237238405Sjkim xorps %xmm6,%xmm5 1238238405Sjkim movups %xmm3,16(%edi) 1239238405Sjkim movups %xmm4,32(%edi) 1240238405Sjkim movups %xmm5,48(%edi) 1241238405Sjkim leal 64(%edi),%edi 1242238405Sjkim movdqa %xmm6,%xmm1 1243238405Sjkim jmp .L050xts_enc_done 1244238405Sjkim.align 16 1245238405Sjkim.L045xts_enc_done6x: 1246238405Sjkim movl 112(%esp),%eax 1247238405Sjkim andl $15,%eax 1248238405Sjkim jz .L052xts_enc_ret 1249238405Sjkim movdqa %xmm1,%xmm5 1250238405Sjkim movl %eax,112(%esp) 1251238405Sjkim jmp .L053xts_enc_steal 1252238405Sjkim.align 16 1253238405Sjkim.L050xts_enc_done: 1254238405Sjkim movl 112(%esp),%eax 1255238405Sjkim pxor %xmm0,%xmm0 1256238405Sjkim andl $15,%eax 1257238405Sjkim jz .L052xts_enc_ret 1258238405Sjkim pcmpgtd %xmm1,%xmm0 1259238405Sjkim movl %eax,112(%esp) 1260238405Sjkim pshufd $19,%xmm0,%xmm5 1261238405Sjkim paddq %xmm1,%xmm1 1262238405Sjkim pand 96(%esp),%xmm5 1263238405Sjkim pxor %xmm1,%xmm5 1264238405Sjkim.L053xts_enc_steal: 1265238405Sjkim movzbl (%esi),%ecx 1266238405Sjkim movzbl -16(%edi),%edx 1267238405Sjkim leal 1(%esi),%esi 1268238405Sjkim movb %cl,-16(%edi) 1269238405Sjkim movb %dl,(%edi) 1270238405Sjkim leal 1(%edi),%edi 1271238405Sjkim subl $1,%eax 1272238405Sjkim jnz .L053xts_enc_steal 1273238405Sjkim subl 112(%esp),%edi 1274238405Sjkim movl %ebp,%edx 1275238405Sjkim movl %ebx,%ecx 1276238405Sjkim movups -16(%edi),%xmm2 1277238405Sjkim xorps %xmm5,%xmm2 1278238405Sjkim movups (%edx),%xmm0 1279238405Sjkim movups 16(%edx),%xmm1 1280238405Sjkim leal 32(%edx),%edx 1281238405Sjkim xorps %xmm0,%xmm2 1282238405Sjkim.L054enc1_loop_10: 1283238405Sjkim.byte 102,15,56,220,209 1284238405Sjkim decl %ecx 1285238405Sjkim movups (%edx),%xmm1 1286238405Sjkim leal 16(%edx),%edx 1287238405Sjkim jnz .L054enc1_loop_10 1288238405Sjkim.byte 102,15,56,221,209 1289238405Sjkim xorps %xmm5,%xmm2 1290238405Sjkim movups %xmm2,-16(%edi) 1291238405Sjkim.L052xts_enc_ret: 1292238405Sjkim movl 116(%esp),%esp 1293238405Sjkim popl %edi 1294238405Sjkim popl %esi 1295238405Sjkim popl %ebx 1296238405Sjkim popl %ebp 1297238405Sjkim ret 1298238405Sjkim.size aesni_xts_encrypt,.-.L_aesni_xts_encrypt_begin 1299238405Sjkim.globl aesni_xts_decrypt 1300238405Sjkim.type aesni_xts_decrypt,@function 1301238405Sjkim.align 16 1302238405Sjkimaesni_xts_decrypt: 1303238405Sjkim.L_aesni_xts_decrypt_begin: 1304238405Sjkim pushl %ebp 1305238405Sjkim pushl %ebx 1306238405Sjkim pushl %esi 1307238405Sjkim pushl %edi 1308238405Sjkim movl 36(%esp),%edx 1309238405Sjkim movl 40(%esp),%esi 1310238405Sjkim movl 240(%edx),%ecx 1311238405Sjkim movups (%esi),%xmm2 1312238405Sjkim movups (%edx),%xmm0 1313238405Sjkim movups 16(%edx),%xmm1 1314238405Sjkim leal 32(%edx),%edx 1315238405Sjkim xorps %xmm0,%xmm2 1316238405Sjkim.L055enc1_loop_11: 1317238405Sjkim.byte 102,15,56,220,209 1318238405Sjkim decl %ecx 1319238405Sjkim movups (%edx),%xmm1 1320238405Sjkim leal 16(%edx),%edx 1321238405Sjkim jnz .L055enc1_loop_11 1322238405Sjkim.byte 102,15,56,221,209 1323238405Sjkim movl 20(%esp),%esi 1324238405Sjkim movl 24(%esp),%edi 1325238405Sjkim movl 28(%esp),%eax 1326238405Sjkim movl 32(%esp),%edx 1327238405Sjkim movl %esp,%ebp 1328238405Sjkim subl $120,%esp 1329238405Sjkim andl $-16,%esp 1330238405Sjkim xorl %ebx,%ebx 1331238405Sjkim testl $15,%eax 1332238405Sjkim setnz %bl 1333238405Sjkim shll $4,%ebx 1334238405Sjkim subl %ebx,%eax 1335238405Sjkim movl $135,96(%esp) 1336238405Sjkim movl $0,100(%esp) 1337238405Sjkim movl $1,104(%esp) 1338238405Sjkim movl $0,108(%esp) 1339238405Sjkim movl %eax,112(%esp) 1340238405Sjkim movl %ebp,116(%esp) 1341238405Sjkim movl 240(%edx),%ecx 1342238405Sjkim movl %edx,%ebp 1343238405Sjkim movl %ecx,%ebx 1344238405Sjkim movdqa %xmm2,%xmm1 1345238405Sjkim pxor %xmm0,%xmm0 1346238405Sjkim movdqa 96(%esp),%xmm3 1347238405Sjkim pcmpgtd %xmm1,%xmm0 1348238405Sjkim andl $-16,%eax 1349238405Sjkim subl $96,%eax 1350238405Sjkim jc .L056xts_dec_short 1351238405Sjkim shrl $1,%ecx 1352238405Sjkim movl %ecx,%ebx 1353238405Sjkim jmp .L057xts_dec_loop6 1354238405Sjkim.align 16 1355238405Sjkim.L057xts_dec_loop6: 1356238405Sjkim pshufd $19,%xmm0,%xmm2 1357238405Sjkim pxor %xmm0,%xmm0 1358238405Sjkim movdqa %xmm1,(%esp) 1359238405Sjkim paddq %xmm1,%xmm1 1360238405Sjkim pand %xmm3,%xmm2 1361238405Sjkim pcmpgtd %xmm1,%xmm0 1362238405Sjkim pxor %xmm2,%xmm1 1363238405Sjkim pshufd $19,%xmm0,%xmm2 1364238405Sjkim pxor %xmm0,%xmm0 1365238405Sjkim movdqa %xmm1,16(%esp) 1366238405Sjkim paddq %xmm1,%xmm1 1367238405Sjkim pand %xmm3,%xmm2 1368238405Sjkim pcmpgtd %xmm1,%xmm0 1369238405Sjkim pxor %xmm2,%xmm1 1370238405Sjkim pshufd $19,%xmm0,%xmm2 1371238405Sjkim pxor %xmm0,%xmm0 1372238405Sjkim movdqa %xmm1,32(%esp) 1373238405Sjkim paddq %xmm1,%xmm1 1374238405Sjkim pand %xmm3,%xmm2 1375238405Sjkim pcmpgtd %xmm1,%xmm0 1376238405Sjkim pxor %xmm2,%xmm1 1377238405Sjkim pshufd $19,%xmm0,%xmm2 1378238405Sjkim pxor %xmm0,%xmm0 1379238405Sjkim movdqa %xmm1,48(%esp) 1380238405Sjkim paddq %xmm1,%xmm1 1381238405Sjkim pand %xmm3,%xmm2 1382238405Sjkim pcmpgtd %xmm1,%xmm0 1383238405Sjkim pxor %xmm2,%xmm1 1384238405Sjkim pshufd $19,%xmm0,%xmm7 1385238405Sjkim movdqa %xmm1,64(%esp) 1386238405Sjkim paddq %xmm1,%xmm1 1387238405Sjkim movups (%ebp),%xmm0 1388238405Sjkim pand %xmm3,%xmm7 1389238405Sjkim movups (%esi),%xmm2 1390238405Sjkim pxor %xmm1,%xmm7 1391238405Sjkim movdqu 16(%esi),%xmm3 1392238405Sjkim xorps %xmm0,%xmm2 1393238405Sjkim movdqu 32(%esi),%xmm4 1394238405Sjkim pxor %xmm0,%xmm3 1395238405Sjkim movdqu 48(%esi),%xmm5 1396238405Sjkim pxor %xmm0,%xmm4 1397238405Sjkim movdqu 64(%esi),%xmm6 1398238405Sjkim pxor %xmm0,%xmm5 1399238405Sjkim movdqu 80(%esi),%xmm1 1400238405Sjkim pxor %xmm0,%xmm6 1401238405Sjkim leal 96(%esi),%esi 1402238405Sjkim pxor (%esp),%xmm2 1403238405Sjkim movdqa %xmm7,80(%esp) 1404238405Sjkim pxor %xmm1,%xmm7 1405238405Sjkim movups 16(%ebp),%xmm1 1406238405Sjkim leal 32(%ebp),%edx 1407238405Sjkim pxor 16(%esp),%xmm3 1408238405Sjkim.byte 102,15,56,222,209 1409238405Sjkim pxor 32(%esp),%xmm4 1410238405Sjkim.byte 102,15,56,222,217 1411238405Sjkim pxor 48(%esp),%xmm5 1412238405Sjkim decl %ecx 1413238405Sjkim.byte 102,15,56,222,225 1414238405Sjkim pxor 64(%esp),%xmm6 1415238405Sjkim.byte 102,15,56,222,233 1416238405Sjkim pxor %xmm0,%xmm7 1417238405Sjkim.byte 102,15,56,222,241 1418238405Sjkim movups (%edx),%xmm0 1419238405Sjkim.byte 102,15,56,222,249 1420238405Sjkim call .L_aesni_decrypt6_enter 1421238405Sjkim movdqa 80(%esp),%xmm1 1422238405Sjkim pxor %xmm0,%xmm0 1423238405Sjkim xorps (%esp),%xmm2 1424238405Sjkim pcmpgtd %xmm1,%xmm0 1425238405Sjkim xorps 16(%esp),%xmm3 1426238405Sjkim movups %xmm2,(%edi) 1427238405Sjkim xorps 32(%esp),%xmm4 1428238405Sjkim movups %xmm3,16(%edi) 1429238405Sjkim xorps 48(%esp),%xmm5 1430238405Sjkim movups %xmm4,32(%edi) 1431238405Sjkim xorps 64(%esp),%xmm6 1432238405Sjkim movups %xmm5,48(%edi) 1433238405Sjkim xorps %xmm1,%xmm7 1434238405Sjkim movups %xmm6,64(%edi) 1435238405Sjkim pshufd $19,%xmm0,%xmm2 1436238405Sjkim movups %xmm7,80(%edi) 1437238405Sjkim leal 96(%edi),%edi 1438238405Sjkim movdqa 96(%esp),%xmm3 1439238405Sjkim pxor %xmm0,%xmm0 1440238405Sjkim paddq %xmm1,%xmm1 1441238405Sjkim pand %xmm3,%xmm2 1442238405Sjkim pcmpgtd %xmm1,%xmm0 1443238405Sjkim movl %ebx,%ecx 1444238405Sjkim pxor %xmm2,%xmm1 1445238405Sjkim subl $96,%eax 1446238405Sjkim jnc .L057xts_dec_loop6 1447238405Sjkim leal 1(,%ecx,2),%ecx 1448238405Sjkim movl %ebp,%edx 1449238405Sjkim movl %ecx,%ebx 1450238405Sjkim.L056xts_dec_short: 1451238405Sjkim addl $96,%eax 1452238405Sjkim jz .L058xts_dec_done6x 1453238405Sjkim movdqa %xmm1,%xmm5 1454238405Sjkim cmpl $32,%eax 1455238405Sjkim jb .L059xts_dec_one 1456238405Sjkim pshufd $19,%xmm0,%xmm2 1457238405Sjkim pxor %xmm0,%xmm0 1458238405Sjkim paddq %xmm1,%xmm1 1459238405Sjkim pand %xmm3,%xmm2 1460238405Sjkim pcmpgtd %xmm1,%xmm0 1461238405Sjkim pxor %xmm2,%xmm1 1462238405Sjkim je .L060xts_dec_two 1463238405Sjkim pshufd $19,%xmm0,%xmm2 1464238405Sjkim pxor %xmm0,%xmm0 1465238405Sjkim movdqa %xmm1,%xmm6 1466238405Sjkim paddq %xmm1,%xmm1 1467238405Sjkim pand %xmm3,%xmm2 1468238405Sjkim pcmpgtd %xmm1,%xmm0 1469238405Sjkim pxor %xmm2,%xmm1 1470238405Sjkim cmpl $64,%eax 1471238405Sjkim jb .L061xts_dec_three 1472238405Sjkim pshufd $19,%xmm0,%xmm2 1473238405Sjkim pxor %xmm0,%xmm0 1474238405Sjkim movdqa %xmm1,%xmm7 1475238405Sjkim paddq %xmm1,%xmm1 1476238405Sjkim pand %xmm3,%xmm2 1477238405Sjkim pcmpgtd %xmm1,%xmm0 1478238405Sjkim pxor %xmm2,%xmm1 1479238405Sjkim movdqa %xmm5,(%esp) 1480238405Sjkim movdqa %xmm6,16(%esp) 1481238405Sjkim je .L062xts_dec_four 1482238405Sjkim movdqa %xmm7,32(%esp) 1483238405Sjkim pshufd $19,%xmm0,%xmm7 1484238405Sjkim movdqa %xmm1,48(%esp) 1485238405Sjkim paddq %xmm1,%xmm1 1486238405Sjkim pand %xmm3,%xmm7 1487238405Sjkim pxor %xmm1,%xmm7 1488238405Sjkim movdqu (%esi),%xmm2 1489238405Sjkim movdqu 16(%esi),%xmm3 1490238405Sjkim movdqu 32(%esi),%xmm4 1491238405Sjkim pxor (%esp),%xmm2 1492238405Sjkim movdqu 48(%esi),%xmm5 1493238405Sjkim pxor 16(%esp),%xmm3 1494238405Sjkim movdqu 64(%esi),%xmm6 1495238405Sjkim pxor 32(%esp),%xmm4 1496238405Sjkim leal 80(%esi),%esi 1497238405Sjkim pxor 48(%esp),%xmm5 1498238405Sjkim movdqa %xmm7,64(%esp) 1499238405Sjkim pxor %xmm7,%xmm6 1500238405Sjkim call _aesni_decrypt6 1501238405Sjkim movaps 64(%esp),%xmm1 1502238405Sjkim xorps (%esp),%xmm2 1503238405Sjkim xorps 16(%esp),%xmm3 1504238405Sjkim xorps 32(%esp),%xmm4 1505238405Sjkim movups %xmm2,(%edi) 1506238405Sjkim xorps 48(%esp),%xmm5 1507238405Sjkim movups %xmm3,16(%edi) 1508238405Sjkim xorps %xmm1,%xmm6 1509238405Sjkim movups %xmm4,32(%edi) 1510238405Sjkim movups %xmm5,48(%edi) 1511238405Sjkim movups %xmm6,64(%edi) 1512238405Sjkim leal 80(%edi),%edi 1513238405Sjkim jmp .L063xts_dec_done 1514238405Sjkim.align 16 1515238405Sjkim.L059xts_dec_one: 1516238405Sjkim movups (%esi),%xmm2 1517238405Sjkim leal 16(%esi),%esi 1518238405Sjkim xorps %xmm5,%xmm2 1519238405Sjkim movups (%edx),%xmm0 1520238405Sjkim movups 16(%edx),%xmm1 1521238405Sjkim leal 32(%edx),%edx 1522238405Sjkim xorps %xmm0,%xmm2 1523238405Sjkim.L064dec1_loop_12: 1524238405Sjkim.byte 102,15,56,222,209 1525238405Sjkim decl %ecx 1526238405Sjkim movups (%edx),%xmm1 1527238405Sjkim leal 16(%edx),%edx 1528238405Sjkim jnz .L064dec1_loop_12 1529238405Sjkim.byte 102,15,56,223,209 1530238405Sjkim xorps %xmm5,%xmm2 1531238405Sjkim movups %xmm2,(%edi) 1532238405Sjkim leal 16(%edi),%edi 1533238405Sjkim movdqa %xmm5,%xmm1 1534238405Sjkim jmp .L063xts_dec_done 1535238405Sjkim.align 16 1536238405Sjkim.L060xts_dec_two: 1537238405Sjkim movaps %xmm1,%xmm6 1538238405Sjkim movups (%esi),%xmm2 1539238405Sjkim movups 16(%esi),%xmm3 1540238405Sjkim leal 32(%esi),%esi 1541238405Sjkim xorps %xmm5,%xmm2 1542238405Sjkim xorps %xmm6,%xmm3 1543238405Sjkim call _aesni_decrypt3 1544238405Sjkim xorps %xmm5,%xmm2 1545238405Sjkim xorps %xmm6,%xmm3 1546238405Sjkim movups %xmm2,(%edi) 1547238405Sjkim movups %xmm3,16(%edi) 1548238405Sjkim leal 32(%edi),%edi 1549238405Sjkim movdqa %xmm6,%xmm1 1550238405Sjkim jmp .L063xts_dec_done 1551238405Sjkim.align 16 1552238405Sjkim.L061xts_dec_three: 1553238405Sjkim movaps %xmm1,%xmm7 1554238405Sjkim movups (%esi),%xmm2 1555238405Sjkim movups 16(%esi),%xmm3 1556238405Sjkim movups 32(%esi),%xmm4 1557238405Sjkim leal 48(%esi),%esi 1558238405Sjkim xorps %xmm5,%xmm2 1559238405Sjkim xorps %xmm6,%xmm3 1560238405Sjkim xorps %xmm7,%xmm4 1561238405Sjkim call _aesni_decrypt3 1562238405Sjkim xorps %xmm5,%xmm2 1563238405Sjkim xorps %xmm6,%xmm3 1564238405Sjkim xorps %xmm7,%xmm4 1565238405Sjkim movups %xmm2,(%edi) 1566238405Sjkim movups %xmm3,16(%edi) 1567238405Sjkim movups %xmm4,32(%edi) 1568238405Sjkim leal 48(%edi),%edi 1569238405Sjkim movdqa %xmm7,%xmm1 1570238405Sjkim jmp .L063xts_dec_done 1571238405Sjkim.align 16 1572238405Sjkim.L062xts_dec_four: 1573238405Sjkim movaps %xmm1,%xmm6 1574238405Sjkim movups (%esi),%xmm2 1575238405Sjkim movups 16(%esi),%xmm3 1576238405Sjkim movups 32(%esi),%xmm4 1577238405Sjkim xorps (%esp),%xmm2 1578238405Sjkim movups 48(%esi),%xmm5 1579238405Sjkim leal 64(%esi),%esi 1580238405Sjkim xorps 16(%esp),%xmm3 1581238405Sjkim xorps %xmm7,%xmm4 1582238405Sjkim xorps %xmm6,%xmm5 1583238405Sjkim call _aesni_decrypt4 1584238405Sjkim xorps (%esp),%xmm2 1585238405Sjkim xorps 16(%esp),%xmm3 1586238405Sjkim xorps %xmm7,%xmm4 1587238405Sjkim movups %xmm2,(%edi) 1588238405Sjkim xorps %xmm6,%xmm5 1589238405Sjkim movups %xmm3,16(%edi) 1590238405Sjkim movups %xmm4,32(%edi) 1591238405Sjkim movups %xmm5,48(%edi) 1592238405Sjkim leal 64(%edi),%edi 1593238405Sjkim movdqa %xmm6,%xmm1 1594238405Sjkim jmp .L063xts_dec_done 1595238405Sjkim.align 16 1596238405Sjkim.L058xts_dec_done6x: 1597238405Sjkim movl 112(%esp),%eax 1598238405Sjkim andl $15,%eax 1599238405Sjkim jz .L065xts_dec_ret 1600238405Sjkim movl %eax,112(%esp) 1601238405Sjkim jmp .L066xts_dec_only_one_more 1602238405Sjkim.align 16 1603238405Sjkim.L063xts_dec_done: 1604238405Sjkim movl 112(%esp),%eax 1605238405Sjkim pxor %xmm0,%xmm0 1606238405Sjkim andl $15,%eax 1607238405Sjkim jz .L065xts_dec_ret 1608238405Sjkim pcmpgtd %xmm1,%xmm0 1609238405Sjkim movl %eax,112(%esp) 1610238405Sjkim pshufd $19,%xmm0,%xmm2 1611238405Sjkim pxor %xmm0,%xmm0 1612238405Sjkim movdqa 96(%esp),%xmm3 1613238405Sjkim paddq %xmm1,%xmm1 1614238405Sjkim pand %xmm3,%xmm2 1615238405Sjkim pcmpgtd %xmm1,%xmm0 1616238405Sjkim pxor %xmm2,%xmm1 1617238405Sjkim.L066xts_dec_only_one_more: 1618238405Sjkim pshufd $19,%xmm0,%xmm5 1619238405Sjkim movdqa %xmm1,%xmm6 1620238405Sjkim paddq %xmm1,%xmm1 1621238405Sjkim pand %xmm3,%xmm5 1622238405Sjkim pxor %xmm1,%xmm5 1623238405Sjkim movl %ebp,%edx 1624238405Sjkim movl %ebx,%ecx 1625238405Sjkim movups (%esi),%xmm2 1626238405Sjkim xorps %xmm5,%xmm2 1627238405Sjkim movups (%edx),%xmm0 1628238405Sjkim movups 16(%edx),%xmm1 1629238405Sjkim leal 32(%edx),%edx 1630238405Sjkim xorps %xmm0,%xmm2 1631238405Sjkim.L067dec1_loop_13: 1632238405Sjkim.byte 102,15,56,222,209 1633238405Sjkim decl %ecx 1634238405Sjkim movups (%edx),%xmm1 1635238405Sjkim leal 16(%edx),%edx 1636238405Sjkim jnz .L067dec1_loop_13 1637238405Sjkim.byte 102,15,56,223,209 1638238405Sjkim xorps %xmm5,%xmm2 1639238405Sjkim movups %xmm2,(%edi) 1640238405Sjkim.L068xts_dec_steal: 1641238405Sjkim movzbl 16(%esi),%ecx 1642238405Sjkim movzbl (%edi),%edx 1643238405Sjkim leal 1(%esi),%esi 1644238405Sjkim movb %cl,(%edi) 1645238405Sjkim movb %dl,16(%edi) 1646238405Sjkim leal 1(%edi),%edi 1647238405Sjkim subl $1,%eax 1648238405Sjkim jnz .L068xts_dec_steal 1649238405Sjkim subl 112(%esp),%edi 1650238405Sjkim movl %ebp,%edx 1651238405Sjkim movl %ebx,%ecx 1652238405Sjkim movups (%edi),%xmm2 1653238405Sjkim xorps %xmm6,%xmm2 1654238405Sjkim movups (%edx),%xmm0 1655238405Sjkim movups 16(%edx),%xmm1 1656238405Sjkim leal 32(%edx),%edx 1657238405Sjkim xorps %xmm0,%xmm2 1658238405Sjkim.L069dec1_loop_14: 1659238405Sjkim.byte 102,15,56,222,209 1660238405Sjkim decl %ecx 1661238405Sjkim movups (%edx),%xmm1 1662238405Sjkim leal 16(%edx),%edx 1663238405Sjkim jnz .L069dec1_loop_14 1664238405Sjkim.byte 102,15,56,223,209 1665238405Sjkim xorps %xmm6,%xmm2 1666238405Sjkim movups %xmm2,(%edi) 1667238405Sjkim.L065xts_dec_ret: 1668238405Sjkim movl 116(%esp),%esp 1669238405Sjkim popl %edi 1670238405Sjkim popl %esi 1671238405Sjkim popl %ebx 1672238405Sjkim popl %ebp 1673238405Sjkim ret 1674238405Sjkim.size aesni_xts_decrypt,.-.L_aesni_xts_decrypt_begin 1675238405Sjkim.globl aesni_cbc_encrypt 1676238405Sjkim.type aesni_cbc_encrypt,@function 1677238405Sjkim.align 16 1678238405Sjkimaesni_cbc_encrypt: 1679238405Sjkim.L_aesni_cbc_encrypt_begin: 1680238405Sjkim pushl %ebp 1681238405Sjkim pushl %ebx 1682238405Sjkim pushl %esi 1683238405Sjkim pushl %edi 1684238405Sjkim movl 20(%esp),%esi 1685238405Sjkim movl %esp,%ebx 1686238405Sjkim movl 24(%esp),%edi 1687238405Sjkim subl $24,%ebx 1688238405Sjkim movl 28(%esp),%eax 1689238405Sjkim andl $-16,%ebx 1690238405Sjkim movl 32(%esp),%edx 1691238405Sjkim movl 36(%esp),%ebp 1692238405Sjkim testl %eax,%eax 1693238405Sjkim jz .L070cbc_abort 1694238405Sjkim cmpl $0,40(%esp) 1695238405Sjkim xchgl %esp,%ebx 1696238405Sjkim movups (%ebp),%xmm7 1697238405Sjkim movl 240(%edx),%ecx 1698238405Sjkim movl %edx,%ebp 1699238405Sjkim movl %ebx,16(%esp) 1700238405Sjkim movl %ecx,%ebx 1701238405Sjkim je .L071cbc_decrypt 1702238405Sjkim movaps %xmm7,%xmm2 1703238405Sjkim cmpl $16,%eax 1704238405Sjkim jb .L072cbc_enc_tail 1705238405Sjkim subl $16,%eax 1706238405Sjkim jmp .L073cbc_enc_loop 1707238405Sjkim.align 16 1708238405Sjkim.L073cbc_enc_loop: 1709238405Sjkim movups (%esi),%xmm7 1710238405Sjkim leal 16(%esi),%esi 1711238405Sjkim movups (%edx),%xmm0 1712238405Sjkim movups 16(%edx),%xmm1 1713238405Sjkim xorps %xmm0,%xmm7 1714238405Sjkim leal 32(%edx),%edx 1715238405Sjkim xorps %xmm7,%xmm2 1716238405Sjkim.L074enc1_loop_15: 1717238405Sjkim.byte 102,15,56,220,209 1718238405Sjkim decl %ecx 1719238405Sjkim movups (%edx),%xmm1 1720238405Sjkim leal 16(%edx),%edx 1721238405Sjkim jnz .L074enc1_loop_15 1722238405Sjkim.byte 102,15,56,221,209 1723238405Sjkim movl %ebx,%ecx 1724238405Sjkim movl %ebp,%edx 1725238405Sjkim movups %xmm2,(%edi) 1726238405Sjkim leal 16(%edi),%edi 1727238405Sjkim subl $16,%eax 1728238405Sjkim jnc .L073cbc_enc_loop 1729238405Sjkim addl $16,%eax 1730238405Sjkim jnz .L072cbc_enc_tail 1731238405Sjkim movaps %xmm2,%xmm7 1732238405Sjkim jmp .L075cbc_ret 1733238405Sjkim.L072cbc_enc_tail: 1734238405Sjkim movl %eax,%ecx 1735238405Sjkim.long 2767451785 1736238405Sjkim movl $16,%ecx 1737238405Sjkim subl %eax,%ecx 1738238405Sjkim xorl %eax,%eax 1739238405Sjkim.long 2868115081 1740238405Sjkim leal -16(%edi),%edi 1741238405Sjkim movl %ebx,%ecx 1742238405Sjkim movl %edi,%esi 1743238405Sjkim movl %ebp,%edx 1744238405Sjkim jmp .L073cbc_enc_loop 1745238405Sjkim.align 16 1746238405Sjkim.L071cbc_decrypt: 1747238405Sjkim cmpl $80,%eax 1748238405Sjkim jbe .L076cbc_dec_tail 1749238405Sjkim movaps %xmm7,(%esp) 1750238405Sjkim subl $80,%eax 1751238405Sjkim jmp .L077cbc_dec_loop6_enter 1752238405Sjkim.align 16 1753238405Sjkim.L078cbc_dec_loop6: 1754238405Sjkim movaps %xmm0,(%esp) 1755238405Sjkim movups %xmm7,(%edi) 1756238405Sjkim leal 16(%edi),%edi 1757238405Sjkim.L077cbc_dec_loop6_enter: 1758238405Sjkim movdqu (%esi),%xmm2 1759238405Sjkim movdqu 16(%esi),%xmm3 1760238405Sjkim movdqu 32(%esi),%xmm4 1761238405Sjkim movdqu 48(%esi),%xmm5 1762238405Sjkim movdqu 64(%esi),%xmm6 1763238405Sjkim movdqu 80(%esi),%xmm7 1764238405Sjkim call _aesni_decrypt6 1765238405Sjkim movups (%esi),%xmm1 1766238405Sjkim movups 16(%esi),%xmm0 1767238405Sjkim xorps (%esp),%xmm2 1768238405Sjkim xorps %xmm1,%xmm3 1769238405Sjkim movups 32(%esi),%xmm1 1770238405Sjkim xorps %xmm0,%xmm4 1771238405Sjkim movups 48(%esi),%xmm0 1772238405Sjkim xorps %xmm1,%xmm5 1773238405Sjkim movups 64(%esi),%xmm1 1774238405Sjkim xorps %xmm0,%xmm6 1775238405Sjkim movups 80(%esi),%xmm0 1776238405Sjkim xorps %xmm1,%xmm7 1777238405Sjkim movups %xmm2,(%edi) 1778238405Sjkim movups %xmm3,16(%edi) 1779238405Sjkim leal 96(%esi),%esi 1780238405Sjkim movups %xmm4,32(%edi) 1781238405Sjkim movl %ebx,%ecx 1782238405Sjkim movups %xmm5,48(%edi) 1783238405Sjkim movl %ebp,%edx 1784238405Sjkim movups %xmm6,64(%edi) 1785238405Sjkim leal 80(%edi),%edi 1786238405Sjkim subl $96,%eax 1787238405Sjkim ja .L078cbc_dec_loop6 1788238405Sjkim movaps %xmm7,%xmm2 1789238405Sjkim movaps %xmm0,%xmm7 1790238405Sjkim addl $80,%eax 1791238405Sjkim jle .L079cbc_dec_tail_collected 1792238405Sjkim movups %xmm2,(%edi) 1793238405Sjkim leal 16(%edi),%edi 1794238405Sjkim.L076cbc_dec_tail: 1795238405Sjkim movups (%esi),%xmm2 1796238405Sjkim movaps %xmm2,%xmm6 1797238405Sjkim cmpl $16,%eax 1798238405Sjkim jbe .L080cbc_dec_one 1799238405Sjkim movups 16(%esi),%xmm3 1800238405Sjkim movaps %xmm3,%xmm5 1801238405Sjkim cmpl $32,%eax 1802238405Sjkim jbe .L081cbc_dec_two 1803238405Sjkim movups 32(%esi),%xmm4 1804238405Sjkim cmpl $48,%eax 1805238405Sjkim jbe .L082cbc_dec_three 1806238405Sjkim movups 48(%esi),%xmm5 1807238405Sjkim cmpl $64,%eax 1808238405Sjkim jbe .L083cbc_dec_four 1809238405Sjkim movups 64(%esi),%xmm6 1810238405Sjkim movaps %xmm7,(%esp) 1811238405Sjkim movups (%esi),%xmm2 1812238405Sjkim xorps %xmm7,%xmm7 1813238405Sjkim call _aesni_decrypt6 1814238405Sjkim movups (%esi),%xmm1 1815238405Sjkim movups 16(%esi),%xmm0 1816238405Sjkim xorps (%esp),%xmm2 1817238405Sjkim xorps %xmm1,%xmm3 1818238405Sjkim movups 32(%esi),%xmm1 1819238405Sjkim xorps %xmm0,%xmm4 1820238405Sjkim movups 48(%esi),%xmm0 1821238405Sjkim xorps %xmm1,%xmm5 1822238405Sjkim movups 64(%esi),%xmm7 1823238405Sjkim xorps %xmm0,%xmm6 1824238405Sjkim movups %xmm2,(%edi) 1825238405Sjkim movups %xmm3,16(%edi) 1826238405Sjkim movups %xmm4,32(%edi) 1827238405Sjkim movups %xmm5,48(%edi) 1828238405Sjkim leal 64(%edi),%edi 1829238405Sjkim movaps %xmm6,%xmm2 1830238405Sjkim subl $80,%eax 1831238405Sjkim jmp .L079cbc_dec_tail_collected 1832238405Sjkim.align 16 1833238405Sjkim.L080cbc_dec_one: 1834238405Sjkim movups (%edx),%xmm0 1835238405Sjkim movups 16(%edx),%xmm1 1836238405Sjkim leal 32(%edx),%edx 1837238405Sjkim xorps %xmm0,%xmm2 1838238405Sjkim.L084dec1_loop_16: 1839238405Sjkim.byte 102,15,56,222,209 1840238405Sjkim decl %ecx 1841238405Sjkim movups (%edx),%xmm1 1842238405Sjkim leal 16(%edx),%edx 1843238405Sjkim jnz .L084dec1_loop_16 1844238405Sjkim.byte 102,15,56,223,209 1845238405Sjkim xorps %xmm7,%xmm2 1846238405Sjkim movaps %xmm6,%xmm7 1847238405Sjkim subl $16,%eax 1848238405Sjkim jmp .L079cbc_dec_tail_collected 1849238405Sjkim.align 16 1850238405Sjkim.L081cbc_dec_two: 1851238405Sjkim xorps %xmm4,%xmm4 1852238405Sjkim call _aesni_decrypt3 1853238405Sjkim xorps %xmm7,%xmm2 1854238405Sjkim xorps %xmm6,%xmm3 1855238405Sjkim movups %xmm2,(%edi) 1856238405Sjkim movaps %xmm3,%xmm2 1857238405Sjkim leal 16(%edi),%edi 1858238405Sjkim movaps %xmm5,%xmm7 1859238405Sjkim subl $32,%eax 1860238405Sjkim jmp .L079cbc_dec_tail_collected 1861238405Sjkim.align 16 1862238405Sjkim.L082cbc_dec_three: 1863238405Sjkim call _aesni_decrypt3 1864238405Sjkim xorps %xmm7,%xmm2 1865238405Sjkim xorps %xmm6,%xmm3 1866238405Sjkim xorps %xmm5,%xmm4 1867238405Sjkim movups %xmm2,(%edi) 1868238405Sjkim movaps %xmm4,%xmm2 1869238405Sjkim movups %xmm3,16(%edi) 1870238405Sjkim leal 32(%edi),%edi 1871238405Sjkim movups 32(%esi),%xmm7 1872238405Sjkim subl $48,%eax 1873238405Sjkim jmp .L079cbc_dec_tail_collected 1874238405Sjkim.align 16 1875238405Sjkim.L083cbc_dec_four: 1876238405Sjkim call _aesni_decrypt4 1877238405Sjkim movups 16(%esi),%xmm1 1878238405Sjkim movups 32(%esi),%xmm0 1879238405Sjkim xorps %xmm7,%xmm2 1880238405Sjkim movups 48(%esi),%xmm7 1881238405Sjkim xorps %xmm6,%xmm3 1882238405Sjkim movups %xmm2,(%edi) 1883238405Sjkim xorps %xmm1,%xmm4 1884238405Sjkim movups %xmm3,16(%edi) 1885238405Sjkim xorps %xmm0,%xmm5 1886238405Sjkim movups %xmm4,32(%edi) 1887238405Sjkim leal 48(%edi),%edi 1888238405Sjkim movaps %xmm5,%xmm2 1889238405Sjkim subl $64,%eax 1890238405Sjkim.L079cbc_dec_tail_collected: 1891238405Sjkim andl $15,%eax 1892238405Sjkim jnz .L085cbc_dec_tail_partial 1893238405Sjkim movups %xmm2,(%edi) 1894238405Sjkim jmp .L075cbc_ret 1895238405Sjkim.align 16 1896238405Sjkim.L085cbc_dec_tail_partial: 1897238405Sjkim movaps %xmm2,(%esp) 1898238405Sjkim movl $16,%ecx 1899238405Sjkim movl %esp,%esi 1900238405Sjkim subl %eax,%ecx 1901238405Sjkim.long 2767451785 1902238405Sjkim.L075cbc_ret: 1903238405Sjkim movl 16(%esp),%esp 1904238405Sjkim movl 36(%esp),%ebp 1905238405Sjkim movups %xmm7,(%ebp) 1906238405Sjkim.L070cbc_abort: 1907238405Sjkim popl %edi 1908238405Sjkim popl %esi 1909238405Sjkim popl %ebx 1910238405Sjkim popl %ebp 1911238405Sjkim ret 1912238405Sjkim.size aesni_cbc_encrypt,.-.L_aesni_cbc_encrypt_begin 1913238405Sjkim.type _aesni_set_encrypt_key,@function 1914238405Sjkim.align 16 1915238405Sjkim_aesni_set_encrypt_key: 1916238405Sjkim testl %eax,%eax 1917238405Sjkim jz .L086bad_pointer 1918238405Sjkim testl %edx,%edx 1919238405Sjkim jz .L086bad_pointer 1920238405Sjkim movups (%eax),%xmm0 1921238405Sjkim xorps %xmm4,%xmm4 1922238405Sjkim leal 16(%edx),%edx 1923238405Sjkim cmpl $256,%ecx 1924238405Sjkim je .L08714rounds 1925238405Sjkim cmpl $192,%ecx 1926238405Sjkim je .L08812rounds 1927238405Sjkim cmpl $128,%ecx 1928238405Sjkim jne .L089bad_keybits 1929238405Sjkim.align 16 1930238405Sjkim.L09010rounds: 1931238405Sjkim movl $9,%ecx 1932238405Sjkim movups %xmm0,-16(%edx) 1933238405Sjkim.byte 102,15,58,223,200,1 1934238405Sjkim call .L091key_128_cold 1935238405Sjkim.byte 102,15,58,223,200,2 1936238405Sjkim call .L092key_128 1937238405Sjkim.byte 102,15,58,223,200,4 1938238405Sjkim call .L092key_128 1939238405Sjkim.byte 102,15,58,223,200,8 1940238405Sjkim call .L092key_128 1941238405Sjkim.byte 102,15,58,223,200,16 1942238405Sjkim call .L092key_128 1943238405Sjkim.byte 102,15,58,223,200,32 1944238405Sjkim call .L092key_128 1945238405Sjkim.byte 102,15,58,223,200,64 1946238405Sjkim call .L092key_128 1947238405Sjkim.byte 102,15,58,223,200,128 1948238405Sjkim call .L092key_128 1949238405Sjkim.byte 102,15,58,223,200,27 1950238405Sjkim call .L092key_128 1951238405Sjkim.byte 102,15,58,223,200,54 1952238405Sjkim call .L092key_128 1953238405Sjkim movups %xmm0,(%edx) 1954238405Sjkim movl %ecx,80(%edx) 1955238405Sjkim xorl %eax,%eax 1956238405Sjkim ret 1957238405Sjkim.align 16 1958238405Sjkim.L092key_128: 1959238405Sjkim movups %xmm0,(%edx) 1960238405Sjkim leal 16(%edx),%edx 1961238405Sjkim.L091key_128_cold: 1962238405Sjkim shufps $16,%xmm0,%xmm4 1963238405Sjkim xorps %xmm4,%xmm0 1964238405Sjkim shufps $140,%xmm0,%xmm4 1965238405Sjkim xorps %xmm4,%xmm0 1966238405Sjkim shufps $255,%xmm1,%xmm1 1967238405Sjkim xorps %xmm1,%xmm0 1968238405Sjkim ret 1969238405Sjkim.align 16 1970238405Sjkim.L08812rounds: 1971238405Sjkim movq 16(%eax),%xmm2 1972238405Sjkim movl $11,%ecx 1973238405Sjkim movups %xmm0,-16(%edx) 1974238405Sjkim.byte 102,15,58,223,202,1 1975238405Sjkim call .L093key_192a_cold 1976238405Sjkim.byte 102,15,58,223,202,2 1977238405Sjkim call .L094key_192b 1978238405Sjkim.byte 102,15,58,223,202,4 1979238405Sjkim call .L095key_192a 1980238405Sjkim.byte 102,15,58,223,202,8 1981238405Sjkim call .L094key_192b 1982238405Sjkim.byte 102,15,58,223,202,16 1983238405Sjkim call .L095key_192a 1984238405Sjkim.byte 102,15,58,223,202,32 1985238405Sjkim call .L094key_192b 1986238405Sjkim.byte 102,15,58,223,202,64 1987238405Sjkim call .L095key_192a 1988238405Sjkim.byte 102,15,58,223,202,128 1989238405Sjkim call .L094key_192b 1990238405Sjkim movups %xmm0,(%edx) 1991238405Sjkim movl %ecx,48(%edx) 1992238405Sjkim xorl %eax,%eax 1993238405Sjkim ret 1994238405Sjkim.align 16 1995238405Sjkim.L095key_192a: 1996238405Sjkim movups %xmm0,(%edx) 1997238405Sjkim leal 16(%edx),%edx 1998238405Sjkim.align 16 1999238405Sjkim.L093key_192a_cold: 2000238405Sjkim movaps %xmm2,%xmm5 2001238405Sjkim.L096key_192b_warm: 2002238405Sjkim shufps $16,%xmm0,%xmm4 2003238405Sjkim movdqa %xmm2,%xmm3 2004238405Sjkim xorps %xmm4,%xmm0 2005238405Sjkim shufps $140,%xmm0,%xmm4 2006238405Sjkim pslldq $4,%xmm3 2007238405Sjkim xorps %xmm4,%xmm0 2008238405Sjkim pshufd $85,%xmm1,%xmm1 2009238405Sjkim pxor %xmm3,%xmm2 2010238405Sjkim pxor %xmm1,%xmm0 2011238405Sjkim pshufd $255,%xmm0,%xmm3 2012238405Sjkim pxor %xmm3,%xmm2 2013238405Sjkim ret 2014238405Sjkim.align 16 2015238405Sjkim.L094key_192b: 2016238405Sjkim movaps %xmm0,%xmm3 2017238405Sjkim shufps $68,%xmm0,%xmm5 2018238405Sjkim movups %xmm5,(%edx) 2019238405Sjkim shufps $78,%xmm2,%xmm3 2020238405Sjkim movups %xmm3,16(%edx) 2021238405Sjkim leal 32(%edx),%edx 2022238405Sjkim jmp .L096key_192b_warm 2023238405Sjkim.align 16 2024238405Sjkim.L08714rounds: 2025238405Sjkim movups 16(%eax),%xmm2 2026238405Sjkim movl $13,%ecx 2027238405Sjkim leal 16(%edx),%edx 2028238405Sjkim movups %xmm0,-32(%edx) 2029238405Sjkim movups %xmm2,-16(%edx) 2030238405Sjkim.byte 102,15,58,223,202,1 2031238405Sjkim call .L097key_256a_cold 2032238405Sjkim.byte 102,15,58,223,200,1 2033238405Sjkim call .L098key_256b 2034238405Sjkim.byte 102,15,58,223,202,2 2035238405Sjkim call .L099key_256a 2036238405Sjkim.byte 102,15,58,223,200,2 2037238405Sjkim call .L098key_256b 2038238405Sjkim.byte 102,15,58,223,202,4 2039238405Sjkim call .L099key_256a 2040238405Sjkim.byte 102,15,58,223,200,4 2041238405Sjkim call .L098key_256b 2042238405Sjkim.byte 102,15,58,223,202,8 2043238405Sjkim call .L099key_256a 2044238405Sjkim.byte 102,15,58,223,200,8 2045238405Sjkim call .L098key_256b 2046238405Sjkim.byte 102,15,58,223,202,16 2047238405Sjkim call .L099key_256a 2048238405Sjkim.byte 102,15,58,223,200,16 2049238405Sjkim call .L098key_256b 2050238405Sjkim.byte 102,15,58,223,202,32 2051238405Sjkim call .L099key_256a 2052238405Sjkim.byte 102,15,58,223,200,32 2053238405Sjkim call .L098key_256b 2054238405Sjkim.byte 102,15,58,223,202,64 2055238405Sjkim call .L099key_256a 2056238405Sjkim movups %xmm0,(%edx) 2057238405Sjkim movl %ecx,16(%edx) 2058238405Sjkim xorl %eax,%eax 2059238405Sjkim ret 2060238405Sjkim.align 16 2061238405Sjkim.L099key_256a: 2062238405Sjkim movups %xmm2,(%edx) 2063238405Sjkim leal 16(%edx),%edx 2064238405Sjkim.L097key_256a_cold: 2065238405Sjkim shufps $16,%xmm0,%xmm4 2066238405Sjkim xorps %xmm4,%xmm0 2067238405Sjkim shufps $140,%xmm0,%xmm4 2068238405Sjkim xorps %xmm4,%xmm0 2069238405Sjkim shufps $255,%xmm1,%xmm1 2070238405Sjkim xorps %xmm1,%xmm0 2071238405Sjkim ret 2072238405Sjkim.align 16 2073238405Sjkim.L098key_256b: 2074238405Sjkim movups %xmm0,(%edx) 2075238405Sjkim leal 16(%edx),%edx 2076238405Sjkim shufps $16,%xmm2,%xmm4 2077238405Sjkim xorps %xmm4,%xmm2 2078238405Sjkim shufps $140,%xmm2,%xmm4 2079238405Sjkim xorps %xmm4,%xmm2 2080238405Sjkim shufps $170,%xmm1,%xmm1 2081238405Sjkim xorps %xmm1,%xmm2 2082238405Sjkim ret 2083238405Sjkim.align 4 2084238405Sjkim.L086bad_pointer: 2085238405Sjkim movl $-1,%eax 2086238405Sjkim ret 2087238405Sjkim.align 4 2088238405Sjkim.L089bad_keybits: 2089238405Sjkim movl $-2,%eax 2090238405Sjkim ret 2091238405Sjkim.size _aesni_set_encrypt_key,.-_aesni_set_encrypt_key 2092238405Sjkim.globl aesni_set_encrypt_key 2093238405Sjkim.type aesni_set_encrypt_key,@function 2094238405Sjkim.align 16 2095238405Sjkimaesni_set_encrypt_key: 2096238405Sjkim.L_aesni_set_encrypt_key_begin: 2097238405Sjkim movl 4(%esp),%eax 2098238405Sjkim movl 8(%esp),%ecx 2099238405Sjkim movl 12(%esp),%edx 2100238405Sjkim call _aesni_set_encrypt_key 2101238405Sjkim ret 2102238405Sjkim.size aesni_set_encrypt_key,.-.L_aesni_set_encrypt_key_begin 2103238405Sjkim.globl aesni_set_decrypt_key 2104238405Sjkim.type aesni_set_decrypt_key,@function 2105238405Sjkim.align 16 2106238405Sjkimaesni_set_decrypt_key: 2107238405Sjkim.L_aesni_set_decrypt_key_begin: 2108238405Sjkim movl 4(%esp),%eax 2109238405Sjkim movl 8(%esp),%ecx 2110238405Sjkim movl 12(%esp),%edx 2111238405Sjkim call _aesni_set_encrypt_key 2112238405Sjkim movl 12(%esp),%edx 2113238405Sjkim shll $4,%ecx 2114238405Sjkim testl %eax,%eax 2115238405Sjkim jnz .L100dec_key_ret 2116238405Sjkim leal 16(%edx,%ecx,1),%eax 2117238405Sjkim movups (%edx),%xmm0 2118238405Sjkim movups (%eax),%xmm1 2119238405Sjkim movups %xmm0,(%eax) 2120238405Sjkim movups %xmm1,(%edx) 2121238405Sjkim leal 16(%edx),%edx 2122238405Sjkim leal -16(%eax),%eax 2123238405Sjkim.L101dec_key_inverse: 2124238405Sjkim movups (%edx),%xmm0 2125238405Sjkim movups (%eax),%xmm1 2126238405Sjkim.byte 102,15,56,219,192 2127238405Sjkim.byte 102,15,56,219,201 2128238405Sjkim leal 16(%edx),%edx 2129238405Sjkim leal -16(%eax),%eax 2130238405Sjkim movups %xmm0,16(%eax) 2131238405Sjkim movups %xmm1,-16(%edx) 2132238405Sjkim cmpl %edx,%eax 2133238405Sjkim ja .L101dec_key_inverse 2134238405Sjkim movups (%edx),%xmm0 2135238405Sjkim.byte 102,15,56,219,192 2136238405Sjkim movups %xmm0,(%edx) 2137238405Sjkim xorl %eax,%eax 2138238405Sjkim.L100dec_key_ret: 2139238405Sjkim ret 2140238405Sjkim.size aesni_set_decrypt_key,.-.L_aesni_set_decrypt_key_begin 2141238405Sjkim.byte 65,69,83,32,102,111,114,32,73,110,116,101,108,32,65,69 2142238405Sjkim.byte 83,45,78,73,44,32,67,82,89,80,84,79,71,65,77,83 2143238405Sjkim.byte 32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115 2144238405Sjkim.byte 115,108,46,111,114,103,62,0 2145