1116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#if defined(__i386__) 2116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.file "vpaes-x86.S" 3116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.text 4116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.align 6,0x90 5116680a4aac90f2aa7413d9095a592090648e557Ben MurdochL_vpaes_consts: 6116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.long 218628480,235210255,168496130,67568393 7116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.long 252381056,17041926,33884169,51187212 8116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.long 252645135,252645135,252645135,252645135 9116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.long 1512730624,3266504856,1377990664,3401244816 10116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.long 830229760,1275146365,2969422977,3447763452 11116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.long 3411033600,2979783055,338359620,2782886510 12116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.long 4209124096,907596821,221174255,1006095553 13116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.long 191964160,3799684038,3164090317,1589111125 14116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.long 182528256,1777043520,2877432650,3265356744 15116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.long 1874708224,3503451415,3305285752,363511674 16116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.long 1606117888,3487855781,1093350906,2384367825 17116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.long 197121,67569157,134941193,202313229 18116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.long 67569157,134941193,202313229,197121 19116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.long 134941193,202313229,197121,67569157 20116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.long 202313229,197121,67569157,134941193 21116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.long 33619971,100992007,168364043,235736079 22116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.long 235736079,33619971,100992007,168364043 23116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.long 168364043,235736079,33619971,100992007 24116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.long 100992007,168364043,235736079,33619971 25116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.long 50462976,117835012,185207048,252579084 26116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.long 252314880,51251460,117574920,184942860 27116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.long 184682752,252054788,50987272,118359308 28116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.long 118099200,185467140,251790600,50727180 29116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.long 2946363062,528716217,1300004225,1881839624 30116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.long 1532713819,1532713819,1532713819,1532713819 31116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.long 3602276352,4288629033,3737020424,4153884961 32116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.long 1354558464,32357713,2958822624,3775749553 33116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.long 1201988352,132424512,1572796698,503232858 34116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.long 2213177600,1597421020,4103937655,675398315 35116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.long 2749646592,4273543773,1511898873,121693092 36116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.long 3040248576,1103263732,2871565598,1608280554 37116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.long 2236667136,2588920351,482954393,64377734 38116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.long 3069987328,291237287,2117370568,3650299247 39116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.long 533321216,3573750986,2572112006,1401264716 40116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.long 1339849704,2721158661,548607111,3445553514 41116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.long 2128193280,3054596040,2183486460,1257083700 42116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.long 655635200,1165381986,3923443150,2344132524 43116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.long 190078720,256924420,290342170,357187870 44116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.long 1610966272,2263057382,4103205268,309794674 45116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.long 2592527872,2233205587,1335446729,3402964816 46116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.long 3973531904,3225098121,3002836325,1918774430 47116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.long 3870401024,2102906079,2284471353,4117666579 48116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.long 617007872,1021508343,366931923,691083277 49116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.long 2528395776,3491914898,2968704004,1613121270 50116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.long 3445188352,3247741094,844474987,4093578302 51116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.long 651481088,1190302358,1689581232,574775300 52116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.long 4289380608,206939853,2555985458,2489840491 53116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.long 2130264064,327674451,3566485037,3349835193 54116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.long 2470714624,316102159,3636825756,3393945945 55116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.byte 86,101,99,116,111,114,32,80,101,114,109,117,116,97,116,105 56116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.byte 111,110,32,65,69,83,32,102,111,114,32,120,56,54,47,83 57116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.byte 83,83,69,51,44,32,77,105,107,101,32,72,97,109,98,117 58116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.byte 114,103,32,40,83,116,97,110,102,111,114,100,32,85,110,105 59116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.byte 118,101,114,115,105,116,121,41,0 60116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.align 6,0x90 615f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles).private_extern __vpaes_preheat 62116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.align 4 63116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch__vpaes_preheat: 64116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch addl (%esp),%ebp 65116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa -48(%ebp),%xmm7 66116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa -16(%ebp),%xmm6 67116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ret 685f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles).private_extern __vpaes_encrypt_core 69116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.align 4 70116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch__vpaes_encrypt_core: 71116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movl $16,%ecx 72116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movl 240(%edx),%eax 73116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa %xmm6,%xmm1 74116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa (%ebp),%xmm2 75116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pandn %xmm0,%xmm1 76116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pand %xmm6,%xmm0 77116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqu (%edx),%xmm5 78116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.byte 102,15,56,0,208 79116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa 16(%ebp),%xmm0 80116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor %xmm5,%xmm2 81116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch psrld $4,%xmm1 82116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch addl $16,%edx 83116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.byte 102,15,56,0,193 84116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch leal 192(%ebp),%ebx 85116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor %xmm2,%xmm0 86116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch jmp L000enc_entry 87116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.align 4,0x90 88116680a4aac90f2aa7413d9095a592090648e557Ben MurdochL001enc_loop: 89116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa 32(%ebp),%xmm4 90116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa 48(%ebp),%xmm0 91116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.byte 102,15,56,0,226 92116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.byte 102,15,56,0,195 93116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor %xmm5,%xmm4 94116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa 64(%ebp),%xmm5 95116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor %xmm4,%xmm0 96116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa -64(%ebx,%ecx,1),%xmm1 97116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.byte 102,15,56,0,234 98116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa 80(%ebp),%xmm2 99116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa (%ebx,%ecx,1),%xmm4 100116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.byte 102,15,56,0,211 101116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa %xmm0,%xmm3 102116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor %xmm5,%xmm2 103116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.byte 102,15,56,0,193 104116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch addl $16,%edx 105116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor %xmm2,%xmm0 106116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.byte 102,15,56,0,220 107116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch addl $16,%ecx 108116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor %xmm0,%xmm3 109116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.byte 102,15,56,0,193 110116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch andl $48,%ecx 111116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch subl $1,%eax 112116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor %xmm3,%xmm0 113116680a4aac90f2aa7413d9095a592090648e557Ben MurdochL000enc_entry: 114116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa %xmm6,%xmm1 115116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa -32(%ebp),%xmm5 116116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pandn %xmm0,%xmm1 117116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch psrld $4,%xmm1 118116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pand %xmm6,%xmm0 119116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.byte 102,15,56,0,232 120116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa %xmm7,%xmm3 121116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor %xmm1,%xmm0 122116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.byte 102,15,56,0,217 123116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa %xmm7,%xmm4 124116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor %xmm5,%xmm3 125116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.byte 102,15,56,0,224 126116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa %xmm7,%xmm2 127116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor %xmm5,%xmm4 128116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.byte 102,15,56,0,211 129116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa %xmm7,%xmm3 130116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor %xmm0,%xmm2 131116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.byte 102,15,56,0,220 132116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqu (%edx),%xmm5 133116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor %xmm1,%xmm3 134116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch jnz L001enc_loop 135116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa 96(%ebp),%xmm4 136116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa 112(%ebp),%xmm0 137116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.byte 102,15,56,0,226 138116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor %xmm5,%xmm4 139116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.byte 102,15,56,0,195 140116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa 64(%ebx,%ecx,1),%xmm1 141116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor %xmm4,%xmm0 142116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.byte 102,15,56,0,193 143116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ret 1445f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles).private_extern __vpaes_decrypt_core 145116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.align 4 146116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch__vpaes_decrypt_core: 147116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch leal 608(%ebp),%ebx 148116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movl 240(%edx),%eax 149116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa %xmm6,%xmm1 150116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa -64(%ebx),%xmm2 151116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pandn %xmm0,%xmm1 152116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movl %eax,%ecx 153116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch psrld $4,%xmm1 154116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqu (%edx),%xmm5 155116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch shll $4,%ecx 156116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pand %xmm6,%xmm0 157116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.byte 102,15,56,0,208 158116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa -48(%ebx),%xmm0 159116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch xorl $48,%ecx 160116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.byte 102,15,56,0,193 161116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch andl $48,%ecx 162116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor %xmm5,%xmm2 163116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa 176(%ebp),%xmm5 164116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor %xmm2,%xmm0 165116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch addl $16,%edx 166116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch leal -352(%ebx,%ecx,1),%ecx 167116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch jmp L002dec_entry 168116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.align 4,0x90 169116680a4aac90f2aa7413d9095a592090648e557Ben MurdochL003dec_loop: 170116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa -32(%ebx),%xmm4 171116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa -16(%ebx),%xmm1 172116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.byte 102,15,56,0,226 173116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.byte 102,15,56,0,203 174116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor %xmm4,%xmm0 175116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa (%ebx),%xmm4 176116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor %xmm1,%xmm0 177116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa 16(%ebx),%xmm1 178116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.byte 102,15,56,0,226 179116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.byte 102,15,56,0,197 180116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.byte 102,15,56,0,203 181116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor %xmm4,%xmm0 182116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa 32(%ebx),%xmm4 183116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor %xmm1,%xmm0 184116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa 48(%ebx),%xmm1 185116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.byte 102,15,56,0,226 186116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.byte 102,15,56,0,197 187116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.byte 102,15,56,0,203 188116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor %xmm4,%xmm0 189116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa 64(%ebx),%xmm4 190116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor %xmm1,%xmm0 191116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa 80(%ebx),%xmm1 192116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.byte 102,15,56,0,226 193116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.byte 102,15,56,0,197 194116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.byte 102,15,56,0,203 195116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor %xmm4,%xmm0 196116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch addl $16,%edx 197116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.byte 102,15,58,15,237,12 198116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor %xmm1,%xmm0 199116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch subl $1,%eax 200116680a4aac90f2aa7413d9095a592090648e557Ben MurdochL002dec_entry: 201116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa %xmm6,%xmm1 202116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa -32(%ebp),%xmm2 203116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pandn %xmm0,%xmm1 204116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pand %xmm6,%xmm0 205116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch psrld $4,%xmm1 206116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.byte 102,15,56,0,208 207116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa %xmm7,%xmm3 208116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor %xmm1,%xmm0 209116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.byte 102,15,56,0,217 210116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa %xmm7,%xmm4 211116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor %xmm2,%xmm3 212116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.byte 102,15,56,0,224 213116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor %xmm2,%xmm4 214116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa %xmm7,%xmm2 215116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.byte 102,15,56,0,211 216116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa %xmm7,%xmm3 217116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor %xmm0,%xmm2 218116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.byte 102,15,56,0,220 219116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqu (%edx),%xmm0 220116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor %xmm1,%xmm3 221116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch jnz L003dec_loop 222116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa 96(%ebx),%xmm4 223116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.byte 102,15,56,0,226 224116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor %xmm0,%xmm4 225116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa 112(%ebx),%xmm0 226116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa (%ecx),%xmm2 227116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.byte 102,15,56,0,195 228116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor %xmm4,%xmm0 229116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.byte 102,15,56,0,194 230116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ret 2315f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles).private_extern __vpaes_schedule_core 232116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.align 4 233116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch__vpaes_schedule_core: 234116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch addl (%esp),%ebp 235116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqu (%esi),%xmm0 236116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa 320(%ebp),%xmm2 237116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa %xmm0,%xmm3 238116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch leal (%ebp),%ebx 239116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa %xmm2,4(%esp) 240116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch call __vpaes_schedule_transform 241116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa %xmm0,%xmm7 242116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch testl %edi,%edi 243116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch jnz L004schedule_am_decrypting 244116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqu %xmm0,(%edx) 245116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch jmp L005schedule_go 246116680a4aac90f2aa7413d9095a592090648e557Ben MurdochL004schedule_am_decrypting: 247116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa 256(%ebp,%ecx,1),%xmm1 248116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.byte 102,15,56,0,217 249116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqu %xmm3,(%edx) 250116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch xorl $48,%ecx 251116680a4aac90f2aa7413d9095a592090648e557Ben MurdochL005schedule_go: 252116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch cmpl $192,%eax 253116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ja L006schedule_256 254116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch je L007schedule_192 255116680a4aac90f2aa7413d9095a592090648e557Ben MurdochL008schedule_128: 256116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movl $10,%eax 257116680a4aac90f2aa7413d9095a592090648e557Ben MurdochL009loop_schedule_128: 258116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch call __vpaes_schedule_round 259116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch decl %eax 260116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch jz L010schedule_mangle_last 261116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch call __vpaes_schedule_mangle 262116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch jmp L009loop_schedule_128 263116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.align 4,0x90 264116680a4aac90f2aa7413d9095a592090648e557Ben MurdochL007schedule_192: 265116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqu 8(%esi),%xmm0 266116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch call __vpaes_schedule_transform 267116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa %xmm0,%xmm6 268116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor %xmm4,%xmm4 269116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movhlps %xmm4,%xmm6 270116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movl $4,%eax 271116680a4aac90f2aa7413d9095a592090648e557Ben MurdochL011loop_schedule_192: 272116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch call __vpaes_schedule_round 273116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.byte 102,15,58,15,198,8 274116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch call __vpaes_schedule_mangle 275116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch call __vpaes_schedule_192_smear 276116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch call __vpaes_schedule_mangle 277116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch call __vpaes_schedule_round 278116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch decl %eax 279116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch jz L010schedule_mangle_last 280116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch call __vpaes_schedule_mangle 281116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch call __vpaes_schedule_192_smear 282116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch jmp L011loop_schedule_192 283116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.align 4,0x90 284116680a4aac90f2aa7413d9095a592090648e557Ben MurdochL006schedule_256: 285116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqu 16(%esi),%xmm0 286116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch call __vpaes_schedule_transform 287116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movl $7,%eax 288116680a4aac90f2aa7413d9095a592090648e557Ben MurdochL012loop_schedule_256: 289116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch call __vpaes_schedule_mangle 290116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa %xmm0,%xmm6 291116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch call __vpaes_schedule_round 292116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch decl %eax 293116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch jz L010schedule_mangle_last 294116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch call __vpaes_schedule_mangle 295116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pshufd $255,%xmm0,%xmm0 296116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa %xmm7,20(%esp) 297116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa %xmm6,%xmm7 298116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch call L_vpaes_schedule_low_round 299116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa 20(%esp),%xmm7 300116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch jmp L012loop_schedule_256 301116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.align 4,0x90 302116680a4aac90f2aa7413d9095a592090648e557Ben MurdochL010schedule_mangle_last: 303116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch leal 384(%ebp),%ebx 304116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch testl %edi,%edi 305116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch jnz L013schedule_mangle_last_dec 306116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa 256(%ebp,%ecx,1),%xmm1 307116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.byte 102,15,56,0,193 308116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch leal 352(%ebp),%ebx 309116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch addl $32,%edx 310116680a4aac90f2aa7413d9095a592090648e557Ben MurdochL013schedule_mangle_last_dec: 311116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch addl $-16,%edx 312116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor 336(%ebp),%xmm0 313116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch call __vpaes_schedule_transform 314116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqu %xmm0,(%edx) 315116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor %xmm0,%xmm0 316116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor %xmm1,%xmm1 317116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor %xmm2,%xmm2 318116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor %xmm3,%xmm3 319116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor %xmm4,%xmm4 320116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor %xmm5,%xmm5 321116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor %xmm6,%xmm6 322116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor %xmm7,%xmm7 323116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ret 3245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles).private_extern __vpaes_schedule_192_smear 325116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.align 4 326116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch__vpaes_schedule_192_smear: 327116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pshufd $128,%xmm6,%xmm1 328116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pshufd $254,%xmm7,%xmm0 329116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor %xmm1,%xmm6 330116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor %xmm1,%xmm1 331116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor %xmm0,%xmm6 332116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa %xmm6,%xmm0 333116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movhlps %xmm1,%xmm6 334116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ret 3355f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles).private_extern __vpaes_schedule_round 336116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.align 4 337116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch__vpaes_schedule_round: 338116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa 8(%esp),%xmm2 339116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor %xmm1,%xmm1 340116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.byte 102,15,58,15,202,15 341116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.byte 102,15,58,15,210,15 342116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor %xmm1,%xmm7 343116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pshufd $255,%xmm0,%xmm0 344116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.byte 102,15,58,15,192,1 345116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa %xmm2,8(%esp) 346116680a4aac90f2aa7413d9095a592090648e557Ben MurdochL_vpaes_schedule_low_round: 347116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa %xmm7,%xmm1 348116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pslldq $4,%xmm7 349116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor %xmm1,%xmm7 350116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa %xmm7,%xmm1 351116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pslldq $8,%xmm7 352116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor %xmm1,%xmm7 353116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor 336(%ebp),%xmm7 354116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa -16(%ebp),%xmm4 355116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa -48(%ebp),%xmm5 356116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa %xmm4,%xmm1 357116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pandn %xmm0,%xmm1 358116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch psrld $4,%xmm1 359116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pand %xmm4,%xmm0 360116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa -32(%ebp),%xmm2 361116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.byte 102,15,56,0,208 362116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor %xmm1,%xmm0 363116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa %xmm5,%xmm3 364116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.byte 102,15,56,0,217 365116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor %xmm2,%xmm3 366116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa %xmm5,%xmm4 367116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.byte 102,15,56,0,224 368116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor %xmm2,%xmm4 369116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa %xmm5,%xmm2 370116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.byte 102,15,56,0,211 371116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor %xmm0,%xmm2 372116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa %xmm5,%xmm3 373116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.byte 102,15,56,0,220 374116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor %xmm1,%xmm3 375116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa 32(%ebp),%xmm4 376116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.byte 102,15,56,0,226 377116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa 48(%ebp),%xmm0 378116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.byte 102,15,56,0,195 379116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor %xmm4,%xmm0 380116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor %xmm7,%xmm0 381116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa %xmm0,%xmm7 382116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ret 3835f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles).private_extern __vpaes_schedule_transform 384116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.align 4 385116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch__vpaes_schedule_transform: 386116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa -16(%ebp),%xmm2 387116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa %xmm2,%xmm1 388116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pandn %xmm0,%xmm1 389116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch psrld $4,%xmm1 390116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pand %xmm2,%xmm0 391116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa (%ebx),%xmm2 392116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.byte 102,15,56,0,208 393116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa 16(%ebx),%xmm0 394116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.byte 102,15,56,0,193 395116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor %xmm2,%xmm0 396116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ret 3975f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles).private_extern __vpaes_schedule_mangle 398116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.align 4 399116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch__vpaes_schedule_mangle: 400116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa %xmm0,%xmm4 401116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa 128(%ebp),%xmm5 402116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch testl %edi,%edi 403116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch jnz L014schedule_mangle_dec 404116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch addl $16,%edx 405116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor 336(%ebp),%xmm4 406116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.byte 102,15,56,0,229 407116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa %xmm4,%xmm3 408116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.byte 102,15,56,0,229 409116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor %xmm4,%xmm3 410116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.byte 102,15,56,0,229 411116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor %xmm4,%xmm3 412116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch jmp L015schedule_mangle_both 413116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.align 4,0x90 414116680a4aac90f2aa7413d9095a592090648e557Ben MurdochL014schedule_mangle_dec: 415116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa -16(%ebp),%xmm2 416116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch leal 416(%ebp),%esi 417116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa %xmm2,%xmm1 418116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pandn %xmm4,%xmm1 419116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch psrld $4,%xmm1 420116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pand %xmm2,%xmm4 421116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa (%esi),%xmm2 422116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.byte 102,15,56,0,212 423116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa 16(%esi),%xmm3 424116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.byte 102,15,56,0,217 425116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor %xmm2,%xmm3 426116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.byte 102,15,56,0,221 427116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa 32(%esi),%xmm2 428116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.byte 102,15,56,0,212 429116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor %xmm3,%xmm2 430116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa 48(%esi),%xmm3 431116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.byte 102,15,56,0,217 432116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor %xmm2,%xmm3 433116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.byte 102,15,56,0,221 434116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa 64(%esi),%xmm2 435116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.byte 102,15,56,0,212 436116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor %xmm3,%xmm2 437116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa 80(%esi),%xmm3 438116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.byte 102,15,56,0,217 439116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor %xmm2,%xmm3 440116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.byte 102,15,56,0,221 441116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa 96(%esi),%xmm2 442116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.byte 102,15,56,0,212 443116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor %xmm3,%xmm2 444116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa 112(%esi),%xmm3 445116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.byte 102,15,56,0,217 446116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor %xmm2,%xmm3 447116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch addl $-16,%edx 448116680a4aac90f2aa7413d9095a592090648e557Ben MurdochL015schedule_mangle_both: 449116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa 256(%ebp,%ecx,1),%xmm1 450116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.byte 102,15,56,0,217 451116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch addl $-16,%ecx 452116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch andl $48,%ecx 453116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqu %xmm3,(%edx) 454116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ret 455116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.globl _vpaes_set_encrypt_key 4565f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles).private_extern _vpaes_set_encrypt_key 457116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.align 4 458116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch_vpaes_set_encrypt_key: 459116680a4aac90f2aa7413d9095a592090648e557Ben MurdochL_vpaes_set_encrypt_key_begin: 460116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pushl %ebp 461116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pushl %ebx 462116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pushl %esi 463116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pushl %edi 464116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movl 20(%esp),%esi 465116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch leal -56(%esp),%ebx 466116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movl 24(%esp),%eax 467116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch andl $-16,%ebx 468116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movl 28(%esp),%edx 469116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch xchgl %esp,%ebx 470116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movl %ebx,48(%esp) 471116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movl %eax,%ebx 472116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch shrl $5,%ebx 473116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch addl $5,%ebx 474116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movl %ebx,240(%edx) 475116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movl $48,%ecx 476116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movl $0,%edi 477116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch leal L_vpaes_consts+0x30-L016pic_point,%ebp 478116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch call __vpaes_schedule_core 479116680a4aac90f2aa7413d9095a592090648e557Ben MurdochL016pic_point: 480116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movl 48(%esp),%esp 481116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch xorl %eax,%eax 482116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch popl %edi 483116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch popl %esi 484116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch popl %ebx 485116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch popl %ebp 486116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ret 487116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.globl _vpaes_set_decrypt_key 4885f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles).private_extern _vpaes_set_decrypt_key 489116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.align 4 490116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch_vpaes_set_decrypt_key: 491116680a4aac90f2aa7413d9095a592090648e557Ben MurdochL_vpaes_set_decrypt_key_begin: 492116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pushl %ebp 493116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pushl %ebx 494116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pushl %esi 495116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pushl %edi 496116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movl 20(%esp),%esi 497116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch leal -56(%esp),%ebx 498116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movl 24(%esp),%eax 499116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch andl $-16,%ebx 500116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movl 28(%esp),%edx 501116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch xchgl %esp,%ebx 502116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movl %ebx,48(%esp) 503116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movl %eax,%ebx 504116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch shrl $5,%ebx 505116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch addl $5,%ebx 506116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movl %ebx,240(%edx) 507116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch shll $4,%ebx 508116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch leal 16(%edx,%ebx,1),%edx 509116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movl $1,%edi 510116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movl %eax,%ecx 511116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch shrl $1,%ecx 512116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch andl $32,%ecx 513116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch xorl $32,%ecx 514116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch leal L_vpaes_consts+0x30-L017pic_point,%ebp 515116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch call __vpaes_schedule_core 516116680a4aac90f2aa7413d9095a592090648e557Ben MurdochL017pic_point: 517116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movl 48(%esp),%esp 518116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch xorl %eax,%eax 519116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch popl %edi 520116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch popl %esi 521116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch popl %ebx 522116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch popl %ebp 523116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ret 524116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.globl _vpaes_encrypt 5255f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles).private_extern _vpaes_encrypt 526116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.align 4 527116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch_vpaes_encrypt: 528116680a4aac90f2aa7413d9095a592090648e557Ben MurdochL_vpaes_encrypt_begin: 529116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pushl %ebp 530116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pushl %ebx 531116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pushl %esi 532116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pushl %edi 533116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch leal L_vpaes_consts+0x30-L018pic_point,%ebp 534116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch call __vpaes_preheat 535116680a4aac90f2aa7413d9095a592090648e557Ben MurdochL018pic_point: 536116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movl 20(%esp),%esi 537116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch leal -56(%esp),%ebx 538116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movl 24(%esp),%edi 539116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch andl $-16,%ebx 540116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movl 28(%esp),%edx 541116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch xchgl %esp,%ebx 542116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movl %ebx,48(%esp) 543116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqu (%esi),%xmm0 544116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch call __vpaes_encrypt_core 545116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqu %xmm0,(%edi) 546116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movl 48(%esp),%esp 547116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch popl %edi 548116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch popl %esi 549116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch popl %ebx 550116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch popl %ebp 551116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ret 552116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.globl _vpaes_decrypt 5535f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles).private_extern _vpaes_decrypt 554116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.align 4 555116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch_vpaes_decrypt: 556116680a4aac90f2aa7413d9095a592090648e557Ben MurdochL_vpaes_decrypt_begin: 557116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pushl %ebp 558116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pushl %ebx 559116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pushl %esi 560116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pushl %edi 561116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch leal L_vpaes_consts+0x30-L019pic_point,%ebp 562116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch call __vpaes_preheat 563116680a4aac90f2aa7413d9095a592090648e557Ben MurdochL019pic_point: 564116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movl 20(%esp),%esi 565116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch leal -56(%esp),%ebx 566116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movl 24(%esp),%edi 567116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch andl $-16,%ebx 568116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movl 28(%esp),%edx 569116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch xchgl %esp,%ebx 570116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movl %ebx,48(%esp) 571116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqu (%esi),%xmm0 572116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch call __vpaes_decrypt_core 573116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqu %xmm0,(%edi) 574116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movl 48(%esp),%esp 575116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch popl %edi 576116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch popl %esi 577116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch popl %ebx 578116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch popl %ebp 579116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ret 580116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.globl _vpaes_cbc_encrypt 5815f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles).private_extern _vpaes_cbc_encrypt 582116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.align 4 583116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch_vpaes_cbc_encrypt: 584116680a4aac90f2aa7413d9095a592090648e557Ben MurdochL_vpaes_cbc_encrypt_begin: 585116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pushl %ebp 586116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pushl %ebx 587116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pushl %esi 588116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pushl %edi 589116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movl 20(%esp),%esi 590116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movl 24(%esp),%edi 591116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movl 28(%esp),%eax 592116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movl 32(%esp),%edx 593116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch subl $16,%eax 594116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch jc L020cbc_abort 595116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch leal -56(%esp),%ebx 596116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movl 36(%esp),%ebp 597116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch andl $-16,%ebx 598116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movl 40(%esp),%ecx 599116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch xchgl %esp,%ebx 600116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqu (%ebp),%xmm1 601116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch subl %esi,%edi 602116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movl %ebx,48(%esp) 603116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movl %edi,(%esp) 604116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movl %edx,4(%esp) 605116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movl %ebp,8(%esp) 606116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movl %eax,%edi 607116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch leal L_vpaes_consts+0x30-L021pic_point,%ebp 608116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch call __vpaes_preheat 609116680a4aac90f2aa7413d9095a592090648e557Ben MurdochL021pic_point: 610116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch cmpl $0,%ecx 611116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch je L022cbc_dec_loop 612116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch jmp L023cbc_enc_loop 613116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.align 4,0x90 614116680a4aac90f2aa7413d9095a592090648e557Ben MurdochL023cbc_enc_loop: 615116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqu (%esi),%xmm0 616116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor %xmm1,%xmm0 617116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch call __vpaes_encrypt_core 618116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movl (%esp),%ebx 619116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movl 4(%esp),%edx 620116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa %xmm0,%xmm1 621116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqu %xmm0,(%ebx,%esi,1) 622116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch leal 16(%esi),%esi 623116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch subl $16,%edi 624116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch jnc L023cbc_enc_loop 625116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch jmp L024cbc_done 626116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.align 4,0x90 627116680a4aac90f2aa7413d9095a592090648e557Ben MurdochL022cbc_dec_loop: 628116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqu (%esi),%xmm0 629116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa %xmm1,16(%esp) 630116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa %xmm0,32(%esp) 631116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch call __vpaes_decrypt_core 632116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movl (%esp),%ebx 633116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movl 4(%esp),%edx 634116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor 16(%esp),%xmm0 635116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa 32(%esp),%xmm1 636116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqu %xmm0,(%ebx,%esi,1) 637116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch leal 16(%esi),%esi 638116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch subl $16,%edi 639116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch jnc L022cbc_dec_loop 640116680a4aac90f2aa7413d9095a592090648e557Ben MurdochL024cbc_done: 641116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movl 8(%esp),%ebx 642116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movl 48(%esp),%esp 643116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqu %xmm1,(%ebx) 644116680a4aac90f2aa7413d9095a592090648e557Ben MurdochL020cbc_abort: 645116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch popl %edi 646116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch popl %esi 647116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch popl %ebx 648116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch popl %ebp 649116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ret 6505f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#endif 651