OLD | NEW |
(Empty) | |
| 1 %ifidn __OUTPUT_FORMAT__,obj |
| 2 section code use32 class=code align=64 |
| 3 %elifidn __OUTPUT_FORMAT__,win32 |
| 4 %ifdef __YASM_VERSION_ID__ |
| 5 %if __YASM_VERSION_ID__ < 01010000h |
| 6 %error yasm version 1.1.0 or later needed. |
| 7 %endif |
| 8 ; Yasm automatically includes .00 and complains about redefining it. |
| 9 ; https://www.tortall.net/projects/yasm/manual/html/objfmt-win32-safeseh.html |
| 10 %else |
| 11 $@feat.00 equ 1 |
| 12 %endif |
| 13 section .text code align=64 |
| 14 %else |
| 15 section .text code |
| 16 %endif |
| 17 align 64 |
| 18 L$_vpaes_consts: |
| 19 dd 218628480,235210255,168496130,67568393 |
| 20 dd 252381056,17041926,33884169,51187212 |
| 21 dd 252645135,252645135,252645135,252645135 |
| 22 dd 1512730624,3266504856,1377990664,3401244816 |
| 23 dd 830229760,1275146365,2969422977,3447763452 |
| 24 dd 3411033600,2979783055,338359620,2782886510 |
| 25 dd 4209124096,907596821,221174255,1006095553 |
| 26 dd 191964160,3799684038,3164090317,1589111125 |
| 27 dd 182528256,1777043520,2877432650,3265356744 |
| 28 dd 1874708224,3503451415,3305285752,363511674 |
| 29 dd 1606117888,3487855781,1093350906,2384367825 |
| 30 dd 197121,67569157,134941193,202313229 |
| 31 dd 67569157,134941193,202313229,197121 |
| 32 dd 134941193,202313229,197121,67569157 |
| 33 dd 202313229,197121,67569157,134941193 |
| 34 dd 33619971,100992007,168364043,235736079 |
| 35 dd 235736079,33619971,100992007,168364043 |
| 36 dd 168364043,235736079,33619971,100992007 |
| 37 dd 100992007,168364043,235736079,33619971 |
| 38 dd 50462976,117835012,185207048,252579084 |
| 39 dd 252314880,51251460,117574920,184942860 |
| 40 dd 184682752,252054788,50987272,118359308 |
| 41 dd 118099200,185467140,251790600,50727180 |
| 42 dd 2946363062,528716217,1300004225,1881839624 |
| 43 dd 1532713819,1532713819,1532713819,1532713819 |
| 44 dd 3602276352,4288629033,3737020424,4153884961 |
| 45 dd 1354558464,32357713,2958822624,3775749553 |
| 46 dd 1201988352,132424512,1572796698,503232858 |
| 47 dd 2213177600,1597421020,4103937655,675398315 |
| 48 dd 2749646592,4273543773,1511898873,121693092 |
| 49 dd 3040248576,1103263732,2871565598,1608280554 |
| 50 dd 2236667136,2588920351,482954393,64377734 |
| 51 dd 3069987328,291237287,2117370568,3650299247 |
| 52 dd 533321216,3573750986,2572112006,1401264716 |
| 53 dd 1339849704,2721158661,548607111,3445553514 |
| 54 dd 2128193280,3054596040,2183486460,1257083700 |
| 55 dd 655635200,1165381986,3923443150,2344132524 |
| 56 dd 190078720,256924420,290342170,357187870 |
| 57 dd 1610966272,2263057382,4103205268,309794674 |
| 58 dd 2592527872,2233205587,1335446729,3402964816 |
| 59 dd 3973531904,3225098121,3002836325,1918774430 |
| 60 dd 3870401024,2102906079,2284471353,4117666579 |
| 61 dd 617007872,1021508343,366931923,691083277 |
| 62 dd 2528395776,3491914898,2968704004,1613121270 |
| 63 dd 3445188352,3247741094,844474987,4093578302 |
| 64 dd 651481088,1190302358,1689581232,574775300 |
| 65 dd 4289380608,206939853,2555985458,2489840491 |
| 66 dd 2130264064,327674451,3566485037,3349835193 |
| 67 dd 2470714624,316102159,3636825756,3393945945 |
| 68 db 86,101,99,116,111,114,32,80,101,114,109,117,116,97,116,105 |
| 69 db 111,110,32,65,69,83,32,102,111,114,32,120,56,54,47,83 |
| 70 db 83,83,69,51,44,32,77,105,107,101,32,72,97,109,98,117 |
| 71 db 114,103,32,40,83,116,97,110,102,111,114,100,32,85,110,105 |
| 72 db 118,101,114,115,105,116,121,41,0 |
| 73 align 64 |
| 74 align 16 |
| 75 __vpaes_preheat: |
| 76 add ebp,DWORD [esp] |
| 77 movdqa xmm7,[ebp-48] |
| 78 movdqa xmm6,[ebp-16] |
| 79 ret |
| 80 align 16 |
| 81 __vpaes_encrypt_core: |
| 82 mov ecx,16 |
| 83 mov eax,DWORD [240+edx] |
| 84 movdqa xmm1,xmm6 |
| 85 movdqa xmm2,[ebp] |
| 86 pandn xmm1,xmm0 |
| 87 pand xmm0,xmm6 |
| 88 movdqu xmm5,[edx] |
| 89 db 102,15,56,0,208 |
| 90 movdqa xmm0,[16+ebp] |
| 91 pxor xmm2,xmm5 |
| 92 psrld xmm1,4 |
| 93 add edx,16 |
| 94 db 102,15,56,0,193 |
| 95 lea ebx,[192+ebp] |
| 96 pxor xmm0,xmm2 |
| 97 jmp NEAR L$000enc_entry |
| 98 align 16 |
| 99 L$001enc_loop: |
| 100 movdqa xmm4,[32+ebp] |
| 101 movdqa xmm0,[48+ebp] |
| 102 db 102,15,56,0,226 |
| 103 db 102,15,56,0,195 |
| 104 pxor xmm4,xmm5 |
| 105 movdqa xmm5,[64+ebp] |
| 106 pxor xmm0,xmm4 |
| 107 movdqa xmm1,[ecx*1+ebx-64] |
| 108 db 102,15,56,0,234 |
| 109 movdqa xmm2,[80+ebp] |
| 110 movdqa xmm4,[ecx*1+ebx] |
| 111 db 102,15,56,0,211 |
| 112 movdqa xmm3,xmm0 |
| 113 pxor xmm2,xmm5 |
| 114 db 102,15,56,0,193 |
| 115 add edx,16 |
| 116 pxor xmm0,xmm2 |
| 117 db 102,15,56,0,220 |
| 118 add ecx,16 |
| 119 pxor xmm3,xmm0 |
| 120 db 102,15,56,0,193 |
| 121 and ecx,48 |
| 122 sub eax,1 |
| 123 pxor xmm0,xmm3 |
| 124 L$000enc_entry: |
| 125 movdqa xmm1,xmm6 |
| 126 movdqa xmm5,[ebp-32] |
| 127 pandn xmm1,xmm0 |
| 128 psrld xmm1,4 |
| 129 pand xmm0,xmm6 |
| 130 db 102,15,56,0,232 |
| 131 movdqa xmm3,xmm7 |
| 132 pxor xmm0,xmm1 |
| 133 db 102,15,56,0,217 |
| 134 movdqa xmm4,xmm7 |
| 135 pxor xmm3,xmm5 |
| 136 db 102,15,56,0,224 |
| 137 movdqa xmm2,xmm7 |
| 138 pxor xmm4,xmm5 |
| 139 db 102,15,56,0,211 |
| 140 movdqa xmm3,xmm7 |
| 141 pxor xmm2,xmm0 |
| 142 db 102,15,56,0,220 |
| 143 movdqu xmm5,[edx] |
| 144 pxor xmm3,xmm1 |
| 145 jnz NEAR L$001enc_loop |
| 146 movdqa xmm4,[96+ebp] |
| 147 movdqa xmm0,[112+ebp] |
| 148 db 102,15,56,0,226 |
| 149 pxor xmm4,xmm5 |
| 150 db 102,15,56,0,195 |
| 151 movdqa xmm1,[64+ecx*1+ebx] |
| 152 pxor xmm0,xmm4 |
| 153 db 102,15,56,0,193 |
| 154 ret |
| 155 align 16 |
| 156 __vpaes_decrypt_core: |
| 157 lea ebx,[608+ebp] |
| 158 mov eax,DWORD [240+edx] |
| 159 movdqa xmm1,xmm6 |
| 160 movdqa xmm2,[ebx-64] |
| 161 pandn xmm1,xmm0 |
| 162 mov ecx,eax |
| 163 psrld xmm1,4 |
| 164 movdqu xmm5,[edx] |
| 165 shl ecx,4 |
| 166 pand xmm0,xmm6 |
| 167 db 102,15,56,0,208 |
| 168 movdqa xmm0,[ebx-48] |
| 169 xor ecx,48 |
| 170 db 102,15,56,0,193 |
| 171 and ecx,48 |
| 172 pxor xmm2,xmm5 |
| 173 movdqa xmm5,[176+ebp] |
| 174 pxor xmm0,xmm2 |
| 175 add edx,16 |
| 176 lea ecx,[ecx*1+ebx-352] |
| 177 jmp NEAR L$002dec_entry |
| 178 align 16 |
| 179 L$003dec_loop: |
| 180 movdqa xmm4,[ebx-32] |
| 181 movdqa xmm1,[ebx-16] |
| 182 db 102,15,56,0,226 |
| 183 db 102,15,56,0,203 |
| 184 pxor xmm0,xmm4 |
| 185 movdqa xmm4,[ebx] |
| 186 pxor xmm0,xmm1 |
| 187 movdqa xmm1,[16+ebx] |
| 188 db 102,15,56,0,226 |
| 189 db 102,15,56,0,197 |
| 190 db 102,15,56,0,203 |
| 191 pxor xmm0,xmm4 |
| 192 movdqa xmm4,[32+ebx] |
| 193 pxor xmm0,xmm1 |
| 194 movdqa xmm1,[48+ebx] |
| 195 db 102,15,56,0,226 |
| 196 db 102,15,56,0,197 |
| 197 db 102,15,56,0,203 |
| 198 pxor xmm0,xmm4 |
| 199 movdqa xmm4,[64+ebx] |
| 200 pxor xmm0,xmm1 |
| 201 movdqa xmm1,[80+ebx] |
| 202 db 102,15,56,0,226 |
| 203 db 102,15,56,0,197 |
| 204 db 102,15,56,0,203 |
| 205 pxor xmm0,xmm4 |
| 206 add edx,16 |
| 207 db 102,15,58,15,237,12 |
| 208 pxor xmm0,xmm1 |
| 209 sub eax,1 |
| 210 L$002dec_entry: |
| 211 movdqa xmm1,xmm6 |
| 212 movdqa xmm2,[ebp-32] |
| 213 pandn xmm1,xmm0 |
| 214 pand xmm0,xmm6 |
| 215 psrld xmm1,4 |
| 216 db 102,15,56,0,208 |
| 217 movdqa xmm3,xmm7 |
| 218 pxor xmm0,xmm1 |
| 219 db 102,15,56,0,217 |
| 220 movdqa xmm4,xmm7 |
| 221 pxor xmm3,xmm2 |
| 222 db 102,15,56,0,224 |
| 223 pxor xmm4,xmm2 |
| 224 movdqa xmm2,xmm7 |
| 225 db 102,15,56,0,211 |
| 226 movdqa xmm3,xmm7 |
| 227 pxor xmm2,xmm0 |
| 228 db 102,15,56,0,220 |
| 229 movdqu xmm0,[edx] |
| 230 pxor xmm3,xmm1 |
| 231 jnz NEAR L$003dec_loop |
| 232 movdqa xmm4,[96+ebx] |
| 233 db 102,15,56,0,226 |
| 234 pxor xmm4,xmm0 |
| 235 movdqa xmm0,[112+ebx] |
| 236 movdqa xmm2,[ecx] |
| 237 db 102,15,56,0,195 |
| 238 pxor xmm0,xmm4 |
| 239 db 102,15,56,0,194 |
| 240 ret |
| 241 align 16 |
| 242 __vpaes_schedule_core: |
| 243 add ebp,DWORD [esp] |
| 244 movdqu xmm0,[esi] |
| 245 movdqa xmm2,[320+ebp] |
| 246 movdqa xmm3,xmm0 |
| 247 lea ebx,[ebp] |
| 248 movdqa [4+esp],xmm2 |
| 249 call __vpaes_schedule_transform |
| 250 movdqa xmm7,xmm0 |
| 251 test edi,edi |
| 252 jnz NEAR L$004schedule_am_decrypting |
| 253 movdqu [edx],xmm0 |
| 254 jmp NEAR L$005schedule_go |
| 255 L$004schedule_am_decrypting: |
| 256 movdqa xmm1,[256+ecx*1+ebp] |
| 257 db 102,15,56,0,217 |
| 258 movdqu [edx],xmm3 |
| 259 xor ecx,48 |
| 260 L$005schedule_go: |
| 261 cmp eax,192 |
| 262 ja NEAR L$006schedule_256 |
| 263 je NEAR L$007schedule_192 |
| 264 L$008schedule_128: |
| 265 mov eax,10 |
| 266 L$009loop_schedule_128: |
| 267 call __vpaes_schedule_round |
| 268 dec eax |
| 269 jz NEAR L$010schedule_mangle_last |
| 270 call __vpaes_schedule_mangle |
| 271 jmp NEAR L$009loop_schedule_128 |
| 272 align 16 |
| 273 L$007schedule_192: |
| 274 movdqu xmm0,[8+esi] |
| 275 call __vpaes_schedule_transform |
| 276 movdqa xmm6,xmm0 |
| 277 pxor xmm4,xmm4 |
| 278 movhlps xmm6,xmm4 |
| 279 mov eax,4 |
| 280 L$011loop_schedule_192: |
| 281 call __vpaes_schedule_round |
| 282 db 102,15,58,15,198,8 |
| 283 call __vpaes_schedule_mangle |
| 284 call __vpaes_schedule_192_smear |
| 285 call __vpaes_schedule_mangle |
| 286 call __vpaes_schedule_round |
| 287 dec eax |
| 288 jz NEAR L$010schedule_mangle_last |
| 289 call __vpaes_schedule_mangle |
| 290 call __vpaes_schedule_192_smear |
| 291 jmp NEAR L$011loop_schedule_192 |
| 292 align 16 |
| 293 L$006schedule_256: |
| 294 movdqu xmm0,[16+esi] |
| 295 call __vpaes_schedule_transform |
| 296 mov eax,7 |
| 297 L$012loop_schedule_256: |
| 298 call __vpaes_schedule_mangle |
| 299 movdqa xmm6,xmm0 |
| 300 call __vpaes_schedule_round |
| 301 dec eax |
| 302 jz NEAR L$010schedule_mangle_last |
| 303 call __vpaes_schedule_mangle |
| 304 pshufd xmm0,xmm0,255 |
| 305 movdqa [20+esp],xmm7 |
| 306 movdqa xmm7,xmm6 |
| 307 call L$_vpaes_schedule_low_round |
| 308 movdqa xmm7,[20+esp] |
| 309 jmp NEAR L$012loop_schedule_256 |
| 310 align 16 |
| 311 L$010schedule_mangle_last: |
| 312 lea ebx,[384+ebp] |
| 313 test edi,edi |
| 314 jnz NEAR L$013schedule_mangle_last_dec |
| 315 movdqa xmm1,[256+ecx*1+ebp] |
| 316 db 102,15,56,0,193 |
| 317 lea ebx,[352+ebp] |
| 318 add edx,32 |
| 319 L$013schedule_mangle_last_dec: |
| 320 add edx,-16 |
| 321 pxor xmm0,[336+ebp] |
| 322 call __vpaes_schedule_transform |
| 323 movdqu [edx],xmm0 |
| 324 pxor xmm0,xmm0 |
| 325 pxor xmm1,xmm1 |
| 326 pxor xmm2,xmm2 |
| 327 pxor xmm3,xmm3 |
| 328 pxor xmm4,xmm4 |
| 329 pxor xmm5,xmm5 |
| 330 pxor xmm6,xmm6 |
| 331 pxor xmm7,xmm7 |
| 332 ret |
| 333 align 16 |
| 334 __vpaes_schedule_192_smear: |
| 335 pshufd xmm1,xmm6,128 |
| 336 pshufd xmm0,xmm7,254 |
| 337 pxor xmm6,xmm1 |
| 338 pxor xmm1,xmm1 |
| 339 pxor xmm6,xmm0 |
| 340 movdqa xmm0,xmm6 |
| 341 movhlps xmm6,xmm1 |
| 342 ret |
| 343 align 16 |
| 344 __vpaes_schedule_round: |
| 345 movdqa xmm2,[8+esp] |
| 346 pxor xmm1,xmm1 |
| 347 db 102,15,58,15,202,15 |
| 348 db 102,15,58,15,210,15 |
| 349 pxor xmm7,xmm1 |
| 350 pshufd xmm0,xmm0,255 |
| 351 db 102,15,58,15,192,1 |
| 352 movdqa [8+esp],xmm2 |
| 353 L$_vpaes_schedule_low_round: |
| 354 movdqa xmm1,xmm7 |
| 355 pslldq xmm7,4 |
| 356 pxor xmm7,xmm1 |
| 357 movdqa xmm1,xmm7 |
| 358 pslldq xmm7,8 |
| 359 pxor xmm7,xmm1 |
| 360 pxor xmm7,[336+ebp] |
| 361 movdqa xmm4,[ebp-16] |
| 362 movdqa xmm5,[ebp-48] |
| 363 movdqa xmm1,xmm4 |
| 364 pandn xmm1,xmm0 |
| 365 psrld xmm1,4 |
| 366 pand xmm0,xmm4 |
| 367 movdqa xmm2,[ebp-32] |
| 368 db 102,15,56,0,208 |
| 369 pxor xmm0,xmm1 |
| 370 movdqa xmm3,xmm5 |
| 371 db 102,15,56,0,217 |
| 372 pxor xmm3,xmm2 |
| 373 movdqa xmm4,xmm5 |
| 374 db 102,15,56,0,224 |
| 375 pxor xmm4,xmm2 |
| 376 movdqa xmm2,xmm5 |
| 377 db 102,15,56,0,211 |
| 378 pxor xmm2,xmm0 |
| 379 movdqa xmm3,xmm5 |
| 380 db 102,15,56,0,220 |
| 381 pxor xmm3,xmm1 |
| 382 movdqa xmm4,[32+ebp] |
| 383 db 102,15,56,0,226 |
| 384 movdqa xmm0,[48+ebp] |
| 385 db 102,15,56,0,195 |
| 386 pxor xmm0,xmm4 |
| 387 pxor xmm0,xmm7 |
| 388 movdqa xmm7,xmm0 |
| 389 ret |
| 390 align 16 |
| 391 __vpaes_schedule_transform: |
| 392 movdqa xmm2,[ebp-16] |
| 393 movdqa xmm1,xmm2 |
| 394 pandn xmm1,xmm0 |
| 395 psrld xmm1,4 |
| 396 pand xmm0,xmm2 |
| 397 movdqa xmm2,[ebx] |
| 398 db 102,15,56,0,208 |
| 399 movdqa xmm0,[16+ebx] |
| 400 db 102,15,56,0,193 |
| 401 pxor xmm0,xmm2 |
| 402 ret |
| 403 align 16 |
| 404 __vpaes_schedule_mangle: |
| 405 movdqa xmm4,xmm0 |
| 406 movdqa xmm5,[128+ebp] |
| 407 test edi,edi |
| 408 jnz NEAR L$014schedule_mangle_dec |
| 409 add edx,16 |
| 410 pxor xmm4,[336+ebp] |
| 411 db 102,15,56,0,229 |
| 412 movdqa xmm3,xmm4 |
| 413 db 102,15,56,0,229 |
| 414 pxor xmm3,xmm4 |
| 415 db 102,15,56,0,229 |
| 416 pxor xmm3,xmm4 |
| 417 jmp NEAR L$015schedule_mangle_both |
| 418 align 16 |
| 419 L$014schedule_mangle_dec: |
| 420 movdqa xmm2,[ebp-16] |
| 421 lea esi,[416+ebp] |
| 422 movdqa xmm1,xmm2 |
| 423 pandn xmm1,xmm4 |
| 424 psrld xmm1,4 |
| 425 pand xmm4,xmm2 |
| 426 movdqa xmm2,[esi] |
| 427 db 102,15,56,0,212 |
| 428 movdqa xmm3,[16+esi] |
| 429 db 102,15,56,0,217 |
| 430 pxor xmm3,xmm2 |
| 431 db 102,15,56,0,221 |
| 432 movdqa xmm2,[32+esi] |
| 433 db 102,15,56,0,212 |
| 434 pxor xmm2,xmm3 |
| 435 movdqa xmm3,[48+esi] |
| 436 db 102,15,56,0,217 |
| 437 pxor xmm3,xmm2 |
| 438 db 102,15,56,0,221 |
| 439 movdqa xmm2,[64+esi] |
| 440 db 102,15,56,0,212 |
| 441 pxor xmm2,xmm3 |
| 442 movdqa xmm3,[80+esi] |
| 443 db 102,15,56,0,217 |
| 444 pxor xmm3,xmm2 |
| 445 db 102,15,56,0,221 |
| 446 movdqa xmm2,[96+esi] |
| 447 db 102,15,56,0,212 |
| 448 pxor xmm2,xmm3 |
| 449 movdqa xmm3,[112+esi] |
| 450 db 102,15,56,0,217 |
| 451 pxor xmm3,xmm2 |
| 452 add edx,-16 |
| 453 L$015schedule_mangle_both: |
| 454 movdqa xmm1,[256+ecx*1+ebp] |
| 455 db 102,15,56,0,217 |
| 456 add ecx,-16 |
| 457 and ecx,48 |
| 458 movdqu [edx],xmm3 |
| 459 ret |
| 460 global _vpaes_set_encrypt_key |
| 461 align 16 |
| 462 _vpaes_set_encrypt_key: |
| 463 L$_vpaes_set_encrypt_key_begin: |
| 464 push ebp |
| 465 push ebx |
| 466 push esi |
| 467 push edi |
| 468 mov esi,DWORD [20+esp] |
| 469 lea ebx,[esp-56] |
| 470 mov eax,DWORD [24+esp] |
| 471 and ebx,-16 |
| 472 mov edx,DWORD [28+esp] |
| 473 xchg ebx,esp |
| 474 mov DWORD [48+esp],ebx |
| 475 mov ebx,eax |
| 476 shr ebx,5 |
| 477 add ebx,5 |
| 478 mov DWORD [240+edx],ebx |
| 479 mov ecx,48 |
| 480 mov edi,0 |
| 481 lea ebp,[(L$_vpaes_consts+0x30-L$016pic_point)] |
| 482 call __vpaes_schedule_core |
| 483 L$016pic_point: |
| 484 mov esp,DWORD [48+esp] |
| 485 xor eax,eax |
| 486 pop edi |
| 487 pop esi |
| 488 pop ebx |
| 489 pop ebp |
| 490 ret |
| 491 global _vpaes_set_decrypt_key |
| 492 align 16 |
| 493 _vpaes_set_decrypt_key: |
| 494 L$_vpaes_set_decrypt_key_begin: |
| 495 push ebp |
| 496 push ebx |
| 497 push esi |
| 498 push edi |
| 499 mov esi,DWORD [20+esp] |
| 500 lea ebx,[esp-56] |
| 501 mov eax,DWORD [24+esp] |
| 502 and ebx,-16 |
| 503 mov edx,DWORD [28+esp] |
| 504 xchg ebx,esp |
| 505 mov DWORD [48+esp],ebx |
| 506 mov ebx,eax |
| 507 shr ebx,5 |
| 508 add ebx,5 |
| 509 mov DWORD [240+edx],ebx |
| 510 shl ebx,4 |
| 511 lea edx,[16+ebx*1+edx] |
| 512 mov edi,1 |
| 513 mov ecx,eax |
| 514 shr ecx,1 |
| 515 and ecx,32 |
| 516 xor ecx,32 |
| 517 lea ebp,[(L$_vpaes_consts+0x30-L$017pic_point)] |
| 518 call __vpaes_schedule_core |
| 519 L$017pic_point: |
| 520 mov esp,DWORD [48+esp] |
| 521 xor eax,eax |
| 522 pop edi |
| 523 pop esi |
| 524 pop ebx |
| 525 pop ebp |
| 526 ret |
| 527 global _vpaes_encrypt |
| 528 align 16 |
| 529 _vpaes_encrypt: |
| 530 L$_vpaes_encrypt_begin: |
| 531 push ebp |
| 532 push ebx |
| 533 push esi |
| 534 push edi |
| 535 lea ebp,[(L$_vpaes_consts+0x30-L$018pic_point)] |
| 536 call __vpaes_preheat |
| 537 L$018pic_point: |
| 538 mov esi,DWORD [20+esp] |
| 539 lea ebx,[esp-56] |
| 540 mov edi,DWORD [24+esp] |
| 541 and ebx,-16 |
| 542 mov edx,DWORD [28+esp] |
| 543 xchg ebx,esp |
| 544 mov DWORD [48+esp],ebx |
| 545 movdqu xmm0,[esi] |
| 546 call __vpaes_encrypt_core |
| 547 movdqu [edi],xmm0 |
| 548 mov esp,DWORD [48+esp] |
| 549 pop edi |
| 550 pop esi |
| 551 pop ebx |
| 552 pop ebp |
| 553 ret |
| 554 global _vpaes_decrypt |
| 555 align 16 |
| 556 _vpaes_decrypt: |
| 557 L$_vpaes_decrypt_begin: |
| 558 push ebp |
| 559 push ebx |
| 560 push esi |
| 561 push edi |
| 562 lea ebp,[(L$_vpaes_consts+0x30-L$019pic_point)] |
| 563 call __vpaes_preheat |
| 564 L$019pic_point: |
| 565 mov esi,DWORD [20+esp] |
| 566 lea ebx,[esp-56] |
| 567 mov edi,DWORD [24+esp] |
| 568 and ebx,-16 |
| 569 mov edx,DWORD [28+esp] |
| 570 xchg ebx,esp |
| 571 mov DWORD [48+esp],ebx |
| 572 movdqu xmm0,[esi] |
| 573 call __vpaes_decrypt_core |
| 574 movdqu [edi],xmm0 |
| 575 mov esp,DWORD [48+esp] |
| 576 pop edi |
| 577 pop esi |
| 578 pop ebx |
| 579 pop ebp |
| 580 ret |
| 581 global _vpaes_cbc_encrypt |
| 582 align 16 |
| 583 _vpaes_cbc_encrypt: |
| 584 L$_vpaes_cbc_encrypt_begin: |
| 585 push ebp |
| 586 push ebx |
| 587 push esi |
| 588 push edi |
| 589 mov esi,DWORD [20+esp] |
| 590 mov edi,DWORD [24+esp] |
| 591 mov eax,DWORD [28+esp] |
| 592 mov edx,DWORD [32+esp] |
| 593 sub eax,16 |
| 594 jc NEAR L$020cbc_abort |
| 595 lea ebx,[esp-56] |
| 596 mov ebp,DWORD [36+esp] |
| 597 and ebx,-16 |
| 598 mov ecx,DWORD [40+esp] |
| 599 xchg ebx,esp |
| 600 movdqu xmm1,[ebp] |
| 601 sub edi,esi |
| 602 mov DWORD [48+esp],ebx |
| 603 mov DWORD [esp],edi |
| 604 mov DWORD [4+esp],edx |
| 605 mov DWORD [8+esp],ebp |
| 606 mov edi,eax |
| 607 lea ebp,[(L$_vpaes_consts+0x30-L$021pic_point)] |
| 608 call __vpaes_preheat |
| 609 L$021pic_point: |
| 610 cmp ecx,0 |
| 611 je NEAR L$022cbc_dec_loop |
| 612 jmp NEAR L$023cbc_enc_loop |
| 613 align 16 |
| 614 L$023cbc_enc_loop: |
| 615 movdqu xmm0,[esi] |
| 616 pxor xmm0,xmm1 |
| 617 call __vpaes_encrypt_core |
| 618 mov ebx,DWORD [esp] |
| 619 mov edx,DWORD [4+esp] |
| 620 movdqa xmm1,xmm0 |
| 621 movdqu [esi*1+ebx],xmm0 |
| 622 lea esi,[16+esi] |
| 623 sub edi,16 |
| 624 jnc NEAR L$023cbc_enc_loop |
| 625 jmp NEAR L$024cbc_done |
| 626 align 16 |
| 627 L$022cbc_dec_loop: |
| 628 movdqu xmm0,[esi] |
| 629 movdqa [16+esp],xmm1 |
| 630 movdqa [32+esp],xmm0 |
| 631 call __vpaes_decrypt_core |
| 632 mov ebx,DWORD [esp] |
| 633 mov edx,DWORD [4+esp] |
| 634 pxor xmm0,[16+esp] |
| 635 movdqa xmm1,[32+esp] |
| 636 movdqu [esi*1+ebx],xmm0 |
| 637 lea esi,[16+esi] |
| 638 sub edi,16 |
| 639 jnc NEAR L$022cbc_dec_loop |
| 640 L$024cbc_done: |
| 641 mov ebx,DWORD [8+esp] |
| 642 mov esp,DWORD [48+esp] |
| 643 movdqu [ebx],xmm1 |
| 644 L$020cbc_abort: |
| 645 pop edi |
| 646 pop esi |
| 647 pop ebx |
| 648 pop ebp |
| 649 ret |
OLD | NEW |