1299481Sjkim# $FreeBSD: releng/11.0/secure/lib/libcrypto/i386/vpaes-x86.S 299481 2016-05-11 20:11:21Z jkim $ 2299481Sjkim# Do not modify. This file is auto-generated from vpaes-x86.pl. 3299389Sjkim#ifdef PIC 4299389Sjkim.file "vpaes-x86.S" 5238405Sjkim.text 6238405Sjkim.align 64 7238405Sjkim.L_vpaes_consts: 8238405Sjkim.long 218628480,235210255,168496130,67568393 9238405Sjkim.long 252381056,17041926,33884169,51187212 10238405Sjkim.long 252645135,252645135,252645135,252645135 11238405Sjkim.long 1512730624,3266504856,1377990664,3401244816 12238405Sjkim.long 830229760,1275146365,2969422977,3447763452 13238405Sjkim.long 3411033600,2979783055,338359620,2782886510 14238405Sjkim.long 4209124096,907596821,221174255,1006095553 15238405Sjkim.long 191964160,3799684038,3164090317,1589111125 16238405Sjkim.long 182528256,1777043520,2877432650,3265356744 17238405Sjkim.long 1874708224,3503451415,3305285752,363511674 18238405Sjkim.long 1606117888,3487855781,1093350906,2384367825 19238405Sjkim.long 197121,67569157,134941193,202313229 20238405Sjkim.long 67569157,134941193,202313229,197121 21238405Sjkim.long 134941193,202313229,197121,67569157 22238405Sjkim.long 202313229,197121,67569157,134941193 23238405Sjkim.long 33619971,100992007,168364043,235736079 24238405Sjkim.long 235736079,33619971,100992007,168364043 25238405Sjkim.long 168364043,235736079,33619971,100992007 26238405Sjkim.long 100992007,168364043,235736079,33619971 27238405Sjkim.long 50462976,117835012,185207048,252579084 28238405Sjkim.long 252314880,51251460,117574920,184942860 29238405Sjkim.long 184682752,252054788,50987272,118359308 30238405Sjkim.long 118099200,185467140,251790600,50727180 31238405Sjkim.long 2946363062,528716217,1300004225,1881839624 32238405Sjkim.long 1532713819,1532713819,1532713819,1532713819 33238405Sjkim.long 3602276352,4288629033,3737020424,4153884961 34238405Sjkim.long 1354558464,32357713,2958822624,3775749553 35238405Sjkim.long 1201988352,132424512,1572796698,503232858 36238405Sjkim.long 2213177600,1597421020,4103937655,675398315 37238405Sjkim.long 2749646592,4273543773,1511898873,121693092 38238405Sjkim.long 3040248576,1103263732,2871565598,1608280554 39238405Sjkim.long 2236667136,2588920351,482954393,64377734 40238405Sjkim.long 3069987328,291237287,2117370568,3650299247 41238405Sjkim.long 533321216,3573750986,2572112006,1401264716 42238405Sjkim.long 1339849704,2721158661,548607111,3445553514 43238405Sjkim.long 2128193280,3054596040,2183486460,1257083700 44238405Sjkim.long 655635200,1165381986,3923443150,2344132524 45238405Sjkim.long 190078720,256924420,290342170,357187870 46238405Sjkim.long 1610966272,2263057382,4103205268,309794674 47238405Sjkim.long 2592527872,2233205587,1335446729,3402964816 48238405Sjkim.long 3973531904,3225098121,3002836325,1918774430 49238405Sjkim.long 3870401024,2102906079,2284471353,4117666579 50238405Sjkim.long 617007872,1021508343,366931923,691083277 51238405Sjkim.long 2528395776,3491914898,2968704004,1613121270 52238405Sjkim.long 3445188352,3247741094,844474987,4093578302 53238405Sjkim.long 651481088,1190302358,1689581232,574775300 54238405Sjkim.long 4289380608,206939853,2555985458,2489840491 55238405Sjkim.long 2130264064,327674451,3566485037,3349835193 56238405Sjkim.long 2470714624,316102159,3636825756,3393945945 57238405Sjkim.byte 86,101,99,116,111,114,32,80,101,114,109,117,116,97,116,105 58238405Sjkim.byte 111,110,32,65,69,83,32,102,111,114,32,120,56,54,47,83 59238405Sjkim.byte 83,83,69,51,44,32,77,105,107,101,32,72,97,109,98,117 60238405Sjkim.byte 114,103,32,40,83,116,97,110,102,111,114,100,32,85,110,105 61238405Sjkim.byte 118,101,114,115,105,116,121,41,0 62238405Sjkim.align 64 63238405Sjkim.type _vpaes_preheat,@function 64238405Sjkim.align 16 65238405Sjkim_vpaes_preheat: 66238405Sjkim addl (%esp),%ebp 67238405Sjkim movdqa -48(%ebp),%xmm7 68238405Sjkim movdqa -16(%ebp),%xmm6 69238405Sjkim ret 70238405Sjkim.size _vpaes_preheat,.-_vpaes_preheat 71238405Sjkim.type _vpaes_encrypt_core,@function 72238405Sjkim.align 16 73238405Sjkim_vpaes_encrypt_core: 74238405Sjkim movl $16,%ecx 75238405Sjkim movl 240(%edx),%eax 76238405Sjkim movdqa %xmm6,%xmm1 77238405Sjkim movdqa (%ebp),%xmm2 78238405Sjkim pandn %xmm0,%xmm1 79290207Sjkim pand %xmm6,%xmm0 80238405Sjkim movdqu (%edx),%xmm5 81238405Sjkim.byte 102,15,56,0,208 82238405Sjkim movdqa 16(%ebp),%xmm0 83238405Sjkim pxor %xmm5,%xmm2 84290207Sjkim psrld $4,%xmm1 85238405Sjkim addl $16,%edx 86290207Sjkim.byte 102,15,56,0,193 87238405Sjkim leal 192(%ebp),%ebx 88290207Sjkim pxor %xmm2,%xmm0 89238405Sjkim jmp .L000enc_entry 90238405Sjkim.align 16 91238405Sjkim.L001enc_loop: 92238405Sjkim movdqa 32(%ebp),%xmm4 93290207Sjkim movdqa 48(%ebp),%xmm0 94238405Sjkim.byte 102,15,56,0,226 95290207Sjkim.byte 102,15,56,0,195 96238405Sjkim pxor %xmm5,%xmm4 97290207Sjkim movdqa 64(%ebp),%xmm5 98238405Sjkim pxor %xmm4,%xmm0 99290207Sjkim movdqa -64(%ebx,%ecx,1),%xmm1 100238405Sjkim.byte 102,15,56,0,234 101238405Sjkim movdqa 80(%ebp),%xmm2 102290207Sjkim movdqa (%ebx,%ecx,1),%xmm4 103238405Sjkim.byte 102,15,56,0,211 104290207Sjkim movdqa %xmm0,%xmm3 105238405Sjkim pxor %xmm5,%xmm2 106238405Sjkim.byte 102,15,56,0,193 107238405Sjkim addl $16,%edx 108238405Sjkim pxor %xmm2,%xmm0 109238405Sjkim.byte 102,15,56,0,220 110238405Sjkim addl $16,%ecx 111238405Sjkim pxor %xmm0,%xmm3 112238405Sjkim.byte 102,15,56,0,193 113238405Sjkim andl $48,%ecx 114290207Sjkim subl $1,%eax 115238405Sjkim pxor %xmm3,%xmm0 116238405Sjkim.L000enc_entry: 117238405Sjkim movdqa %xmm6,%xmm1 118290207Sjkim movdqa -32(%ebp),%xmm5 119238405Sjkim pandn %xmm0,%xmm1 120238405Sjkim psrld $4,%xmm1 121238405Sjkim pand %xmm6,%xmm0 122238405Sjkim.byte 102,15,56,0,232 123290207Sjkim movdqa %xmm7,%xmm3 124238405Sjkim pxor %xmm1,%xmm0 125238405Sjkim.byte 102,15,56,0,217 126290207Sjkim movdqa %xmm7,%xmm4 127238405Sjkim pxor %xmm5,%xmm3 128238405Sjkim.byte 102,15,56,0,224 129290207Sjkim movdqa %xmm7,%xmm2 130238405Sjkim pxor %xmm5,%xmm4 131238405Sjkim.byte 102,15,56,0,211 132290207Sjkim movdqa %xmm7,%xmm3 133238405Sjkim pxor %xmm0,%xmm2 134290207Sjkim.byte 102,15,56,0,220 135238405Sjkim movdqu (%edx),%xmm5 136238405Sjkim pxor %xmm1,%xmm3 137238405Sjkim jnz .L001enc_loop 138238405Sjkim movdqa 96(%ebp),%xmm4 139238405Sjkim movdqa 112(%ebp),%xmm0 140238405Sjkim.byte 102,15,56,0,226 141238405Sjkim pxor %xmm5,%xmm4 142238405Sjkim.byte 102,15,56,0,195 143238405Sjkim movdqa 64(%ebx,%ecx,1),%xmm1 144238405Sjkim pxor %xmm4,%xmm0 145238405Sjkim.byte 102,15,56,0,193 146238405Sjkim ret 147238405Sjkim.size _vpaes_encrypt_core,.-_vpaes_encrypt_core 148238405Sjkim.type _vpaes_decrypt_core,@function 149238405Sjkim.align 16 150238405Sjkim_vpaes_decrypt_core: 151290207Sjkim leal 608(%ebp),%ebx 152238405Sjkim movl 240(%edx),%eax 153238405Sjkim movdqa %xmm6,%xmm1 154238405Sjkim movdqa -64(%ebx),%xmm2 155238405Sjkim pandn %xmm0,%xmm1 156238405Sjkim movl %eax,%ecx 157238405Sjkim psrld $4,%xmm1 158238405Sjkim movdqu (%edx),%xmm5 159238405Sjkim shll $4,%ecx 160238405Sjkim pand %xmm6,%xmm0 161238405Sjkim.byte 102,15,56,0,208 162238405Sjkim movdqa -48(%ebx),%xmm0 163238405Sjkim xorl $48,%ecx 164238405Sjkim.byte 102,15,56,0,193 165238405Sjkim andl $48,%ecx 166238405Sjkim pxor %xmm5,%xmm2 167238405Sjkim movdqa 176(%ebp),%xmm5 168238405Sjkim pxor %xmm2,%xmm0 169238405Sjkim addl $16,%edx 170238405Sjkim leal -352(%ebx,%ecx,1),%ecx 171238405Sjkim jmp .L002dec_entry 172238405Sjkim.align 16 173238405Sjkim.L003dec_loop: 174238405Sjkim movdqa -32(%ebx),%xmm4 175290207Sjkim movdqa -16(%ebx),%xmm1 176238405Sjkim.byte 102,15,56,0,226 177290207Sjkim.byte 102,15,56,0,203 178238405Sjkim pxor %xmm4,%xmm0 179238405Sjkim movdqa (%ebx),%xmm4 180290207Sjkim pxor %xmm1,%xmm0 181290207Sjkim movdqa 16(%ebx),%xmm1 182238405Sjkim.byte 102,15,56,0,226 183290207Sjkim.byte 102,15,56,0,197 184290207Sjkim.byte 102,15,56,0,203 185238405Sjkim pxor %xmm4,%xmm0 186238405Sjkim movdqa 32(%ebx),%xmm4 187290207Sjkim pxor %xmm1,%xmm0 188290207Sjkim movdqa 48(%ebx),%xmm1 189238405Sjkim.byte 102,15,56,0,226 190290207Sjkim.byte 102,15,56,0,197 191290207Sjkim.byte 102,15,56,0,203 192238405Sjkim pxor %xmm4,%xmm0 193238405Sjkim movdqa 64(%ebx),%xmm4 194290207Sjkim pxor %xmm1,%xmm0 195290207Sjkim movdqa 80(%ebx),%xmm1 196238405Sjkim.byte 102,15,56,0,226 197290207Sjkim.byte 102,15,56,0,197 198290207Sjkim.byte 102,15,56,0,203 199238405Sjkim pxor %xmm4,%xmm0 200290207Sjkim addl $16,%edx 201238405Sjkim.byte 102,15,58,15,237,12 202290207Sjkim pxor %xmm1,%xmm0 203290207Sjkim subl $1,%eax 204238405Sjkim.L002dec_entry: 205238405Sjkim movdqa %xmm6,%xmm1 206290207Sjkim movdqa -32(%ebp),%xmm2 207238405Sjkim pandn %xmm0,%xmm1 208290207Sjkim pand %xmm6,%xmm0 209238405Sjkim psrld $4,%xmm1 210238405Sjkim.byte 102,15,56,0,208 211290207Sjkim movdqa %xmm7,%xmm3 212238405Sjkim pxor %xmm1,%xmm0 213238405Sjkim.byte 102,15,56,0,217 214290207Sjkim movdqa %xmm7,%xmm4 215238405Sjkim pxor %xmm2,%xmm3 216238405Sjkim.byte 102,15,56,0,224 217238405Sjkim pxor %xmm2,%xmm4 218238405Sjkim movdqa %xmm7,%xmm2 219238405Sjkim.byte 102,15,56,0,211 220290207Sjkim movdqa %xmm7,%xmm3 221238405Sjkim pxor %xmm0,%xmm2 222238405Sjkim.byte 102,15,56,0,220 223290207Sjkim movdqu (%edx),%xmm0 224238405Sjkim pxor %xmm1,%xmm3 225238405Sjkim jnz .L003dec_loop 226238405Sjkim movdqa 96(%ebx),%xmm4 227238405Sjkim.byte 102,15,56,0,226 228238405Sjkim pxor %xmm0,%xmm4 229238405Sjkim movdqa 112(%ebx),%xmm0 230238405Sjkim movdqa (%ecx),%xmm2 231238405Sjkim.byte 102,15,56,0,195 232238405Sjkim pxor %xmm4,%xmm0 233238405Sjkim.byte 102,15,56,0,194 234238405Sjkim ret 235238405Sjkim.size _vpaes_decrypt_core,.-_vpaes_decrypt_core 236238405Sjkim.type _vpaes_schedule_core,@function 237238405Sjkim.align 16 238238405Sjkim_vpaes_schedule_core: 239238405Sjkim addl (%esp),%ebp 240238405Sjkim movdqu (%esi),%xmm0 241238405Sjkim movdqa 320(%ebp),%xmm2 242238405Sjkim movdqa %xmm0,%xmm3 243238405Sjkim leal (%ebp),%ebx 244238405Sjkim movdqa %xmm2,4(%esp) 245238405Sjkim call _vpaes_schedule_transform 246238405Sjkim movdqa %xmm0,%xmm7 247238405Sjkim testl %edi,%edi 248238405Sjkim jnz .L004schedule_am_decrypting 249238405Sjkim movdqu %xmm0,(%edx) 250238405Sjkim jmp .L005schedule_go 251238405Sjkim.L004schedule_am_decrypting: 252238405Sjkim movdqa 256(%ebp,%ecx,1),%xmm1 253238405Sjkim.byte 102,15,56,0,217 254238405Sjkim movdqu %xmm3,(%edx) 255238405Sjkim xorl $48,%ecx 256238405Sjkim.L005schedule_go: 257238405Sjkim cmpl $192,%eax 258238405Sjkim ja .L006schedule_256 259238405Sjkim je .L007schedule_192 260238405Sjkim.L008schedule_128: 261238405Sjkim movl $10,%eax 262238405Sjkim.L009loop_schedule_128: 263238405Sjkim call _vpaes_schedule_round 264238405Sjkim decl %eax 265238405Sjkim jz .L010schedule_mangle_last 266238405Sjkim call _vpaes_schedule_mangle 267238405Sjkim jmp .L009loop_schedule_128 268238405Sjkim.align 16 269238405Sjkim.L007schedule_192: 270238405Sjkim movdqu 8(%esi),%xmm0 271238405Sjkim call _vpaes_schedule_transform 272238405Sjkim movdqa %xmm0,%xmm6 273238405Sjkim pxor %xmm4,%xmm4 274238405Sjkim movhlps %xmm4,%xmm6 275238405Sjkim movl $4,%eax 276238405Sjkim.L011loop_schedule_192: 277238405Sjkim call _vpaes_schedule_round 278238405Sjkim.byte 102,15,58,15,198,8 279238405Sjkim call _vpaes_schedule_mangle 280238405Sjkim call _vpaes_schedule_192_smear 281238405Sjkim call _vpaes_schedule_mangle 282238405Sjkim call _vpaes_schedule_round 283238405Sjkim decl %eax 284238405Sjkim jz .L010schedule_mangle_last 285238405Sjkim call _vpaes_schedule_mangle 286238405Sjkim call _vpaes_schedule_192_smear 287238405Sjkim jmp .L011loop_schedule_192 288238405Sjkim.align 16 289238405Sjkim.L006schedule_256: 290238405Sjkim movdqu 16(%esi),%xmm0 291238405Sjkim call _vpaes_schedule_transform 292238405Sjkim movl $7,%eax 293238405Sjkim.L012loop_schedule_256: 294238405Sjkim call _vpaes_schedule_mangle 295238405Sjkim movdqa %xmm0,%xmm6 296238405Sjkim call _vpaes_schedule_round 297238405Sjkim decl %eax 298238405Sjkim jz .L010schedule_mangle_last 299238405Sjkim call _vpaes_schedule_mangle 300238405Sjkim pshufd $255,%xmm0,%xmm0 301238405Sjkim movdqa %xmm7,20(%esp) 302238405Sjkim movdqa %xmm6,%xmm7 303238405Sjkim call .L_vpaes_schedule_low_round 304238405Sjkim movdqa 20(%esp),%xmm7 305238405Sjkim jmp .L012loop_schedule_256 306238405Sjkim.align 16 307238405Sjkim.L010schedule_mangle_last: 308238405Sjkim leal 384(%ebp),%ebx 309238405Sjkim testl %edi,%edi 310238405Sjkim jnz .L013schedule_mangle_last_dec 311238405Sjkim movdqa 256(%ebp,%ecx,1),%xmm1 312238405Sjkim.byte 102,15,56,0,193 313238405Sjkim leal 352(%ebp),%ebx 314238405Sjkim addl $32,%edx 315238405Sjkim.L013schedule_mangle_last_dec: 316238405Sjkim addl $-16,%edx 317238405Sjkim pxor 336(%ebp),%xmm0 318238405Sjkim call _vpaes_schedule_transform 319238405Sjkim movdqu %xmm0,(%edx) 320238405Sjkim pxor %xmm0,%xmm0 321238405Sjkim pxor %xmm1,%xmm1 322238405Sjkim pxor %xmm2,%xmm2 323238405Sjkim pxor %xmm3,%xmm3 324238405Sjkim pxor %xmm4,%xmm4 325238405Sjkim pxor %xmm5,%xmm5 326238405Sjkim pxor %xmm6,%xmm6 327238405Sjkim pxor %xmm7,%xmm7 328238405Sjkim ret 329238405Sjkim.size _vpaes_schedule_core,.-_vpaes_schedule_core 330238405Sjkim.type _vpaes_schedule_192_smear,@function 331238405Sjkim.align 16 332238405Sjkim_vpaes_schedule_192_smear: 333290207Sjkim pshufd $128,%xmm6,%xmm1 334238405Sjkim pshufd $254,%xmm7,%xmm0 335290207Sjkim pxor %xmm1,%xmm6 336290207Sjkim pxor %xmm1,%xmm1 337238405Sjkim pxor %xmm0,%xmm6 338238405Sjkim movdqa %xmm6,%xmm0 339238405Sjkim movhlps %xmm1,%xmm6 340238405Sjkim ret 341238405Sjkim.size _vpaes_schedule_192_smear,.-_vpaes_schedule_192_smear 342238405Sjkim.type _vpaes_schedule_round,@function 343238405Sjkim.align 16 344238405Sjkim_vpaes_schedule_round: 345238405Sjkim movdqa 8(%esp),%xmm2 346238405Sjkim pxor %xmm1,%xmm1 347238405Sjkim.byte 102,15,58,15,202,15 348238405Sjkim.byte 102,15,58,15,210,15 349238405Sjkim pxor %xmm1,%xmm7 350238405Sjkim pshufd $255,%xmm0,%xmm0 351238405Sjkim.byte 102,15,58,15,192,1 352238405Sjkim movdqa %xmm2,8(%esp) 353238405Sjkim.L_vpaes_schedule_low_round: 354238405Sjkim movdqa %xmm7,%xmm1 355238405Sjkim pslldq $4,%xmm7 356238405Sjkim pxor %xmm1,%xmm7 357238405Sjkim movdqa %xmm7,%xmm1 358238405Sjkim pslldq $8,%xmm7 359238405Sjkim pxor %xmm1,%xmm7 360238405Sjkim pxor 336(%ebp),%xmm7 361238405Sjkim movdqa -16(%ebp),%xmm4 362238405Sjkim movdqa -48(%ebp),%xmm5 363238405Sjkim movdqa %xmm4,%xmm1 364238405Sjkim pandn %xmm0,%xmm1 365238405Sjkim psrld $4,%xmm1 366238405Sjkim pand %xmm4,%xmm0 367238405Sjkim movdqa -32(%ebp),%xmm2 368238405Sjkim.byte 102,15,56,0,208 369238405Sjkim pxor %xmm1,%xmm0 370238405Sjkim movdqa %xmm5,%xmm3 371238405Sjkim.byte 102,15,56,0,217 372238405Sjkim pxor %xmm2,%xmm3 373238405Sjkim movdqa %xmm5,%xmm4 374238405Sjkim.byte 102,15,56,0,224 375238405Sjkim pxor %xmm2,%xmm4 376238405Sjkim movdqa %xmm5,%xmm2 377238405Sjkim.byte 102,15,56,0,211 378238405Sjkim pxor %xmm0,%xmm2 379238405Sjkim movdqa %xmm5,%xmm3 380238405Sjkim.byte 102,15,56,0,220 381238405Sjkim pxor %xmm1,%xmm3 382238405Sjkim movdqa 32(%ebp),%xmm4 383238405Sjkim.byte 102,15,56,0,226 384238405Sjkim movdqa 48(%ebp),%xmm0 385238405Sjkim.byte 102,15,56,0,195 386238405Sjkim pxor %xmm4,%xmm0 387238405Sjkim pxor %xmm7,%xmm0 388238405Sjkim movdqa %xmm0,%xmm7 389238405Sjkim ret 390238405Sjkim.size _vpaes_schedule_round,.-_vpaes_schedule_round 391238405Sjkim.type _vpaes_schedule_transform,@function 392238405Sjkim.align 16 393238405Sjkim_vpaes_schedule_transform: 394238405Sjkim movdqa -16(%ebp),%xmm2 395238405Sjkim movdqa %xmm2,%xmm1 396238405Sjkim pandn %xmm0,%xmm1 397238405Sjkim psrld $4,%xmm1 398238405Sjkim pand %xmm2,%xmm0 399238405Sjkim movdqa (%ebx),%xmm2 400238405Sjkim.byte 102,15,56,0,208 401238405Sjkim movdqa 16(%ebx),%xmm0 402238405Sjkim.byte 102,15,56,0,193 403238405Sjkim pxor %xmm2,%xmm0 404238405Sjkim ret 405238405Sjkim.size _vpaes_schedule_transform,.-_vpaes_schedule_transform 406238405Sjkim.type _vpaes_schedule_mangle,@function 407238405Sjkim.align 16 408238405Sjkim_vpaes_schedule_mangle: 409238405Sjkim movdqa %xmm0,%xmm4 410238405Sjkim movdqa 128(%ebp),%xmm5 411238405Sjkim testl %edi,%edi 412238405Sjkim jnz .L014schedule_mangle_dec 413238405Sjkim addl $16,%edx 414238405Sjkim pxor 336(%ebp),%xmm4 415238405Sjkim.byte 102,15,56,0,229 416238405Sjkim movdqa %xmm4,%xmm3 417238405Sjkim.byte 102,15,56,0,229 418238405Sjkim pxor %xmm4,%xmm3 419238405Sjkim.byte 102,15,56,0,229 420238405Sjkim pxor %xmm4,%xmm3 421238405Sjkim jmp .L015schedule_mangle_both 422238405Sjkim.align 16 423238405Sjkim.L014schedule_mangle_dec: 424238405Sjkim movdqa -16(%ebp),%xmm2 425238405Sjkim leal 416(%ebp),%esi 426238405Sjkim movdqa %xmm2,%xmm1 427238405Sjkim pandn %xmm4,%xmm1 428238405Sjkim psrld $4,%xmm1 429238405Sjkim pand %xmm2,%xmm4 430238405Sjkim movdqa (%esi),%xmm2 431238405Sjkim.byte 102,15,56,0,212 432238405Sjkim movdqa 16(%esi),%xmm3 433238405Sjkim.byte 102,15,56,0,217 434238405Sjkim pxor %xmm2,%xmm3 435238405Sjkim.byte 102,15,56,0,221 436238405Sjkim movdqa 32(%esi),%xmm2 437238405Sjkim.byte 102,15,56,0,212 438238405Sjkim pxor %xmm3,%xmm2 439238405Sjkim movdqa 48(%esi),%xmm3 440238405Sjkim.byte 102,15,56,0,217 441238405Sjkim pxor %xmm2,%xmm3 442238405Sjkim.byte 102,15,56,0,221 443238405Sjkim movdqa 64(%esi),%xmm2 444238405Sjkim.byte 102,15,56,0,212 445238405Sjkim pxor %xmm3,%xmm2 446238405Sjkim movdqa 80(%esi),%xmm3 447238405Sjkim.byte 102,15,56,0,217 448238405Sjkim pxor %xmm2,%xmm3 449238405Sjkim.byte 102,15,56,0,221 450238405Sjkim movdqa 96(%esi),%xmm2 451238405Sjkim.byte 102,15,56,0,212 452238405Sjkim pxor %xmm3,%xmm2 453238405Sjkim movdqa 112(%esi),%xmm3 454238405Sjkim.byte 102,15,56,0,217 455238405Sjkim pxor %xmm2,%xmm3 456238405Sjkim addl $-16,%edx 457238405Sjkim.L015schedule_mangle_both: 458238405Sjkim movdqa 256(%ebp,%ecx,1),%xmm1 459238405Sjkim.byte 102,15,56,0,217 460238405Sjkim addl $-16,%ecx 461238405Sjkim andl $48,%ecx 462238405Sjkim movdqu %xmm3,(%edx) 463238405Sjkim ret 464238405Sjkim.size _vpaes_schedule_mangle,.-_vpaes_schedule_mangle 465238405Sjkim.globl vpaes_set_encrypt_key 466238405Sjkim.type vpaes_set_encrypt_key,@function 467238405Sjkim.align 16 468238405Sjkimvpaes_set_encrypt_key: 469238405Sjkim.L_vpaes_set_encrypt_key_begin: 470238405Sjkim pushl %ebp 471238405Sjkim pushl %ebx 472238405Sjkim pushl %esi 473238405Sjkim pushl %edi 474238405Sjkim movl 20(%esp),%esi 475238405Sjkim leal -56(%esp),%ebx 476238405Sjkim movl 24(%esp),%eax 477238405Sjkim andl $-16,%ebx 478238405Sjkim movl 28(%esp),%edx 479238405Sjkim xchgl %esp,%ebx 480238405Sjkim movl %ebx,48(%esp) 481238405Sjkim movl %eax,%ebx 482238405Sjkim shrl $5,%ebx 483238405Sjkim addl $5,%ebx 484238405Sjkim movl %ebx,240(%edx) 485238405Sjkim movl $48,%ecx 486238405Sjkim movl $0,%edi 487238405Sjkim leal .L_vpaes_consts+0x30-.L016pic_point,%ebp 488238405Sjkim call _vpaes_schedule_core 489238405Sjkim.L016pic_point: 490238405Sjkim movl 48(%esp),%esp 491238405Sjkim xorl %eax,%eax 492238405Sjkim popl %edi 493238405Sjkim popl %esi 494238405Sjkim popl %ebx 495238405Sjkim popl %ebp 496238405Sjkim ret 497238405Sjkim.size vpaes_set_encrypt_key,.-.L_vpaes_set_encrypt_key_begin 498238405Sjkim.globl vpaes_set_decrypt_key 499238405Sjkim.type vpaes_set_decrypt_key,@function 500238405Sjkim.align 16 501238405Sjkimvpaes_set_decrypt_key: 502238405Sjkim.L_vpaes_set_decrypt_key_begin: 503238405Sjkim pushl %ebp 504238405Sjkim pushl %ebx 505238405Sjkim pushl %esi 506238405Sjkim pushl %edi 507238405Sjkim movl 20(%esp),%esi 508238405Sjkim leal -56(%esp),%ebx 509238405Sjkim movl 24(%esp),%eax 510238405Sjkim andl $-16,%ebx 511238405Sjkim movl 28(%esp),%edx 512238405Sjkim xchgl %esp,%ebx 513238405Sjkim movl %ebx,48(%esp) 514238405Sjkim movl %eax,%ebx 515238405Sjkim shrl $5,%ebx 516238405Sjkim addl $5,%ebx 517238405Sjkim movl %ebx,240(%edx) 518238405Sjkim shll $4,%ebx 519238405Sjkim leal 16(%edx,%ebx,1),%edx 520238405Sjkim movl $1,%edi 521238405Sjkim movl %eax,%ecx 522238405Sjkim shrl $1,%ecx 523238405Sjkim andl $32,%ecx 524238405Sjkim xorl $32,%ecx 525238405Sjkim leal .L_vpaes_consts+0x30-.L017pic_point,%ebp 526238405Sjkim call _vpaes_schedule_core 527238405Sjkim.L017pic_point: 528238405Sjkim movl 48(%esp),%esp 529238405Sjkim xorl %eax,%eax 530238405Sjkim popl %edi 531238405Sjkim popl %esi 532238405Sjkim popl %ebx 533238405Sjkim popl %ebp 534238405Sjkim ret 535238405Sjkim.size vpaes_set_decrypt_key,.-.L_vpaes_set_decrypt_key_begin 536238405Sjkim.globl vpaes_encrypt 537238405Sjkim.type vpaes_encrypt,@function 538238405Sjkim.align 16 539238405Sjkimvpaes_encrypt: 540238405Sjkim.L_vpaes_encrypt_begin: 541238405Sjkim pushl %ebp 542238405Sjkim pushl %ebx 543238405Sjkim pushl %esi 544238405Sjkim pushl %edi 545238405Sjkim leal .L_vpaes_consts+0x30-.L018pic_point,%ebp 546238405Sjkim call _vpaes_preheat 547238405Sjkim.L018pic_point: 548238405Sjkim movl 20(%esp),%esi 549238405Sjkim leal -56(%esp),%ebx 550238405Sjkim movl 24(%esp),%edi 551238405Sjkim andl $-16,%ebx 552238405Sjkim movl 28(%esp),%edx 553238405Sjkim xchgl %esp,%ebx 554238405Sjkim movl %ebx,48(%esp) 555238405Sjkim movdqu (%esi),%xmm0 556238405Sjkim call _vpaes_encrypt_core 557238405Sjkim movdqu %xmm0,(%edi) 558238405Sjkim movl 48(%esp),%esp 559238405Sjkim popl %edi 560238405Sjkim popl %esi 561238405Sjkim popl %ebx 562238405Sjkim popl %ebp 563238405Sjkim ret 564238405Sjkim.size vpaes_encrypt,.-.L_vpaes_encrypt_begin 565238405Sjkim.globl vpaes_decrypt 566238405Sjkim.type vpaes_decrypt,@function 567238405Sjkim.align 16 568238405Sjkimvpaes_decrypt: 569238405Sjkim.L_vpaes_decrypt_begin: 570238405Sjkim pushl %ebp 571238405Sjkim pushl %ebx 572238405Sjkim pushl %esi 573238405Sjkim pushl %edi 574238405Sjkim leal .L_vpaes_consts+0x30-.L019pic_point,%ebp 575238405Sjkim call _vpaes_preheat 576238405Sjkim.L019pic_point: 577238405Sjkim movl 20(%esp),%esi 578238405Sjkim leal -56(%esp),%ebx 579238405Sjkim movl 24(%esp),%edi 580238405Sjkim andl $-16,%ebx 581238405Sjkim movl 28(%esp),%edx 582238405Sjkim xchgl %esp,%ebx 583238405Sjkim movl %ebx,48(%esp) 584238405Sjkim movdqu (%esi),%xmm0 585238405Sjkim call _vpaes_decrypt_core 586238405Sjkim movdqu %xmm0,(%edi) 587238405Sjkim movl 48(%esp),%esp 588238405Sjkim popl %edi 589238405Sjkim popl %esi 590238405Sjkim popl %ebx 591238405Sjkim popl %ebp 592238405Sjkim ret 593238405Sjkim.size vpaes_decrypt,.-.L_vpaes_decrypt_begin 594238405Sjkim.globl vpaes_cbc_encrypt 595238405Sjkim.type vpaes_cbc_encrypt,@function 596238405Sjkim.align 16 597238405Sjkimvpaes_cbc_encrypt: 598238405Sjkim.L_vpaes_cbc_encrypt_begin: 599238405Sjkim pushl %ebp 600238405Sjkim pushl %ebx 601238405Sjkim pushl %esi 602238405Sjkim pushl %edi 603238405Sjkim movl 20(%esp),%esi 604238405Sjkim movl 24(%esp),%edi 605238405Sjkim movl 28(%esp),%eax 606238405Sjkim movl 32(%esp),%edx 607238405Sjkim subl $16,%eax 608238405Sjkim jc .L020cbc_abort 609238405Sjkim leal -56(%esp),%ebx 610238405Sjkim movl 36(%esp),%ebp 611238405Sjkim andl $-16,%ebx 612238405Sjkim movl 40(%esp),%ecx 613238405Sjkim xchgl %esp,%ebx 614238405Sjkim movdqu (%ebp),%xmm1 615238405Sjkim subl %esi,%edi 616238405Sjkim movl %ebx,48(%esp) 617238405Sjkim movl %edi,(%esp) 618238405Sjkim movl %edx,4(%esp) 619238405Sjkim movl %ebp,8(%esp) 620238405Sjkim movl %eax,%edi 621238405Sjkim leal .L_vpaes_consts+0x30-.L021pic_point,%ebp 622238405Sjkim call _vpaes_preheat 623238405Sjkim.L021pic_point: 624238405Sjkim cmpl $0,%ecx 625238405Sjkim je .L022cbc_dec_loop 626238405Sjkim jmp .L023cbc_enc_loop 627238405Sjkim.align 16 628238405Sjkim.L023cbc_enc_loop: 629238405Sjkim movdqu (%esi),%xmm0 630238405Sjkim pxor %xmm1,%xmm0 631238405Sjkim call _vpaes_encrypt_core 632238405Sjkim movl (%esp),%ebx 633238405Sjkim movl 4(%esp),%edx 634238405Sjkim movdqa %xmm0,%xmm1 635238405Sjkim movdqu %xmm0,(%ebx,%esi,1) 636238405Sjkim leal 16(%esi),%esi 637238405Sjkim subl $16,%edi 638238405Sjkim jnc .L023cbc_enc_loop 639238405Sjkim jmp .L024cbc_done 640238405Sjkim.align 16 641238405Sjkim.L022cbc_dec_loop: 642238405Sjkim movdqu (%esi),%xmm0 643238405Sjkim movdqa %xmm1,16(%esp) 644238405Sjkim movdqa %xmm0,32(%esp) 645238405Sjkim call _vpaes_decrypt_core 646238405Sjkim movl (%esp),%ebx 647238405Sjkim movl 4(%esp),%edx 648238405Sjkim pxor 16(%esp),%xmm0 649238405Sjkim movdqa 32(%esp),%xmm1 650238405Sjkim movdqu %xmm0,(%ebx,%esi,1) 651238405Sjkim leal 16(%esi),%esi 652238405Sjkim subl $16,%edi 653238405Sjkim jnc .L022cbc_dec_loop 654238405Sjkim.L024cbc_done: 655238405Sjkim movl 8(%esp),%ebx 656238405Sjkim movl 48(%esp),%esp 657238405Sjkim movdqu %xmm1,(%ebx) 658238405Sjkim.L020cbc_abort: 659238405Sjkim popl %edi 660238405Sjkim popl %esi 661238405Sjkim popl %ebx 662238405Sjkim popl %ebp 663238405Sjkim ret 664238405Sjkim.size vpaes_cbc_encrypt,.-.L_vpaes_cbc_encrypt_begin 665299389Sjkim#else 666299389Sjkim.file "vpaes-x86.S" 667299389Sjkim.text 668299389Sjkim.align 64 669299389Sjkim.L_vpaes_consts: 670299389Sjkim.long 218628480,235210255,168496130,67568393 671299389Sjkim.long 252381056,17041926,33884169,51187212 672299389Sjkim.long 252645135,252645135,252645135,252645135 673299389Sjkim.long 1512730624,3266504856,1377990664,3401244816 674299389Sjkim.long 830229760,1275146365,2969422977,3447763452 675299389Sjkim.long 3411033600,2979783055,338359620,2782886510 676299389Sjkim.long 4209124096,907596821,221174255,1006095553 677299389Sjkim.long 191964160,3799684038,3164090317,1589111125 678299389Sjkim.long 182528256,1777043520,2877432650,3265356744 679299389Sjkim.long 1874708224,3503451415,3305285752,363511674 680299389Sjkim.long 1606117888,3487855781,1093350906,2384367825 681299389Sjkim.long 197121,67569157,134941193,202313229 682299389Sjkim.long 67569157,134941193,202313229,197121 683299389Sjkim.long 134941193,202313229,197121,67569157 684299389Sjkim.long 202313229,197121,67569157,134941193 685299389Sjkim.long 33619971,100992007,168364043,235736079 686299389Sjkim.long 235736079,33619971,100992007,168364043 687299389Sjkim.long 168364043,235736079,33619971,100992007 688299389Sjkim.long 100992007,168364043,235736079,33619971 689299389Sjkim.long 50462976,117835012,185207048,252579084 690299389Sjkim.long 252314880,51251460,117574920,184942860 691299389Sjkim.long 184682752,252054788,50987272,118359308 692299389Sjkim.long 118099200,185467140,251790600,50727180 693299389Sjkim.long 2946363062,528716217,1300004225,1881839624 694299389Sjkim.long 1532713819,1532713819,1532713819,1532713819 695299389Sjkim.long 3602276352,4288629033,3737020424,4153884961 696299389Sjkim.long 1354558464,32357713,2958822624,3775749553 697299389Sjkim.long 1201988352,132424512,1572796698,503232858 698299389Sjkim.long 2213177600,1597421020,4103937655,675398315 699299389Sjkim.long 2749646592,4273543773,1511898873,121693092 700299389Sjkim.long 3040248576,1103263732,2871565598,1608280554 701299389Sjkim.long 2236667136,2588920351,482954393,64377734 702299389Sjkim.long 3069987328,291237287,2117370568,3650299247 703299389Sjkim.long 533321216,3573750986,2572112006,1401264716 704299389Sjkim.long 1339849704,2721158661,548607111,3445553514 705299389Sjkim.long 2128193280,3054596040,2183486460,1257083700 706299389Sjkim.long 655635200,1165381986,3923443150,2344132524 707299389Sjkim.long 190078720,256924420,290342170,357187870 708299389Sjkim.long 1610966272,2263057382,4103205268,309794674 709299389Sjkim.long 2592527872,2233205587,1335446729,3402964816 710299389Sjkim.long 3973531904,3225098121,3002836325,1918774430 711299389Sjkim.long 3870401024,2102906079,2284471353,4117666579 712299389Sjkim.long 617007872,1021508343,366931923,691083277 713299389Sjkim.long 2528395776,3491914898,2968704004,1613121270 714299389Sjkim.long 3445188352,3247741094,844474987,4093578302 715299389Sjkim.long 651481088,1190302358,1689581232,574775300 716299389Sjkim.long 4289380608,206939853,2555985458,2489840491 717299389Sjkim.long 2130264064,327674451,3566485037,3349835193 718299389Sjkim.long 2470714624,316102159,3636825756,3393945945 719299389Sjkim.byte 86,101,99,116,111,114,32,80,101,114,109,117,116,97,116,105 720299389Sjkim.byte 111,110,32,65,69,83,32,102,111,114,32,120,56,54,47,83 721299389Sjkim.byte 83,83,69,51,44,32,77,105,107,101,32,72,97,109,98,117 722299389Sjkim.byte 114,103,32,40,83,116,97,110,102,111,114,100,32,85,110,105 723299389Sjkim.byte 118,101,114,115,105,116,121,41,0 724299389Sjkim.align 64 725299389Sjkim.type _vpaes_preheat,@function 726299389Sjkim.align 16 727299389Sjkim_vpaes_preheat: 728299389Sjkim addl (%esp),%ebp 729299389Sjkim movdqa -48(%ebp),%xmm7 730299389Sjkim movdqa -16(%ebp),%xmm6 731299389Sjkim ret 732299389Sjkim.size _vpaes_preheat,.-_vpaes_preheat 733299389Sjkim.type _vpaes_encrypt_core,@function 734299389Sjkim.align 16 735299389Sjkim_vpaes_encrypt_core: 736299389Sjkim movl $16,%ecx 737299389Sjkim movl 240(%edx),%eax 738299389Sjkim movdqa %xmm6,%xmm1 739299389Sjkim movdqa (%ebp),%xmm2 740299389Sjkim pandn %xmm0,%xmm1 741299389Sjkim pand %xmm6,%xmm0 742299389Sjkim movdqu (%edx),%xmm5 743299389Sjkim.byte 102,15,56,0,208 744299389Sjkim movdqa 16(%ebp),%xmm0 745299389Sjkim pxor %xmm5,%xmm2 746299389Sjkim psrld $4,%xmm1 747299389Sjkim addl $16,%edx 748299389Sjkim.byte 102,15,56,0,193 749299389Sjkim leal 192(%ebp),%ebx 750299389Sjkim pxor %xmm2,%xmm0 751299389Sjkim jmp .L000enc_entry 752299389Sjkim.align 16 753299389Sjkim.L001enc_loop: 754299389Sjkim movdqa 32(%ebp),%xmm4 755299389Sjkim movdqa 48(%ebp),%xmm0 756299389Sjkim.byte 102,15,56,0,226 757299389Sjkim.byte 102,15,56,0,195 758299389Sjkim pxor %xmm5,%xmm4 759299389Sjkim movdqa 64(%ebp),%xmm5 760299389Sjkim pxor %xmm4,%xmm0 761299389Sjkim movdqa -64(%ebx,%ecx,1),%xmm1 762299389Sjkim.byte 102,15,56,0,234 763299389Sjkim movdqa 80(%ebp),%xmm2 764299389Sjkim movdqa (%ebx,%ecx,1),%xmm4 765299389Sjkim.byte 102,15,56,0,211 766299389Sjkim movdqa %xmm0,%xmm3 767299389Sjkim pxor %xmm5,%xmm2 768299389Sjkim.byte 102,15,56,0,193 769299389Sjkim addl $16,%edx 770299389Sjkim pxor %xmm2,%xmm0 771299389Sjkim.byte 102,15,56,0,220 772299389Sjkim addl $16,%ecx 773299389Sjkim pxor %xmm0,%xmm3 774299389Sjkim.byte 102,15,56,0,193 775299389Sjkim andl $48,%ecx 776299389Sjkim subl $1,%eax 777299389Sjkim pxor %xmm3,%xmm0 778299389Sjkim.L000enc_entry: 779299389Sjkim movdqa %xmm6,%xmm1 780299389Sjkim movdqa -32(%ebp),%xmm5 781299389Sjkim pandn %xmm0,%xmm1 782299389Sjkim psrld $4,%xmm1 783299389Sjkim pand %xmm6,%xmm0 784299389Sjkim.byte 102,15,56,0,232 785299389Sjkim movdqa %xmm7,%xmm3 786299389Sjkim pxor %xmm1,%xmm0 787299389Sjkim.byte 102,15,56,0,217 788299389Sjkim movdqa %xmm7,%xmm4 789299389Sjkim pxor %xmm5,%xmm3 790299389Sjkim.byte 102,15,56,0,224 791299389Sjkim movdqa %xmm7,%xmm2 792299389Sjkim pxor %xmm5,%xmm4 793299389Sjkim.byte 102,15,56,0,211 794299389Sjkim movdqa %xmm7,%xmm3 795299389Sjkim pxor %xmm0,%xmm2 796299389Sjkim.byte 102,15,56,0,220 797299389Sjkim movdqu (%edx),%xmm5 798299389Sjkim pxor %xmm1,%xmm3 799299389Sjkim jnz .L001enc_loop 800299389Sjkim movdqa 96(%ebp),%xmm4 801299389Sjkim movdqa 112(%ebp),%xmm0 802299389Sjkim.byte 102,15,56,0,226 803299389Sjkim pxor %xmm5,%xmm4 804299389Sjkim.byte 102,15,56,0,195 805299389Sjkim movdqa 64(%ebx,%ecx,1),%xmm1 806299389Sjkim pxor %xmm4,%xmm0 807299389Sjkim.byte 102,15,56,0,193 808299389Sjkim ret 809299389Sjkim.size _vpaes_encrypt_core,.-_vpaes_encrypt_core 810299389Sjkim.type _vpaes_decrypt_core,@function 811299389Sjkim.align 16 812299389Sjkim_vpaes_decrypt_core: 813299389Sjkim leal 608(%ebp),%ebx 814299389Sjkim movl 240(%edx),%eax 815299389Sjkim movdqa %xmm6,%xmm1 816299389Sjkim movdqa -64(%ebx),%xmm2 817299389Sjkim pandn %xmm0,%xmm1 818299389Sjkim movl %eax,%ecx 819299389Sjkim psrld $4,%xmm1 820299389Sjkim movdqu (%edx),%xmm5 821299389Sjkim shll $4,%ecx 822299389Sjkim pand %xmm6,%xmm0 823299389Sjkim.byte 102,15,56,0,208 824299389Sjkim movdqa -48(%ebx),%xmm0 825299389Sjkim xorl $48,%ecx 826299389Sjkim.byte 102,15,56,0,193 827299389Sjkim andl $48,%ecx 828299389Sjkim pxor %xmm5,%xmm2 829299389Sjkim movdqa 176(%ebp),%xmm5 830299389Sjkim pxor %xmm2,%xmm0 831299389Sjkim addl $16,%edx 832299389Sjkim leal -352(%ebx,%ecx,1),%ecx 833299389Sjkim jmp .L002dec_entry 834299389Sjkim.align 16 835299389Sjkim.L003dec_loop: 836299389Sjkim movdqa -32(%ebx),%xmm4 837299389Sjkim movdqa -16(%ebx),%xmm1 838299389Sjkim.byte 102,15,56,0,226 839299389Sjkim.byte 102,15,56,0,203 840299389Sjkim pxor %xmm4,%xmm0 841299389Sjkim movdqa (%ebx),%xmm4 842299389Sjkim pxor %xmm1,%xmm0 843299389Sjkim movdqa 16(%ebx),%xmm1 844299389Sjkim.byte 102,15,56,0,226 845299389Sjkim.byte 102,15,56,0,197 846299389Sjkim.byte 102,15,56,0,203 847299389Sjkim pxor %xmm4,%xmm0 848299389Sjkim movdqa 32(%ebx),%xmm4 849299389Sjkim pxor %xmm1,%xmm0 850299389Sjkim movdqa 48(%ebx),%xmm1 851299389Sjkim.byte 102,15,56,0,226 852299389Sjkim.byte 102,15,56,0,197 853299389Sjkim.byte 102,15,56,0,203 854299389Sjkim pxor %xmm4,%xmm0 855299389Sjkim movdqa 64(%ebx),%xmm4 856299389Sjkim pxor %xmm1,%xmm0 857299389Sjkim movdqa 80(%ebx),%xmm1 858299389Sjkim.byte 102,15,56,0,226 859299389Sjkim.byte 102,15,56,0,197 860299389Sjkim.byte 102,15,56,0,203 861299389Sjkim pxor %xmm4,%xmm0 862299389Sjkim addl $16,%edx 863299389Sjkim.byte 102,15,58,15,237,12 864299389Sjkim pxor %xmm1,%xmm0 865299389Sjkim subl $1,%eax 866299389Sjkim.L002dec_entry: 867299389Sjkim movdqa %xmm6,%xmm1 868299389Sjkim movdqa -32(%ebp),%xmm2 869299389Sjkim pandn %xmm0,%xmm1 870299389Sjkim pand %xmm6,%xmm0 871299389Sjkim psrld $4,%xmm1 872299389Sjkim.byte 102,15,56,0,208 873299389Sjkim movdqa %xmm7,%xmm3 874299389Sjkim pxor %xmm1,%xmm0 875299389Sjkim.byte 102,15,56,0,217 876299389Sjkim movdqa %xmm7,%xmm4 877299389Sjkim pxor %xmm2,%xmm3 878299389Sjkim.byte 102,15,56,0,224 879299389Sjkim pxor %xmm2,%xmm4 880299389Sjkim movdqa %xmm7,%xmm2 881299389Sjkim.byte 102,15,56,0,211 882299389Sjkim movdqa %xmm7,%xmm3 883299389Sjkim pxor %xmm0,%xmm2 884299389Sjkim.byte 102,15,56,0,220 885299389Sjkim movdqu (%edx),%xmm0 886299389Sjkim pxor %xmm1,%xmm3 887299389Sjkim jnz .L003dec_loop 888299389Sjkim movdqa 96(%ebx),%xmm4 889299389Sjkim.byte 102,15,56,0,226 890299389Sjkim pxor %xmm0,%xmm4 891299389Sjkim movdqa 112(%ebx),%xmm0 892299389Sjkim movdqa (%ecx),%xmm2 893299389Sjkim.byte 102,15,56,0,195 894299389Sjkim pxor %xmm4,%xmm0 895299389Sjkim.byte 102,15,56,0,194 896299389Sjkim ret 897299389Sjkim.size _vpaes_decrypt_core,.-_vpaes_decrypt_core 898299389Sjkim.type _vpaes_schedule_core,@function 899299389Sjkim.align 16 900299389Sjkim_vpaes_schedule_core: 901299389Sjkim addl (%esp),%ebp 902299389Sjkim movdqu (%esi),%xmm0 903299389Sjkim movdqa 320(%ebp),%xmm2 904299389Sjkim movdqa %xmm0,%xmm3 905299389Sjkim leal (%ebp),%ebx 906299389Sjkim movdqa %xmm2,4(%esp) 907299389Sjkim call _vpaes_schedule_transform 908299389Sjkim movdqa %xmm0,%xmm7 909299389Sjkim testl %edi,%edi 910299389Sjkim jnz .L004schedule_am_decrypting 911299389Sjkim movdqu %xmm0,(%edx) 912299389Sjkim jmp .L005schedule_go 913299389Sjkim.L004schedule_am_decrypting: 914299389Sjkim movdqa 256(%ebp,%ecx,1),%xmm1 915299389Sjkim.byte 102,15,56,0,217 916299389Sjkim movdqu %xmm3,(%edx) 917299389Sjkim xorl $48,%ecx 918299389Sjkim.L005schedule_go: 919299389Sjkim cmpl $192,%eax 920299389Sjkim ja .L006schedule_256 921299389Sjkim je .L007schedule_192 922299389Sjkim.L008schedule_128: 923299389Sjkim movl $10,%eax 924299389Sjkim.L009loop_schedule_128: 925299389Sjkim call _vpaes_schedule_round 926299389Sjkim decl %eax 927299389Sjkim jz .L010schedule_mangle_last 928299389Sjkim call _vpaes_schedule_mangle 929299389Sjkim jmp .L009loop_schedule_128 930299389Sjkim.align 16 931299389Sjkim.L007schedule_192: 932299389Sjkim movdqu 8(%esi),%xmm0 933299389Sjkim call _vpaes_schedule_transform 934299389Sjkim movdqa %xmm0,%xmm6 935299389Sjkim pxor %xmm4,%xmm4 936299389Sjkim movhlps %xmm4,%xmm6 937299389Sjkim movl $4,%eax 938299389Sjkim.L011loop_schedule_192: 939299389Sjkim call _vpaes_schedule_round 940299389Sjkim.byte 102,15,58,15,198,8 941299389Sjkim call _vpaes_schedule_mangle 942299389Sjkim call _vpaes_schedule_192_smear 943299389Sjkim call _vpaes_schedule_mangle 944299389Sjkim call _vpaes_schedule_round 945299389Sjkim decl %eax 946299389Sjkim jz .L010schedule_mangle_last 947299389Sjkim call _vpaes_schedule_mangle 948299389Sjkim call _vpaes_schedule_192_smear 949299389Sjkim jmp .L011loop_schedule_192 950299389Sjkim.align 16 951299389Sjkim.L006schedule_256: 952299389Sjkim movdqu 16(%esi),%xmm0 953299389Sjkim call _vpaes_schedule_transform 954299389Sjkim movl $7,%eax 955299389Sjkim.L012loop_schedule_256: 956299389Sjkim call _vpaes_schedule_mangle 957299389Sjkim movdqa %xmm0,%xmm6 958299389Sjkim call _vpaes_schedule_round 959299389Sjkim decl %eax 960299389Sjkim jz .L010schedule_mangle_last 961299389Sjkim call _vpaes_schedule_mangle 962299389Sjkim pshufd $255,%xmm0,%xmm0 963299389Sjkim movdqa %xmm7,20(%esp) 964299389Sjkim movdqa %xmm6,%xmm7 965299389Sjkim call .L_vpaes_schedule_low_round 966299389Sjkim movdqa 20(%esp),%xmm7 967299389Sjkim jmp .L012loop_schedule_256 968299389Sjkim.align 16 969299389Sjkim.L010schedule_mangle_last: 970299389Sjkim leal 384(%ebp),%ebx 971299389Sjkim testl %edi,%edi 972299389Sjkim jnz .L013schedule_mangle_last_dec 973299389Sjkim movdqa 256(%ebp,%ecx,1),%xmm1 974299389Sjkim.byte 102,15,56,0,193 975299389Sjkim leal 352(%ebp),%ebx 976299389Sjkim addl $32,%edx 977299389Sjkim.L013schedule_mangle_last_dec: 978299389Sjkim addl $-16,%edx 979299389Sjkim pxor 336(%ebp),%xmm0 980299389Sjkim call _vpaes_schedule_transform 981299389Sjkim movdqu %xmm0,(%edx) 982299389Sjkim pxor %xmm0,%xmm0 983299389Sjkim pxor %xmm1,%xmm1 984299389Sjkim pxor %xmm2,%xmm2 985299389Sjkim pxor %xmm3,%xmm3 986299389Sjkim pxor %xmm4,%xmm4 987299389Sjkim pxor %xmm5,%xmm5 988299389Sjkim pxor %xmm6,%xmm6 989299389Sjkim pxor %xmm7,%xmm7 990299389Sjkim ret 991299389Sjkim.size _vpaes_schedule_core,.-_vpaes_schedule_core 992299389Sjkim.type _vpaes_schedule_192_smear,@function 993299389Sjkim.align 16 994299389Sjkim_vpaes_schedule_192_smear: 995299389Sjkim pshufd $128,%xmm6,%xmm1 996299389Sjkim pshufd $254,%xmm7,%xmm0 997299389Sjkim pxor %xmm1,%xmm6 998299389Sjkim pxor %xmm1,%xmm1 999299389Sjkim pxor %xmm0,%xmm6 1000299389Sjkim movdqa %xmm6,%xmm0 1001299389Sjkim movhlps %xmm1,%xmm6 1002299389Sjkim ret 1003299389Sjkim.size _vpaes_schedule_192_smear,.-_vpaes_schedule_192_smear 1004299389Sjkim.type _vpaes_schedule_round,@function 1005299389Sjkim.align 16 1006299389Sjkim_vpaes_schedule_round: 1007299389Sjkim movdqa 8(%esp),%xmm2 1008299389Sjkim pxor %xmm1,%xmm1 1009299389Sjkim.byte 102,15,58,15,202,15 1010299389Sjkim.byte 102,15,58,15,210,15 1011299389Sjkim pxor %xmm1,%xmm7 1012299389Sjkim pshufd $255,%xmm0,%xmm0 1013299389Sjkim.byte 102,15,58,15,192,1 1014299389Sjkim movdqa %xmm2,8(%esp) 1015299389Sjkim.L_vpaes_schedule_low_round: 1016299389Sjkim movdqa %xmm7,%xmm1 1017299389Sjkim pslldq $4,%xmm7 1018299389Sjkim pxor %xmm1,%xmm7 1019299389Sjkim movdqa %xmm7,%xmm1 1020299389Sjkim pslldq $8,%xmm7 1021299389Sjkim pxor %xmm1,%xmm7 1022299389Sjkim pxor 336(%ebp),%xmm7 1023299389Sjkim movdqa -16(%ebp),%xmm4 1024299389Sjkim movdqa -48(%ebp),%xmm5 1025299389Sjkim movdqa %xmm4,%xmm1 1026299389Sjkim pandn %xmm0,%xmm1 1027299389Sjkim psrld $4,%xmm1 1028299389Sjkim pand %xmm4,%xmm0 1029299389Sjkim movdqa -32(%ebp),%xmm2 1030299389Sjkim.byte 102,15,56,0,208 1031299389Sjkim pxor %xmm1,%xmm0 1032299389Sjkim movdqa %xmm5,%xmm3 1033299389Sjkim.byte 102,15,56,0,217 1034299389Sjkim pxor %xmm2,%xmm3 1035299389Sjkim movdqa %xmm5,%xmm4 1036299389Sjkim.byte 102,15,56,0,224 1037299389Sjkim pxor %xmm2,%xmm4 1038299389Sjkim movdqa %xmm5,%xmm2 1039299389Sjkim.byte 102,15,56,0,211 1040299389Sjkim pxor %xmm0,%xmm2 1041299389Sjkim movdqa %xmm5,%xmm3 1042299389Sjkim.byte 102,15,56,0,220 1043299389Sjkim pxor %xmm1,%xmm3 1044299389Sjkim movdqa 32(%ebp),%xmm4 1045299389Sjkim.byte 102,15,56,0,226 1046299389Sjkim movdqa 48(%ebp),%xmm0 1047299389Sjkim.byte 102,15,56,0,195 1048299389Sjkim pxor %xmm4,%xmm0 1049299389Sjkim pxor %xmm7,%xmm0 1050299389Sjkim movdqa %xmm0,%xmm7 1051299389Sjkim ret 1052299389Sjkim.size _vpaes_schedule_round,.-_vpaes_schedule_round 1053299389Sjkim.type _vpaes_schedule_transform,@function 1054299389Sjkim.align 16 1055299389Sjkim_vpaes_schedule_transform: 1056299389Sjkim movdqa -16(%ebp),%xmm2 1057299389Sjkim movdqa %xmm2,%xmm1 1058299389Sjkim pandn %xmm0,%xmm1 1059299389Sjkim psrld $4,%xmm1 1060299389Sjkim pand %xmm2,%xmm0 1061299389Sjkim movdqa (%ebx),%xmm2 1062299389Sjkim.byte 102,15,56,0,208 1063299389Sjkim movdqa 16(%ebx),%xmm0 1064299389Sjkim.byte 102,15,56,0,193 1065299389Sjkim pxor %xmm2,%xmm0 1066299389Sjkim ret 1067299389Sjkim.size _vpaes_schedule_transform,.-_vpaes_schedule_transform 1068299389Sjkim.type _vpaes_schedule_mangle,@function 1069299389Sjkim.align 16 1070299389Sjkim_vpaes_schedule_mangle: 1071299389Sjkim movdqa %xmm0,%xmm4 1072299389Sjkim movdqa 128(%ebp),%xmm5 1073299389Sjkim testl %edi,%edi 1074299389Sjkim jnz .L014schedule_mangle_dec 1075299389Sjkim addl $16,%edx 1076299389Sjkim pxor 336(%ebp),%xmm4 1077299389Sjkim.byte 102,15,56,0,229 1078299389Sjkim movdqa %xmm4,%xmm3 1079299389Sjkim.byte 102,15,56,0,229 1080299389Sjkim pxor %xmm4,%xmm3 1081299389Sjkim.byte 102,15,56,0,229 1082299389Sjkim pxor %xmm4,%xmm3 1083299389Sjkim jmp .L015schedule_mangle_both 1084299389Sjkim.align 16 1085299389Sjkim.L014schedule_mangle_dec: 1086299389Sjkim movdqa -16(%ebp),%xmm2 1087299389Sjkim leal 416(%ebp),%esi 1088299389Sjkim movdqa %xmm2,%xmm1 1089299389Sjkim pandn %xmm4,%xmm1 1090299389Sjkim psrld $4,%xmm1 1091299389Sjkim pand %xmm2,%xmm4 1092299389Sjkim movdqa (%esi),%xmm2 1093299389Sjkim.byte 102,15,56,0,212 1094299389Sjkim movdqa 16(%esi),%xmm3 1095299389Sjkim.byte 102,15,56,0,217 1096299389Sjkim pxor %xmm2,%xmm3 1097299389Sjkim.byte 102,15,56,0,221 1098299389Sjkim movdqa 32(%esi),%xmm2 1099299389Sjkim.byte 102,15,56,0,212 1100299389Sjkim pxor %xmm3,%xmm2 1101299389Sjkim movdqa 48(%esi),%xmm3 1102299389Sjkim.byte 102,15,56,0,217 1103299389Sjkim pxor %xmm2,%xmm3 1104299389Sjkim.byte 102,15,56,0,221 1105299389Sjkim movdqa 64(%esi),%xmm2 1106299389Sjkim.byte 102,15,56,0,212 1107299389Sjkim pxor %xmm3,%xmm2 1108299389Sjkim movdqa 80(%esi),%xmm3 1109299389Sjkim.byte 102,15,56,0,217 1110299389Sjkim pxor %xmm2,%xmm3 1111299389Sjkim.byte 102,15,56,0,221 1112299389Sjkim movdqa 96(%esi),%xmm2 1113299389Sjkim.byte 102,15,56,0,212 1114299389Sjkim pxor %xmm3,%xmm2 1115299389Sjkim movdqa 112(%esi),%xmm3 1116299389Sjkim.byte 102,15,56,0,217 1117299389Sjkim pxor %xmm2,%xmm3 1118299389Sjkim addl $-16,%edx 1119299389Sjkim.L015schedule_mangle_both: 1120299389Sjkim movdqa 256(%ebp,%ecx,1),%xmm1 1121299389Sjkim.byte 102,15,56,0,217 1122299389Sjkim addl $-16,%ecx 1123299389Sjkim andl $48,%ecx 1124299389Sjkim movdqu %xmm3,(%edx) 1125299389Sjkim ret 1126299389Sjkim.size _vpaes_schedule_mangle,.-_vpaes_schedule_mangle 1127299389Sjkim.globl vpaes_set_encrypt_key 1128299389Sjkim.type vpaes_set_encrypt_key,@function 1129299389Sjkim.align 16 1130299389Sjkimvpaes_set_encrypt_key: 1131299389Sjkim.L_vpaes_set_encrypt_key_begin: 1132299389Sjkim pushl %ebp 1133299389Sjkim pushl %ebx 1134299389Sjkim pushl %esi 1135299389Sjkim pushl %edi 1136299389Sjkim movl 20(%esp),%esi 1137299389Sjkim leal -56(%esp),%ebx 1138299389Sjkim movl 24(%esp),%eax 1139299389Sjkim andl $-16,%ebx 1140299389Sjkim movl 28(%esp),%edx 1141299389Sjkim xchgl %esp,%ebx 1142299389Sjkim movl %ebx,48(%esp) 1143299389Sjkim movl %eax,%ebx 1144299389Sjkim shrl $5,%ebx 1145299389Sjkim addl $5,%ebx 1146299389Sjkim movl %ebx,240(%edx) 1147299389Sjkim movl $48,%ecx 1148299389Sjkim movl $0,%edi 1149299389Sjkim leal .L_vpaes_consts+0x30-.L016pic_point,%ebp 1150299389Sjkim call _vpaes_schedule_core 1151299389Sjkim.L016pic_point: 1152299389Sjkim movl 48(%esp),%esp 1153299389Sjkim xorl %eax,%eax 1154299389Sjkim popl %edi 1155299389Sjkim popl %esi 1156299389Sjkim popl %ebx 1157299389Sjkim popl %ebp 1158299389Sjkim ret 1159299389Sjkim.size vpaes_set_encrypt_key,.-.L_vpaes_set_encrypt_key_begin 1160299389Sjkim.globl vpaes_set_decrypt_key 1161299389Sjkim.type vpaes_set_decrypt_key,@function 1162299389Sjkim.align 16 1163299389Sjkimvpaes_set_decrypt_key: 1164299389Sjkim.L_vpaes_set_decrypt_key_begin: 1165299389Sjkim pushl %ebp 1166299389Sjkim pushl %ebx 1167299389Sjkim pushl %esi 1168299389Sjkim pushl %edi 1169299389Sjkim movl 20(%esp),%esi 1170299389Sjkim leal -56(%esp),%ebx 1171299389Sjkim movl 24(%esp),%eax 1172299389Sjkim andl $-16,%ebx 1173299389Sjkim movl 28(%esp),%edx 1174299389Sjkim xchgl %esp,%ebx 1175299389Sjkim movl %ebx,48(%esp) 1176299389Sjkim movl %eax,%ebx 1177299389Sjkim shrl $5,%ebx 1178299389Sjkim addl $5,%ebx 1179299389Sjkim movl %ebx,240(%edx) 1180299389Sjkim shll $4,%ebx 1181299389Sjkim leal 16(%edx,%ebx,1),%edx 1182299389Sjkim movl $1,%edi 1183299389Sjkim movl %eax,%ecx 1184299389Sjkim shrl $1,%ecx 1185299389Sjkim andl $32,%ecx 1186299389Sjkim xorl $32,%ecx 1187299389Sjkim leal .L_vpaes_consts+0x30-.L017pic_point,%ebp 1188299389Sjkim call _vpaes_schedule_core 1189299389Sjkim.L017pic_point: 1190299389Sjkim movl 48(%esp),%esp 1191299389Sjkim xorl %eax,%eax 1192299389Sjkim popl %edi 1193299389Sjkim popl %esi 1194299389Sjkim popl %ebx 1195299389Sjkim popl %ebp 1196299389Sjkim ret 1197299389Sjkim.size vpaes_set_decrypt_key,.-.L_vpaes_set_decrypt_key_begin 1198299389Sjkim.globl vpaes_encrypt 1199299389Sjkim.type vpaes_encrypt,@function 1200299389Sjkim.align 16 1201299389Sjkimvpaes_encrypt: 1202299389Sjkim.L_vpaes_encrypt_begin: 1203299389Sjkim pushl %ebp 1204299389Sjkim pushl %ebx 1205299389Sjkim pushl %esi 1206299389Sjkim pushl %edi 1207299389Sjkim leal .L_vpaes_consts+0x30-.L018pic_point,%ebp 1208299389Sjkim call _vpaes_preheat 1209299389Sjkim.L018pic_point: 1210299389Sjkim movl 20(%esp),%esi 1211299389Sjkim leal -56(%esp),%ebx 1212299389Sjkim movl 24(%esp),%edi 1213299389Sjkim andl $-16,%ebx 1214299389Sjkim movl 28(%esp),%edx 1215299389Sjkim xchgl %esp,%ebx 1216299389Sjkim movl %ebx,48(%esp) 1217299389Sjkim movdqu (%esi),%xmm0 1218299389Sjkim call _vpaes_encrypt_core 1219299389Sjkim movdqu %xmm0,(%edi) 1220299389Sjkim movl 48(%esp),%esp 1221299389Sjkim popl %edi 1222299389Sjkim popl %esi 1223299389Sjkim popl %ebx 1224299389Sjkim popl %ebp 1225299389Sjkim ret 1226299389Sjkim.size vpaes_encrypt,.-.L_vpaes_encrypt_begin 1227299389Sjkim.globl vpaes_decrypt 1228299389Sjkim.type vpaes_decrypt,@function 1229299389Sjkim.align 16 1230299389Sjkimvpaes_decrypt: 1231299389Sjkim.L_vpaes_decrypt_begin: 1232299389Sjkim pushl %ebp 1233299389Sjkim pushl %ebx 1234299389Sjkim pushl %esi 1235299389Sjkim pushl %edi 1236299389Sjkim leal .L_vpaes_consts+0x30-.L019pic_point,%ebp 1237299389Sjkim call _vpaes_preheat 1238299389Sjkim.L019pic_point: 1239299389Sjkim movl 20(%esp),%esi 1240299389Sjkim leal -56(%esp),%ebx 1241299389Sjkim movl 24(%esp),%edi 1242299389Sjkim andl $-16,%ebx 1243299389Sjkim movl 28(%esp),%edx 1244299389Sjkim xchgl %esp,%ebx 1245299389Sjkim movl %ebx,48(%esp) 1246299389Sjkim movdqu (%esi),%xmm0 1247299389Sjkim call _vpaes_decrypt_core 1248299389Sjkim movdqu %xmm0,(%edi) 1249299389Sjkim movl 48(%esp),%esp 1250299389Sjkim popl %edi 1251299389Sjkim popl %esi 1252299389Sjkim popl %ebx 1253299389Sjkim popl %ebp 1254299389Sjkim ret 1255299389Sjkim.size vpaes_decrypt,.-.L_vpaes_decrypt_begin 1256299389Sjkim.globl vpaes_cbc_encrypt 1257299389Sjkim.type vpaes_cbc_encrypt,@function 1258299389Sjkim.align 16 1259299389Sjkimvpaes_cbc_encrypt: 1260299389Sjkim.L_vpaes_cbc_encrypt_begin: 1261299389Sjkim pushl %ebp 1262299389Sjkim pushl %ebx 1263299389Sjkim pushl %esi 1264299389Sjkim pushl %edi 1265299389Sjkim movl 20(%esp),%esi 1266299389Sjkim movl 24(%esp),%edi 1267299389Sjkim movl 28(%esp),%eax 1268299389Sjkim movl 32(%esp),%edx 1269299389Sjkim subl $16,%eax 1270299389Sjkim jc .L020cbc_abort 1271299389Sjkim leal -56(%esp),%ebx 1272299389Sjkim movl 36(%esp),%ebp 1273299389Sjkim andl $-16,%ebx 1274299389Sjkim movl 40(%esp),%ecx 1275299389Sjkim xchgl %esp,%ebx 1276299389Sjkim movdqu (%ebp),%xmm1 1277299389Sjkim subl %esi,%edi 1278299389Sjkim movl %ebx,48(%esp) 1279299389Sjkim movl %edi,(%esp) 1280299389Sjkim movl %edx,4(%esp) 1281299389Sjkim movl %ebp,8(%esp) 1282299389Sjkim movl %eax,%edi 1283299389Sjkim leal .L_vpaes_consts+0x30-.L021pic_point,%ebp 1284299389Sjkim call _vpaes_preheat 1285299389Sjkim.L021pic_point: 1286299389Sjkim cmpl $0,%ecx 1287299389Sjkim je .L022cbc_dec_loop 1288299389Sjkim jmp .L023cbc_enc_loop 1289299389Sjkim.align 16 1290299389Sjkim.L023cbc_enc_loop: 1291299389Sjkim movdqu (%esi),%xmm0 1292299389Sjkim pxor %xmm1,%xmm0 1293299389Sjkim call _vpaes_encrypt_core 1294299389Sjkim movl (%esp),%ebx 1295299389Sjkim movl 4(%esp),%edx 1296299389Sjkim movdqa %xmm0,%xmm1 1297299389Sjkim movdqu %xmm0,(%ebx,%esi,1) 1298299389Sjkim leal 16(%esi),%esi 1299299389Sjkim subl $16,%edi 1300299389Sjkim jnc .L023cbc_enc_loop 1301299389Sjkim jmp .L024cbc_done 1302299389Sjkim.align 16 1303299389Sjkim.L022cbc_dec_loop: 1304299389Sjkim movdqu (%esi),%xmm0 1305299389Sjkim movdqa %xmm1,16(%esp) 1306299389Sjkim movdqa %xmm0,32(%esp) 1307299389Sjkim call _vpaes_decrypt_core 1308299389Sjkim movl (%esp),%ebx 1309299389Sjkim movl 4(%esp),%edx 1310299389Sjkim pxor 16(%esp),%xmm0 1311299389Sjkim movdqa 32(%esp),%xmm1 1312299389Sjkim movdqu %xmm0,(%ebx,%esi,1) 1313299389Sjkim leal 16(%esi),%esi 1314299389Sjkim subl $16,%edi 1315299389Sjkim jnc .L022cbc_dec_loop 1316299389Sjkim.L024cbc_done: 1317299389Sjkim movl 8(%esp),%ebx 1318299389Sjkim movl 48(%esp),%esp 1319299389Sjkim movdqu %xmm1,(%ebx) 1320299389Sjkim.L020cbc_abort: 1321299389Sjkim popl %edi 1322299389Sjkim popl %esi 1323299389Sjkim popl %ebx 1324299389Sjkim popl %ebp 1325299389Sjkim ret 1326299389Sjkim.size vpaes_cbc_encrypt,.-.L_vpaes_cbc_encrypt_begin 1327299389Sjkim#endif 1328