1d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#if defined(__i386__) 2d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.text 3d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 6,0x90 4d9e397b599b13d642138480a28c14db7a136bf0Adam LangleyL_vpaes_consts: 5d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.long 218628480,235210255,168496130,67568393 6d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.long 252381056,17041926,33884169,51187212 7d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.long 252645135,252645135,252645135,252645135 8d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.long 1512730624,3266504856,1377990664,3401244816 9d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.long 830229760,1275146365,2969422977,3447763452 10d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.long 3411033600,2979783055,338359620,2782886510 11d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.long 4209124096,907596821,221174255,1006095553 12d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.long 191964160,3799684038,3164090317,1589111125 13d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.long 182528256,1777043520,2877432650,3265356744 14d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.long 1874708224,3503451415,3305285752,363511674 15d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.long 1606117888,3487855781,1093350906,2384367825 16d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.long 197121,67569157,134941193,202313229 17d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.long 67569157,134941193,202313229,197121 18d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.long 134941193,202313229,197121,67569157 19d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.long 202313229,197121,67569157,134941193 20d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.long 33619971,100992007,168364043,235736079 21d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.long 235736079,33619971,100992007,168364043 22d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.long 168364043,235736079,33619971,100992007 23d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.long 100992007,168364043,235736079,33619971 24d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.long 50462976,117835012,185207048,252579084 25d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.long 252314880,51251460,117574920,184942860 26d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.long 184682752,252054788,50987272,118359308 27d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.long 118099200,185467140,251790600,50727180 28d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.long 2946363062,528716217,1300004225,1881839624 29d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.long 1532713819,1532713819,1532713819,1532713819 30d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.long 3602276352,4288629033,3737020424,4153884961 31d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.long 1354558464,32357713,2958822624,3775749553 32d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.long 1201988352,132424512,1572796698,503232858 33d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.long 2213177600,1597421020,4103937655,675398315 34d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.long 2749646592,4273543773,1511898873,121693092 35d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.long 3040248576,1103263732,2871565598,1608280554 36d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.long 2236667136,2588920351,482954393,64377734 37d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.long 3069987328,291237287,2117370568,3650299247 38d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.long 533321216,3573750986,2572112006,1401264716 39d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.long 1339849704,2721158661,548607111,3445553514 40d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.long 2128193280,3054596040,2183486460,1257083700 41d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.long 655635200,1165381986,3923443150,2344132524 42d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.long 190078720,256924420,290342170,357187870 43d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.long 1610966272,2263057382,4103205268,309794674 44d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.long 2592527872,2233205587,1335446729,3402964816 45d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.long 3973531904,3225098121,3002836325,1918774430 46d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.long 3870401024,2102906079,2284471353,4117666579 47d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.long 617007872,1021508343,366931923,691083277 48d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.long 2528395776,3491914898,2968704004,1613121270 49d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.long 3445188352,3247741094,844474987,4093578302 50d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.long 651481088,1190302358,1689581232,574775300 51d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.long 4289380608,206939853,2555985458,2489840491 52d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.long 2130264064,327674451,3566485037,3349835193 53d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.long 2470714624,316102159,3636825756,3393945945 54d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 86,101,99,116,111,114,32,80,101,114,109,117,116,97,116,105 55d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 111,110,32,65,69,83,32,102,111,114,32,120,56,54,47,83 56d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 83,83,69,51,44,32,77,105,107,101,32,72,97,109,98,117 57d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 114,103,32,40,83,116,97,110,102,111,114,100,32,85,110,105 58d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 118,101,114,115,105,116,121,41,0 59d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 6,0x90 60d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.private_extern __vpaes_preheat 61d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 4 62d9e397b599b13d642138480a28c14db7a136bf0Adam Langley__vpaes_preheat: 63d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addl (%esp),%ebp 64d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa -48(%ebp),%xmm7 65d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa -16(%ebp),%xmm6 66d9e397b599b13d642138480a28c14db7a136bf0Adam Langley ret 67d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.private_extern __vpaes_encrypt_core 68d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 4 69d9e397b599b13d642138480a28c14db7a136bf0Adam Langley__vpaes_encrypt_core: 70d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl $16,%ecx 71d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 240(%edx),%eax 72d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm6,%xmm1 73d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa (%ebp),%xmm2 74d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pandn %xmm0,%xmm1 75d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pand %xmm6,%xmm0 76d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu (%edx),%xmm5 77d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,0,208 78d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa 16(%ebp),%xmm0 79d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm5,%xmm2 80d9e397b599b13d642138480a28c14db7a136bf0Adam Langley psrld $4,%xmm1 81d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addl $16,%edx 82d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,0,193 83d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 192(%ebp),%ebx 84d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm2,%xmm0 85d9e397b599b13d642138480a28c14db7a136bf0Adam Langley jmp L000enc_entry 86d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 4,0x90 87d9e397b599b13d642138480a28c14db7a136bf0Adam LangleyL001enc_loop: 88d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa 32(%ebp),%xmm4 89d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa 48(%ebp),%xmm0 90d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,0,226 91d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,0,195 92d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm5,%xmm4 93d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa 64(%ebp),%xmm5 94d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm4,%xmm0 95d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa -64(%ebx,%ecx,1),%xmm1 96d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,0,234 97d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa 80(%ebp),%xmm2 98d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa (%ebx,%ecx,1),%xmm4 99d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,0,211 100d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm0,%xmm3 101d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm5,%xmm2 102d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,0,193 103d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addl $16,%edx 104d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm2,%xmm0 105d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,0,220 106d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addl $16,%ecx 107d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm3 108d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,0,193 109d9e397b599b13d642138480a28c14db7a136bf0Adam Langley andl $48,%ecx 110d9e397b599b13d642138480a28c14db7a136bf0Adam Langley subl $1,%eax 111d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm3,%xmm0 112d9e397b599b13d642138480a28c14db7a136bf0Adam LangleyL000enc_entry: 113d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm6,%xmm1 114d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa -32(%ebp),%xmm5 115d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pandn %xmm0,%xmm1 116d9e397b599b13d642138480a28c14db7a136bf0Adam Langley psrld $4,%xmm1 117d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pand %xmm6,%xmm0 118d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,0,232 119d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm7,%xmm3 120d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm1,%xmm0 121d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,0,217 122d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm7,%xmm4 123d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm5,%xmm3 124d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,0,224 125d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm7,%xmm2 126d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm5,%xmm4 127d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,0,211 128d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm7,%xmm3 129d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm2 130d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,0,220 131d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu (%edx),%xmm5 132d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm1,%xmm3 133d9e397b599b13d642138480a28c14db7a136bf0Adam Langley jnz L001enc_loop 134d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa 96(%ebp),%xmm4 135d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa 112(%ebp),%xmm0 136d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,0,226 137d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm5,%xmm4 138d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,0,195 139d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa 64(%ebx,%ecx,1),%xmm1 140d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm4,%xmm0 141d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,0,193 142d9e397b599b13d642138480a28c14db7a136bf0Adam Langley ret 143d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.private_extern __vpaes_decrypt_core 144d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 4 145d9e397b599b13d642138480a28c14db7a136bf0Adam Langley__vpaes_decrypt_core: 146d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 608(%ebp),%ebx 147d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 240(%edx),%eax 148d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm6,%xmm1 149d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa -64(%ebx),%xmm2 150d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pandn %xmm0,%xmm1 151d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %eax,%ecx 152d9e397b599b13d642138480a28c14db7a136bf0Adam Langley psrld $4,%xmm1 153d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu (%edx),%xmm5 154d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shll $4,%ecx 155d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pand %xmm6,%xmm0 156d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,0,208 157d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa -48(%ebx),%xmm0 158d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorl $48,%ecx 159d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,0,193 160d9e397b599b13d642138480a28c14db7a136bf0Adam Langley andl $48,%ecx 161d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm5,%xmm2 162d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa 176(%ebp),%xmm5 163d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm2,%xmm0 164d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addl $16,%edx 165d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal -352(%ebx,%ecx,1),%ecx 166d9e397b599b13d642138480a28c14db7a136bf0Adam Langley jmp L002dec_entry 167d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 4,0x90 168d9e397b599b13d642138480a28c14db7a136bf0Adam LangleyL003dec_loop: 169d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa -32(%ebx),%xmm4 170d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa -16(%ebx),%xmm1 171d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,0,226 172d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,0,203 173d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm4,%xmm0 174d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa (%ebx),%xmm4 175d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm1,%xmm0 176d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa 16(%ebx),%xmm1 177d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,0,226 178d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,0,197 179d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,0,203 180d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm4,%xmm0 181d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa 32(%ebx),%xmm4 182d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm1,%xmm0 183d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa 48(%ebx),%xmm1 184d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,0,226 185d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,0,197 186d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,0,203 187d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm4,%xmm0 188d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa 64(%ebx),%xmm4 189d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm1,%xmm0 190d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa 80(%ebx),%xmm1 191d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,0,226 192d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,0,197 193d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,0,203 194d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm4,%xmm0 195d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addl $16,%edx 196d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,58,15,237,12 197d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm1,%xmm0 198d9e397b599b13d642138480a28c14db7a136bf0Adam Langley subl $1,%eax 199d9e397b599b13d642138480a28c14db7a136bf0Adam LangleyL002dec_entry: 200d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm6,%xmm1 201d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa -32(%ebp),%xmm2 202d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pandn %xmm0,%xmm1 203d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pand %xmm6,%xmm0 204d9e397b599b13d642138480a28c14db7a136bf0Adam Langley psrld $4,%xmm1 205d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,0,208 206d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm7,%xmm3 207d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm1,%xmm0 208d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,0,217 209d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm7,%xmm4 210d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm2,%xmm3 211d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,0,224 212d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm2,%xmm4 213d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm7,%xmm2 214d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,0,211 215d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm7,%xmm3 216d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm2 217d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,0,220 218d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu (%edx),%xmm0 219d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm1,%xmm3 220d9e397b599b13d642138480a28c14db7a136bf0Adam Langley jnz L003dec_loop 221d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa 96(%ebx),%xmm4 222d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,0,226 223d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm4 224d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa 112(%ebx),%xmm0 225d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa (%ecx),%xmm2 226d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,0,195 227d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm4,%xmm0 228d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,0,194 229d9e397b599b13d642138480a28c14db7a136bf0Adam Langley ret 230d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.private_extern __vpaes_schedule_core 231d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 4 232d9e397b599b13d642138480a28c14db7a136bf0Adam Langley__vpaes_schedule_core: 233d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addl (%esp),%ebp 234d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu (%esi),%xmm0 235d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa 320(%ebp),%xmm2 236d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm0,%xmm3 237d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal (%ebp),%ebx 238d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm2,4(%esp) 239d9e397b599b13d642138480a28c14db7a136bf0Adam Langley call __vpaes_schedule_transform 240d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm0,%xmm7 241d9e397b599b13d642138480a28c14db7a136bf0Adam Langley testl %edi,%edi 242d9e397b599b13d642138480a28c14db7a136bf0Adam Langley jnz L004schedule_am_decrypting 243d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu %xmm0,(%edx) 244d9e397b599b13d642138480a28c14db7a136bf0Adam Langley jmp L005schedule_go 245d9e397b599b13d642138480a28c14db7a136bf0Adam LangleyL004schedule_am_decrypting: 246d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa 256(%ebp,%ecx,1),%xmm1 247d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,0,217 248d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu %xmm3,(%edx) 249d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorl $48,%ecx 250d9e397b599b13d642138480a28c14db7a136bf0Adam LangleyL005schedule_go: 251d9e397b599b13d642138480a28c14db7a136bf0Adam Langley cmpl $192,%eax 252d9e397b599b13d642138480a28c14db7a136bf0Adam Langley ja L006schedule_256 253d9e397b599b13d642138480a28c14db7a136bf0Adam Langley je L007schedule_192 254d9e397b599b13d642138480a28c14db7a136bf0Adam LangleyL008schedule_128: 255d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl $10,%eax 256d9e397b599b13d642138480a28c14db7a136bf0Adam LangleyL009loop_schedule_128: 257d9e397b599b13d642138480a28c14db7a136bf0Adam Langley call __vpaes_schedule_round 258d9e397b599b13d642138480a28c14db7a136bf0Adam Langley decl %eax 259d9e397b599b13d642138480a28c14db7a136bf0Adam Langley jz L010schedule_mangle_last 260d9e397b599b13d642138480a28c14db7a136bf0Adam Langley call __vpaes_schedule_mangle 261d9e397b599b13d642138480a28c14db7a136bf0Adam Langley jmp L009loop_schedule_128 262d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 4,0x90 263d9e397b599b13d642138480a28c14db7a136bf0Adam LangleyL007schedule_192: 264d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu 8(%esi),%xmm0 265d9e397b599b13d642138480a28c14db7a136bf0Adam Langley call __vpaes_schedule_transform 266d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm0,%xmm6 267d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm4,%xmm4 268d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movhlps %xmm4,%xmm6 269d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl $4,%eax 270d9e397b599b13d642138480a28c14db7a136bf0Adam LangleyL011loop_schedule_192: 271d9e397b599b13d642138480a28c14db7a136bf0Adam Langley call __vpaes_schedule_round 272d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,58,15,198,8 273d9e397b599b13d642138480a28c14db7a136bf0Adam Langley call __vpaes_schedule_mangle 274d9e397b599b13d642138480a28c14db7a136bf0Adam Langley call __vpaes_schedule_192_smear 275d9e397b599b13d642138480a28c14db7a136bf0Adam Langley call __vpaes_schedule_mangle 276d9e397b599b13d642138480a28c14db7a136bf0Adam Langley call __vpaes_schedule_round 277d9e397b599b13d642138480a28c14db7a136bf0Adam Langley decl %eax 278d9e397b599b13d642138480a28c14db7a136bf0Adam Langley jz L010schedule_mangle_last 279d9e397b599b13d642138480a28c14db7a136bf0Adam Langley call __vpaes_schedule_mangle 280d9e397b599b13d642138480a28c14db7a136bf0Adam Langley call __vpaes_schedule_192_smear 281d9e397b599b13d642138480a28c14db7a136bf0Adam Langley jmp L011loop_schedule_192 282d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 4,0x90 283d9e397b599b13d642138480a28c14db7a136bf0Adam LangleyL006schedule_256: 284d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu 16(%esi),%xmm0 285d9e397b599b13d642138480a28c14db7a136bf0Adam Langley call __vpaes_schedule_transform 286d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl $7,%eax 287d9e397b599b13d642138480a28c14db7a136bf0Adam LangleyL012loop_schedule_256: 288d9e397b599b13d642138480a28c14db7a136bf0Adam Langley call __vpaes_schedule_mangle 289d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm0,%xmm6 290d9e397b599b13d642138480a28c14db7a136bf0Adam Langley call __vpaes_schedule_round 291d9e397b599b13d642138480a28c14db7a136bf0Adam Langley decl %eax 292d9e397b599b13d642138480a28c14db7a136bf0Adam Langley jz L010schedule_mangle_last 293d9e397b599b13d642138480a28c14db7a136bf0Adam Langley call __vpaes_schedule_mangle 294d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pshufd $255,%xmm0,%xmm0 295d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm7,20(%esp) 296d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm6,%xmm7 297d9e397b599b13d642138480a28c14db7a136bf0Adam Langley call L_vpaes_schedule_low_round 298d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa 20(%esp),%xmm7 299d9e397b599b13d642138480a28c14db7a136bf0Adam Langley jmp L012loop_schedule_256 300d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 4,0x90 301d9e397b599b13d642138480a28c14db7a136bf0Adam LangleyL010schedule_mangle_last: 302d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 384(%ebp),%ebx 303d9e397b599b13d642138480a28c14db7a136bf0Adam Langley testl %edi,%edi 304d9e397b599b13d642138480a28c14db7a136bf0Adam Langley jnz L013schedule_mangle_last_dec 305d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa 256(%ebp,%ecx,1),%xmm1 306d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,0,193 307d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 352(%ebp),%ebx 308d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addl $32,%edx 309d9e397b599b13d642138480a28c14db7a136bf0Adam LangleyL013schedule_mangle_last_dec: 310d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addl $-16,%edx 311d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor 336(%ebp),%xmm0 312d9e397b599b13d642138480a28c14db7a136bf0Adam Langley call __vpaes_schedule_transform 313d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu %xmm0,(%edx) 314d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm0 315d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm1,%xmm1 316d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm2,%xmm2 317d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm3,%xmm3 318d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm4,%xmm4 319d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm5,%xmm5 320d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm6,%xmm6 321d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm7,%xmm7 322d9e397b599b13d642138480a28c14db7a136bf0Adam Langley ret 323d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.private_extern __vpaes_schedule_192_smear 324d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 4 325d9e397b599b13d642138480a28c14db7a136bf0Adam Langley__vpaes_schedule_192_smear: 326d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pshufd $128,%xmm6,%xmm1 327d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pshufd $254,%xmm7,%xmm0 328d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm1,%xmm6 329d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm1,%xmm1 330d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm6 331d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm6,%xmm0 332d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movhlps %xmm1,%xmm6 333d9e397b599b13d642138480a28c14db7a136bf0Adam Langley ret 334d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.private_extern __vpaes_schedule_round 335d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 4 336d9e397b599b13d642138480a28c14db7a136bf0Adam Langley__vpaes_schedule_round: 337d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa 8(%esp),%xmm2 338d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm1,%xmm1 339d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,58,15,202,15 340d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,58,15,210,15 341d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm1,%xmm7 342d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pshufd $255,%xmm0,%xmm0 343d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,58,15,192,1 344d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm2,8(%esp) 345d9e397b599b13d642138480a28c14db7a136bf0Adam LangleyL_vpaes_schedule_low_round: 346d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm7,%xmm1 347d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pslldq $4,%xmm7 348d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm1,%xmm7 349d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm7,%xmm1 350d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pslldq $8,%xmm7 351d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm1,%xmm7 352d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor 336(%ebp),%xmm7 353d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa -16(%ebp),%xmm4 354d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa -48(%ebp),%xmm5 355d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm4,%xmm1 356d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pandn %xmm0,%xmm1 357d9e397b599b13d642138480a28c14db7a136bf0Adam Langley psrld $4,%xmm1 358d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pand %xmm4,%xmm0 359d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa -32(%ebp),%xmm2 360d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,0,208 361d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm1,%xmm0 362d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm5,%xmm3 363d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,0,217 364d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm2,%xmm3 365d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm5,%xmm4 366d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,0,224 367d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm2,%xmm4 368d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm5,%xmm2 369d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,0,211 370d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm0,%xmm2 371d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm5,%xmm3 372d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,0,220 373d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm1,%xmm3 374d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa 32(%ebp),%xmm4 375d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,0,226 376d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa 48(%ebp),%xmm0 377d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,0,195 378d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm4,%xmm0 379d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm7,%xmm0 380d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm0,%xmm7 381d9e397b599b13d642138480a28c14db7a136bf0Adam Langley ret 382d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.private_extern __vpaes_schedule_transform 383d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 4 384d9e397b599b13d642138480a28c14db7a136bf0Adam Langley__vpaes_schedule_transform: 385d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa -16(%ebp),%xmm2 386d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm2,%xmm1 387d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pandn %xmm0,%xmm1 388d9e397b599b13d642138480a28c14db7a136bf0Adam Langley psrld $4,%xmm1 389d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pand %xmm2,%xmm0 390d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa (%ebx),%xmm2 391d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,0,208 392d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa 16(%ebx),%xmm0 393d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,0,193 394d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm2,%xmm0 395d9e397b599b13d642138480a28c14db7a136bf0Adam Langley ret 396d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.private_extern __vpaes_schedule_mangle 397d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 4 398d9e397b599b13d642138480a28c14db7a136bf0Adam Langley__vpaes_schedule_mangle: 399d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm0,%xmm4 400d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa 128(%ebp),%xmm5 401d9e397b599b13d642138480a28c14db7a136bf0Adam Langley testl %edi,%edi 402d9e397b599b13d642138480a28c14db7a136bf0Adam Langley jnz L014schedule_mangle_dec 403d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addl $16,%edx 404d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor 336(%ebp),%xmm4 405d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,0,229 406d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm4,%xmm3 407d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,0,229 408d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm4,%xmm3 409d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,0,229 410d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm4,%xmm3 411d9e397b599b13d642138480a28c14db7a136bf0Adam Langley jmp L015schedule_mangle_both 412d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 4,0x90 413d9e397b599b13d642138480a28c14db7a136bf0Adam LangleyL014schedule_mangle_dec: 414d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa -16(%ebp),%xmm2 415d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 416(%ebp),%esi 416d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm2,%xmm1 417d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pandn %xmm4,%xmm1 418d9e397b599b13d642138480a28c14db7a136bf0Adam Langley psrld $4,%xmm1 419d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pand %xmm2,%xmm4 420d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa (%esi),%xmm2 421d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,0,212 422d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa 16(%esi),%xmm3 423d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,0,217 424d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm2,%xmm3 425d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,0,221 426d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa 32(%esi),%xmm2 427d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,0,212 428d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm3,%xmm2 429d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa 48(%esi),%xmm3 430d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,0,217 431d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm2,%xmm3 432d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,0,221 433d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa 64(%esi),%xmm2 434d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,0,212 435d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm3,%xmm2 436d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa 80(%esi),%xmm3 437d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,0,217 438d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm2,%xmm3 439d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,0,221 440d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa 96(%esi),%xmm2 441d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,0,212 442d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm3,%xmm2 443d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa 112(%esi),%xmm3 444d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,0,217 445d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm2,%xmm3 446d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addl $-16,%edx 447d9e397b599b13d642138480a28c14db7a136bf0Adam LangleyL015schedule_mangle_both: 448d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa 256(%ebp,%ecx,1),%xmm1 449d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.byte 102,15,56,0,217 450d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addl $-16,%ecx 451d9e397b599b13d642138480a28c14db7a136bf0Adam Langley andl $48,%ecx 452d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu %xmm3,(%edx) 453d9e397b599b13d642138480a28c14db7a136bf0Adam Langley ret 454d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.globl _vpaes_set_encrypt_key 455d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.private_extern _vpaes_set_encrypt_key 456d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 4 457d9e397b599b13d642138480a28c14db7a136bf0Adam Langley_vpaes_set_encrypt_key: 458d9e397b599b13d642138480a28c14db7a136bf0Adam LangleyL_vpaes_set_encrypt_key_begin: 459d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pushl %ebp 460d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pushl %ebx 461d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pushl %esi 462d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pushl %edi 463d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 20(%esp),%esi 464d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal -56(%esp),%ebx 465d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 24(%esp),%eax 466d9e397b599b13d642138480a28c14db7a136bf0Adam Langley andl $-16,%ebx 467d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 28(%esp),%edx 468d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xchgl %esp,%ebx 469d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %ebx,48(%esp) 470d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %eax,%ebx 471d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrl $5,%ebx 472d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addl $5,%ebx 473d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %ebx,240(%edx) 474d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl $48,%ecx 475d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl $0,%edi 476d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal L_vpaes_consts+0x30-L016pic_point,%ebp 477d9e397b599b13d642138480a28c14db7a136bf0Adam Langley call __vpaes_schedule_core 478d9e397b599b13d642138480a28c14db7a136bf0Adam LangleyL016pic_point: 479d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 48(%esp),%esp 480d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorl %eax,%eax 481d9e397b599b13d642138480a28c14db7a136bf0Adam Langley popl %edi 482d9e397b599b13d642138480a28c14db7a136bf0Adam Langley popl %esi 483d9e397b599b13d642138480a28c14db7a136bf0Adam Langley popl %ebx 484d9e397b599b13d642138480a28c14db7a136bf0Adam Langley popl %ebp 485d9e397b599b13d642138480a28c14db7a136bf0Adam Langley ret 486d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.globl _vpaes_set_decrypt_key 487d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.private_extern _vpaes_set_decrypt_key 488d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 4 489d9e397b599b13d642138480a28c14db7a136bf0Adam Langley_vpaes_set_decrypt_key: 490d9e397b599b13d642138480a28c14db7a136bf0Adam LangleyL_vpaes_set_decrypt_key_begin: 491d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pushl %ebp 492d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pushl %ebx 493d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pushl %esi 494d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pushl %edi 495d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 20(%esp),%esi 496d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal -56(%esp),%ebx 497d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 24(%esp),%eax 498d9e397b599b13d642138480a28c14db7a136bf0Adam Langley andl $-16,%ebx 499d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 28(%esp),%edx 500d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xchgl %esp,%ebx 501d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %ebx,48(%esp) 502d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %eax,%ebx 503d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrl $5,%ebx 504d9e397b599b13d642138480a28c14db7a136bf0Adam Langley addl $5,%ebx 505d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %ebx,240(%edx) 506d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shll $4,%ebx 507d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 16(%edx,%ebx,1),%edx 508d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl $1,%edi 509d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %eax,%ecx 510d9e397b599b13d642138480a28c14db7a136bf0Adam Langley shrl $1,%ecx 511d9e397b599b13d642138480a28c14db7a136bf0Adam Langley andl $32,%ecx 512d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorl $32,%ecx 513d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal L_vpaes_consts+0x30-L017pic_point,%ebp 514d9e397b599b13d642138480a28c14db7a136bf0Adam Langley call __vpaes_schedule_core 515d9e397b599b13d642138480a28c14db7a136bf0Adam LangleyL017pic_point: 516d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 48(%esp),%esp 517d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xorl %eax,%eax 518d9e397b599b13d642138480a28c14db7a136bf0Adam Langley popl %edi 519d9e397b599b13d642138480a28c14db7a136bf0Adam Langley popl %esi 520d9e397b599b13d642138480a28c14db7a136bf0Adam Langley popl %ebx 521d9e397b599b13d642138480a28c14db7a136bf0Adam Langley popl %ebp 522d9e397b599b13d642138480a28c14db7a136bf0Adam Langley ret 523d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.globl _vpaes_encrypt 524d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.private_extern _vpaes_encrypt 525d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 4 526d9e397b599b13d642138480a28c14db7a136bf0Adam Langley_vpaes_encrypt: 527d9e397b599b13d642138480a28c14db7a136bf0Adam LangleyL_vpaes_encrypt_begin: 528d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pushl %ebp 529d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pushl %ebx 530d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pushl %esi 531d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pushl %edi 532d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal L_vpaes_consts+0x30-L018pic_point,%ebp 533d9e397b599b13d642138480a28c14db7a136bf0Adam Langley call __vpaes_preheat 534d9e397b599b13d642138480a28c14db7a136bf0Adam LangleyL018pic_point: 535d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 20(%esp),%esi 536d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal -56(%esp),%ebx 537d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 24(%esp),%edi 538d9e397b599b13d642138480a28c14db7a136bf0Adam Langley andl $-16,%ebx 539d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 28(%esp),%edx 540d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xchgl %esp,%ebx 541d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %ebx,48(%esp) 542d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu (%esi),%xmm0 543d9e397b599b13d642138480a28c14db7a136bf0Adam Langley call __vpaes_encrypt_core 544d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu %xmm0,(%edi) 545d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 48(%esp),%esp 546d9e397b599b13d642138480a28c14db7a136bf0Adam Langley popl %edi 547d9e397b599b13d642138480a28c14db7a136bf0Adam Langley popl %esi 548d9e397b599b13d642138480a28c14db7a136bf0Adam Langley popl %ebx 549d9e397b599b13d642138480a28c14db7a136bf0Adam Langley popl %ebp 550d9e397b599b13d642138480a28c14db7a136bf0Adam Langley ret 551d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.globl _vpaes_decrypt 552d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.private_extern _vpaes_decrypt 553d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 4 554d9e397b599b13d642138480a28c14db7a136bf0Adam Langley_vpaes_decrypt: 555d9e397b599b13d642138480a28c14db7a136bf0Adam LangleyL_vpaes_decrypt_begin: 556d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pushl %ebp 557d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pushl %ebx 558d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pushl %esi 559d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pushl %edi 560d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal L_vpaes_consts+0x30-L019pic_point,%ebp 561d9e397b599b13d642138480a28c14db7a136bf0Adam Langley call __vpaes_preheat 562d9e397b599b13d642138480a28c14db7a136bf0Adam LangleyL019pic_point: 563d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 20(%esp),%esi 564d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal -56(%esp),%ebx 565d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 24(%esp),%edi 566d9e397b599b13d642138480a28c14db7a136bf0Adam Langley andl $-16,%ebx 567d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 28(%esp),%edx 568d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xchgl %esp,%ebx 569d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %ebx,48(%esp) 570d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu (%esi),%xmm0 571d9e397b599b13d642138480a28c14db7a136bf0Adam Langley call __vpaes_decrypt_core 572d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu %xmm0,(%edi) 573d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 48(%esp),%esp 574d9e397b599b13d642138480a28c14db7a136bf0Adam Langley popl %edi 575d9e397b599b13d642138480a28c14db7a136bf0Adam Langley popl %esi 576d9e397b599b13d642138480a28c14db7a136bf0Adam Langley popl %ebx 577d9e397b599b13d642138480a28c14db7a136bf0Adam Langley popl %ebp 578d9e397b599b13d642138480a28c14db7a136bf0Adam Langley ret 579d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.globl _vpaes_cbc_encrypt 580d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.private_extern _vpaes_cbc_encrypt 581d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 4 582d9e397b599b13d642138480a28c14db7a136bf0Adam Langley_vpaes_cbc_encrypt: 583d9e397b599b13d642138480a28c14db7a136bf0Adam LangleyL_vpaes_cbc_encrypt_begin: 584d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pushl %ebp 585d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pushl %ebx 586d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pushl %esi 587d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pushl %edi 588d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 20(%esp),%esi 589d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 24(%esp),%edi 590d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 28(%esp),%eax 591d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 32(%esp),%edx 592d9e397b599b13d642138480a28c14db7a136bf0Adam Langley subl $16,%eax 593d9e397b599b13d642138480a28c14db7a136bf0Adam Langley jc L020cbc_abort 594d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal -56(%esp),%ebx 595d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 36(%esp),%ebp 596d9e397b599b13d642138480a28c14db7a136bf0Adam Langley andl $-16,%ebx 597d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 40(%esp),%ecx 598d9e397b599b13d642138480a28c14db7a136bf0Adam Langley xchgl %esp,%ebx 599d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu (%ebp),%xmm1 600d9e397b599b13d642138480a28c14db7a136bf0Adam Langley subl %esi,%edi 601d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %ebx,48(%esp) 602d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %edi,(%esp) 603d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %edx,4(%esp) 604d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %ebp,8(%esp) 605d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl %eax,%edi 606d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal L_vpaes_consts+0x30-L021pic_point,%ebp 607d9e397b599b13d642138480a28c14db7a136bf0Adam Langley call __vpaes_preheat 608d9e397b599b13d642138480a28c14db7a136bf0Adam LangleyL021pic_point: 609d9e397b599b13d642138480a28c14db7a136bf0Adam Langley cmpl $0,%ecx 610d9e397b599b13d642138480a28c14db7a136bf0Adam Langley je L022cbc_dec_loop 611d9e397b599b13d642138480a28c14db7a136bf0Adam Langley jmp L023cbc_enc_loop 612d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 4,0x90 613d9e397b599b13d642138480a28c14db7a136bf0Adam LangleyL023cbc_enc_loop: 614d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu (%esi),%xmm0 615d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor %xmm1,%xmm0 616d9e397b599b13d642138480a28c14db7a136bf0Adam Langley call __vpaes_encrypt_core 617d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl (%esp),%ebx 618d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 4(%esp),%edx 619d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm0,%xmm1 620d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu %xmm0,(%ebx,%esi,1) 621d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 16(%esi),%esi 622d9e397b599b13d642138480a28c14db7a136bf0Adam Langley subl $16,%edi 623d9e397b599b13d642138480a28c14db7a136bf0Adam Langley jnc L023cbc_enc_loop 624d9e397b599b13d642138480a28c14db7a136bf0Adam Langley jmp L024cbc_done 625d9e397b599b13d642138480a28c14db7a136bf0Adam Langley.align 4,0x90 626d9e397b599b13d642138480a28c14db7a136bf0Adam LangleyL022cbc_dec_loop: 627d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu (%esi),%xmm0 628d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm1,16(%esp) 629d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa %xmm0,32(%esp) 630d9e397b599b13d642138480a28c14db7a136bf0Adam Langley call __vpaes_decrypt_core 631d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl (%esp),%ebx 632d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 4(%esp),%edx 633d9e397b599b13d642138480a28c14db7a136bf0Adam Langley pxor 16(%esp),%xmm0 634d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqa 32(%esp),%xmm1 635d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu %xmm0,(%ebx,%esi,1) 636d9e397b599b13d642138480a28c14db7a136bf0Adam Langley leal 16(%esi),%esi 637d9e397b599b13d642138480a28c14db7a136bf0Adam Langley subl $16,%edi 638d9e397b599b13d642138480a28c14db7a136bf0Adam Langley jnc L022cbc_dec_loop 639d9e397b599b13d642138480a28c14db7a136bf0Adam LangleyL024cbc_done: 640d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 8(%esp),%ebx 641d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movl 48(%esp),%esp 642d9e397b599b13d642138480a28c14db7a136bf0Adam Langley movdqu %xmm1,(%ebx) 643d9e397b599b13d642138480a28c14db7a136bf0Adam LangleyL020cbc_abort: 644d9e397b599b13d642138480a28c14db7a136bf0Adam Langley popl %edi 645d9e397b599b13d642138480a28c14db7a136bf0Adam Langley popl %esi 646d9e397b599b13d642138480a28c14db7a136bf0Adam Langley popl %ebx 647d9e397b599b13d642138480a28c14db7a136bf0Adam Langley popl %ebp 648d9e397b599b13d642138480a28c14db7a136bf0Adam Langley ret 649d9e397b599b13d642138480a28c14db7a136bf0Adam Langley#endif 650