1; This file is generated from a similarly-named Perl script in the BoringSSL 2; source tree. Do not edit by hand. 3 4%include "ring_core_generated/prefix_symbols_nasm.inc" 5%ifidn __OUTPUT_FORMAT__,obj 6section code use32 class=code align=64 7%elifidn __OUTPUT_FORMAT__,win32 8$@feat.00 equ 1 9section .text code align=64 10%else 11section .text code 12%endif 13align 64 14L$_vpaes_consts: 15dd 218628480,235210255,168496130,67568393 16dd 252381056,17041926,33884169,51187212 17dd 252645135,252645135,252645135,252645135 18dd 1512730624,3266504856,1377990664,3401244816 19dd 830229760,1275146365,2969422977,3447763452 20dd 3411033600,2979783055,338359620,2782886510 21dd 4209124096,907596821,221174255,1006095553 22dd 191964160,3799684038,3164090317,1589111125 23dd 182528256,1777043520,2877432650,3265356744 24dd 1874708224,3503451415,3305285752,363511674 25dd 1606117888,3487855781,1093350906,2384367825 26dd 197121,67569157,134941193,202313229 27dd 67569157,134941193,202313229,197121 28dd 134941193,202313229,197121,67569157 29dd 202313229,197121,67569157,134941193 30dd 33619971,100992007,168364043,235736079 31dd 235736079,33619971,100992007,168364043 32dd 168364043,235736079,33619971,100992007 33dd 100992007,168364043,235736079,33619971 34dd 50462976,117835012,185207048,252579084 35dd 252314880,51251460,117574920,184942860 36dd 184682752,252054788,50987272,118359308 37dd 118099200,185467140,251790600,50727180 38dd 2946363062,528716217,1300004225,1881839624 39dd 1532713819,1532713819,1532713819,1532713819 40dd 3602276352,4288629033,3737020424,4153884961 41dd 1354558464,32357713,2958822624,3775749553 42dd 1201988352,132424512,1572796698,503232858 43dd 2213177600,1597421020,4103937655,675398315 44db 86,101,99,116,111,114,32,80,101,114,109,117,116,97,116,105 45db 111,110,32,65,69,83,32,102,111,114,32,120,56,54,47,83 46db 83,83,69,51,44,32,77,105,107,101,32,72,97,109,98,117 47db 114,103,32,40,83,116,97,110,102,111,114,100,32,85,110,105 48db 118,101,114,115,105,116,121,41,0 49align 64 50align 16 51__vpaes_preheat: 52 add ebp,DWORD [esp] 53 movdqa xmm7,[ebp-48] 54 movdqa xmm6,[ebp-16] 55 ret 56align 16 57__vpaes_encrypt_core: 58 mov ecx,16 59 mov eax,DWORD [240+edx] 60 movdqa xmm1,xmm6 61 movdqa xmm2,[ebp] 62 pandn xmm1,xmm0 63 pand xmm0,xmm6 64 movdqu xmm5,[edx] 65db 102,15,56,0,208 66 movdqa xmm0,[16+ebp] 67 pxor xmm2,xmm5 68 psrld xmm1,4 69 add edx,16 70db 102,15,56,0,193 71 lea ebx,[192+ebp] 72 pxor xmm0,xmm2 73 jmp NEAR L$000enc_entry 74align 16 75L$001enc_loop: 76 movdqa xmm4,[32+ebp] 77 movdqa xmm0,[48+ebp] 78db 102,15,56,0,226 79db 102,15,56,0,195 80 pxor xmm4,xmm5 81 movdqa xmm5,[64+ebp] 82 pxor xmm0,xmm4 83 movdqa xmm1,[ecx*1+ebx-64] 84db 102,15,56,0,234 85 movdqa xmm2,[80+ebp] 86 movdqa xmm4,[ecx*1+ebx] 87db 102,15,56,0,211 88 movdqa xmm3,xmm0 89 pxor xmm2,xmm5 90db 102,15,56,0,193 91 add edx,16 92 pxor xmm0,xmm2 93db 102,15,56,0,220 94 add ecx,16 95 pxor xmm3,xmm0 96db 102,15,56,0,193 97 and ecx,48 98 sub eax,1 99 pxor xmm0,xmm3 100L$000enc_entry: 101 movdqa xmm1,xmm6 102 movdqa xmm5,[ebp-32] 103 pandn xmm1,xmm0 104 psrld xmm1,4 105 pand xmm0,xmm6 106db 102,15,56,0,232 107 movdqa xmm3,xmm7 108 pxor xmm0,xmm1 109db 102,15,56,0,217 110 movdqa xmm4,xmm7 111 pxor xmm3,xmm5 112db 102,15,56,0,224 113 movdqa xmm2,xmm7 114 pxor xmm4,xmm5 115db 102,15,56,0,211 116 movdqa xmm3,xmm7 117 pxor xmm2,xmm0 118db 102,15,56,0,220 119 movdqu xmm5,[edx] 120 pxor xmm3,xmm1 121 jnz NEAR L$001enc_loop 122 movdqa xmm4,[96+ebp] 123 movdqa xmm0,[112+ebp] 124db 102,15,56,0,226 125 pxor xmm4,xmm5 126db 102,15,56,0,195 127 movdqa xmm1,[64+ecx*1+ebx] 128 pxor xmm0,xmm4 129db 102,15,56,0,193 130 ret 131align 16 132__vpaes_schedule_core: 133 add ebp,DWORD [esp] 134 movdqu xmm0,[esi] 135 movdqa xmm2,[320+ebp] 136 movdqa xmm3,xmm0 137 lea ebx,[ebp] 138 movdqa [4+esp],xmm2 139 call __vpaes_schedule_transform 140 movdqa xmm7,xmm0 141 test edi,edi 142 jnz NEAR L$002schedule_am_decrypting 143 movdqu [edx],xmm0 144 jmp NEAR L$003schedule_go 145L$002schedule_am_decrypting: 146 movdqa xmm1,[256+ecx*1+ebp] 147db 102,15,56,0,217 148 movdqu [edx],xmm3 149 xor ecx,48 150L$003schedule_go: 151 cmp eax,192 152 ja NEAR L$004schedule_256 153L$005schedule_128: 154 mov eax,10 155L$006loop_schedule_128: 156 call __vpaes_schedule_round 157 dec eax 158 jz NEAR L$007schedule_mangle_last 159 call __vpaes_schedule_mangle 160 jmp NEAR L$006loop_schedule_128 161align 16 162L$004schedule_256: 163 movdqu xmm0,[16+esi] 164 call __vpaes_schedule_transform 165 mov eax,7 166L$008loop_schedule_256: 167 call __vpaes_schedule_mangle 168 movdqa xmm6,xmm0 169 call __vpaes_schedule_round 170 dec eax 171 jz NEAR L$007schedule_mangle_last 172 call __vpaes_schedule_mangle 173 pshufd xmm0,xmm0,255 174 movdqa [20+esp],xmm7 175 movdqa xmm7,xmm6 176 call L$_vpaes_schedule_low_round 177 movdqa xmm7,[20+esp] 178 jmp NEAR L$008loop_schedule_256 179align 16 180L$007schedule_mangle_last: 181 lea ebx,[384+ebp] 182 test edi,edi 183 jnz NEAR L$009schedule_mangle_last_dec 184 movdqa xmm1,[256+ecx*1+ebp] 185db 102,15,56,0,193 186 lea ebx,[352+ebp] 187 add edx,32 188L$009schedule_mangle_last_dec: 189 add edx,-16 190 pxor xmm0,[336+ebp] 191 call __vpaes_schedule_transform 192 movdqu [edx],xmm0 193 pxor xmm0,xmm0 194 pxor xmm1,xmm1 195 pxor xmm2,xmm2 196 pxor xmm3,xmm3 197 pxor xmm4,xmm4 198 pxor xmm5,xmm5 199 pxor xmm6,xmm6 200 pxor xmm7,xmm7 201 ret 202align 16 203__vpaes_schedule_round: 204 movdqa xmm2,[8+esp] 205 pxor xmm1,xmm1 206db 102,15,58,15,202,15 207db 102,15,58,15,210,15 208 pxor xmm7,xmm1 209 pshufd xmm0,xmm0,255 210db 102,15,58,15,192,1 211 movdqa [8+esp],xmm2 212L$_vpaes_schedule_low_round: 213 movdqa xmm1,xmm7 214 pslldq xmm7,4 215 pxor xmm7,xmm1 216 movdqa xmm1,xmm7 217 pslldq xmm7,8 218 pxor xmm7,xmm1 219 pxor xmm7,[336+ebp] 220 movdqa xmm4,[ebp-16] 221 movdqa xmm5,[ebp-48] 222 movdqa xmm1,xmm4 223 pandn xmm1,xmm0 224 psrld xmm1,4 225 pand xmm0,xmm4 226 movdqa xmm2,[ebp-32] 227db 102,15,56,0,208 228 pxor xmm0,xmm1 229 movdqa xmm3,xmm5 230db 102,15,56,0,217 231 pxor xmm3,xmm2 232 movdqa xmm4,xmm5 233db 102,15,56,0,224 234 pxor xmm4,xmm2 235 movdqa xmm2,xmm5 236db 102,15,56,0,211 237 pxor xmm2,xmm0 238 movdqa xmm3,xmm5 239db 102,15,56,0,220 240 pxor xmm3,xmm1 241 movdqa xmm4,[32+ebp] 242db 102,15,56,0,226 243 movdqa xmm0,[48+ebp] 244db 102,15,56,0,195 245 pxor xmm0,xmm4 246 pxor xmm0,xmm7 247 movdqa xmm7,xmm0 248 ret 249align 16 250__vpaes_schedule_transform: 251 movdqa xmm2,[ebp-16] 252 movdqa xmm1,xmm2 253 pandn xmm1,xmm0 254 psrld xmm1,4 255 pand xmm0,xmm2 256 movdqa xmm2,[ebx] 257db 102,15,56,0,208 258 movdqa xmm0,[16+ebx] 259db 102,15,56,0,193 260 pxor xmm0,xmm2 261 ret 262align 16 263__vpaes_schedule_mangle: 264 movdqa xmm4,xmm0 265 movdqa xmm5,[128+ebp] 266 test edi,edi 267 jnz NEAR L$010schedule_mangle_dec 268 add edx,16 269 pxor xmm4,[336+ebp] 270db 102,15,56,0,229 271 movdqa xmm3,xmm4 272db 102,15,56,0,229 273 pxor xmm3,xmm4 274db 102,15,56,0,229 275 pxor xmm3,xmm4 276 jmp NEAR L$011schedule_mangle_both 277align 16 278L$010schedule_mangle_dec: 279 movdqa xmm2,[ebp-16] 280 lea esi,[ebp] 281 movdqa xmm1,xmm2 282 pandn xmm1,xmm4 283 psrld xmm1,4 284 pand xmm4,xmm2 285 movdqa xmm2,[esi] 286db 102,15,56,0,212 287 movdqa xmm3,[16+esi] 288db 102,15,56,0,217 289 pxor xmm3,xmm2 290db 102,15,56,0,221 291 movdqa xmm2,[32+esi] 292db 102,15,56,0,212 293 pxor xmm2,xmm3 294 movdqa xmm3,[48+esi] 295db 102,15,56,0,217 296 pxor xmm3,xmm2 297db 102,15,56,0,221 298 movdqa xmm2,[64+esi] 299db 102,15,56,0,212 300 pxor xmm2,xmm3 301 movdqa xmm3,[80+esi] 302db 102,15,56,0,217 303 pxor xmm3,xmm2 304db 102,15,56,0,221 305 movdqa xmm2,[96+esi] 306db 102,15,56,0,212 307 pxor xmm2,xmm3 308 movdqa xmm3,[112+esi] 309db 102,15,56,0,217 310 pxor xmm3,xmm2 311 add edx,-16 312L$011schedule_mangle_both: 313 movdqa xmm1,[256+ecx*1+ebp] 314db 102,15,56,0,217 315 add ecx,-16 316 and ecx,48 317 movdqu [edx],xmm3 318 ret 319global _vpaes_set_encrypt_key 320align 16 321_vpaes_set_encrypt_key: 322L$_vpaes_set_encrypt_key_begin: 323 push ebp 324 push ebx 325 push esi 326 push edi 327 mov esi,DWORD [20+esp] 328 lea ebx,[esp-56] 329 mov eax,DWORD [24+esp] 330 and ebx,-16 331 mov edx,DWORD [28+esp] 332 xchg ebx,esp 333 mov DWORD [48+esp],ebx 334 mov ebx,eax 335 shr ebx,5 336 add ebx,5 337 mov DWORD [240+edx],ebx 338 mov ecx,48 339 mov edi,0 340 lea ebp,[(L$_vpaes_consts+0x30-L$012pic_point)] 341 call __vpaes_schedule_core 342L$012pic_point: 343 mov esp,DWORD [48+esp] 344 xor eax,eax 345 pop edi 346 pop esi 347 pop ebx 348 pop ebp 349 ret 350global _vpaes_encrypt 351align 16 352_vpaes_encrypt: 353L$_vpaes_encrypt_begin: 354 push ebp 355 push ebx 356 push esi 357 push edi 358 lea ebp,[(L$_vpaes_consts+0x30-L$013pic_point)] 359 call __vpaes_preheat 360L$013pic_point: 361 mov esi,DWORD [20+esp] 362 lea ebx,[esp-56] 363 mov edi,DWORD [24+esp] 364 and ebx,-16 365 mov edx,DWORD [28+esp] 366 xchg ebx,esp 367 mov DWORD [48+esp],ebx 368 movdqu xmm0,[esi] 369 call __vpaes_encrypt_core 370 movdqu [edi],xmm0 371 mov esp,DWORD [48+esp] 372 pop edi 373 pop esi 374 pop ebx 375 pop ebp 376 ret 377