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