OLD | NEW |
(Empty) | |
| 1 OPTION DOTNAME |
| 2 .text$ SEGMENT ALIGN(64) 'CODE' |
| 3 EXTERN OPENSSL_ia32cap_P:NEAR |
| 4 PUBLIC aesni_encrypt |
| 5 |
| 6 ALIGN 16 |
| 7 aesni_encrypt PROC PUBLIC |
| 8 movups xmm2,XMMWORD PTR[rcx] |
| 9 mov eax,DWORD PTR[240+r8] |
| 10 movups xmm0,XMMWORD PTR[r8] |
| 11 movups xmm1,XMMWORD PTR[16+r8] |
| 12 lea r8,QWORD PTR[32+r8] |
| 13 xorps xmm2,xmm0 |
| 14 $L$oop_enc1_1:: |
| 15 DB 102,15,56,220,209 |
| 16 dec eax |
| 17 movups xmm1,XMMWORD PTR[r8] |
| 18 lea r8,QWORD PTR[16+r8] |
| 19 jnz $L$oop_enc1_1 |
| 20 DB 102,15,56,221,209 |
| 21 movups XMMWORD PTR[rdx],xmm2 |
| 22 DB 0F3h,0C3h ;repret |
| 23 aesni_encrypt ENDP |
| 24 |
| 25 PUBLIC aesni_decrypt |
| 26 |
| 27 ALIGN 16 |
| 28 aesni_decrypt PROC PUBLIC |
| 29 movups xmm2,XMMWORD PTR[rcx] |
| 30 mov eax,DWORD PTR[240+r8] |
| 31 movups xmm0,XMMWORD PTR[r8] |
| 32 movups xmm1,XMMWORD PTR[16+r8] |
| 33 lea r8,QWORD PTR[32+r8] |
| 34 xorps xmm2,xmm0 |
| 35 $L$oop_dec1_2:: |
| 36 DB 102,15,56,222,209 |
| 37 dec eax |
| 38 movups xmm1,XMMWORD PTR[r8] |
| 39 lea r8,QWORD PTR[16+r8] |
| 40 jnz $L$oop_dec1_2 |
| 41 DB 102,15,56,223,209 |
| 42 movups XMMWORD PTR[rdx],xmm2 |
| 43 DB 0F3h,0C3h ;repret |
| 44 aesni_decrypt ENDP |
| 45 |
| 46 ALIGN 16 |
| 47 _aesni_encrypt2 PROC PRIVATE |
| 48 movups xmm0,XMMWORD PTR[rcx] |
| 49 shl eax,4 |
| 50 movups xmm1,XMMWORD PTR[16+rcx] |
| 51 xorps xmm2,xmm0 |
| 52 xorps xmm3,xmm0 |
| 53 movups xmm0,XMMWORD PTR[32+rcx] |
| 54 lea rcx,QWORD PTR[32+rax*1+rcx] |
| 55 neg rax |
| 56 add rax,16 |
| 57 |
| 58 $L$enc_loop2:: |
| 59 DB 102,15,56,220,209 |
| 60 DB 102,15,56,220,217 |
| 61 movups xmm1,XMMWORD PTR[rax*1+rcx] |
| 62 add rax,32 |
| 63 DB 102,15,56,220,208 |
| 64 DB 102,15,56,220,216 |
| 65 movups xmm0,XMMWORD PTR[((-16))+rax*1+rcx] |
| 66 jnz $L$enc_loop2 |
| 67 |
| 68 DB 102,15,56,220,209 |
| 69 DB 102,15,56,220,217 |
| 70 DB 102,15,56,221,208 |
| 71 DB 102,15,56,221,216 |
| 72 DB 0F3h,0C3h ;repret |
| 73 _aesni_encrypt2 ENDP |
| 74 |
| 75 ALIGN 16 |
| 76 _aesni_decrypt2 PROC PRIVATE |
| 77 movups xmm0,XMMWORD PTR[rcx] |
| 78 shl eax,4 |
| 79 movups xmm1,XMMWORD PTR[16+rcx] |
| 80 xorps xmm2,xmm0 |
| 81 xorps xmm3,xmm0 |
| 82 movups xmm0,XMMWORD PTR[32+rcx] |
| 83 lea rcx,QWORD PTR[32+rax*1+rcx] |
| 84 neg rax |
| 85 add rax,16 |
| 86 |
| 87 $L$dec_loop2:: |
| 88 DB 102,15,56,222,209 |
| 89 DB 102,15,56,222,217 |
| 90 movups xmm1,XMMWORD PTR[rax*1+rcx] |
| 91 add rax,32 |
| 92 DB 102,15,56,222,208 |
| 93 DB 102,15,56,222,216 |
| 94 movups xmm0,XMMWORD PTR[((-16))+rax*1+rcx] |
| 95 jnz $L$dec_loop2 |
| 96 |
| 97 DB 102,15,56,222,209 |
| 98 DB 102,15,56,222,217 |
| 99 DB 102,15,56,223,208 |
| 100 DB 102,15,56,223,216 |
| 101 DB 0F3h,0C3h ;repret |
| 102 _aesni_decrypt2 ENDP |
| 103 |
| 104 ALIGN 16 |
| 105 _aesni_encrypt3 PROC PRIVATE |
| 106 movups xmm0,XMMWORD PTR[rcx] |
| 107 shl eax,4 |
| 108 movups xmm1,XMMWORD PTR[16+rcx] |
| 109 xorps xmm2,xmm0 |
| 110 xorps xmm3,xmm0 |
| 111 xorps xmm4,xmm0 |
| 112 movups xmm0,XMMWORD PTR[32+rcx] |
| 113 lea rcx,QWORD PTR[32+rax*1+rcx] |
| 114 neg rax |
| 115 add rax,16 |
| 116 |
| 117 $L$enc_loop3:: |
| 118 DB 102,15,56,220,209 |
| 119 DB 102,15,56,220,217 |
| 120 DB 102,15,56,220,225 |
| 121 movups xmm1,XMMWORD PTR[rax*1+rcx] |
| 122 add rax,32 |
| 123 DB 102,15,56,220,208 |
| 124 DB 102,15,56,220,216 |
| 125 DB 102,15,56,220,224 |
| 126 movups xmm0,XMMWORD PTR[((-16))+rax*1+rcx] |
| 127 jnz $L$enc_loop3 |
| 128 |
| 129 DB 102,15,56,220,209 |
| 130 DB 102,15,56,220,217 |
| 131 DB 102,15,56,220,225 |
| 132 DB 102,15,56,221,208 |
| 133 DB 102,15,56,221,216 |
| 134 DB 102,15,56,221,224 |
| 135 DB 0F3h,0C3h ;repret |
| 136 _aesni_encrypt3 ENDP |
| 137 |
| 138 ALIGN 16 |
| 139 _aesni_decrypt3 PROC PRIVATE |
| 140 movups xmm0,XMMWORD PTR[rcx] |
| 141 shl eax,4 |
| 142 movups xmm1,XMMWORD PTR[16+rcx] |
| 143 xorps xmm2,xmm0 |
| 144 xorps xmm3,xmm0 |
| 145 xorps xmm4,xmm0 |
| 146 movups xmm0,XMMWORD PTR[32+rcx] |
| 147 lea rcx,QWORD PTR[32+rax*1+rcx] |
| 148 neg rax |
| 149 add rax,16 |
| 150 |
| 151 $L$dec_loop3:: |
| 152 DB 102,15,56,222,209 |
| 153 DB 102,15,56,222,217 |
| 154 DB 102,15,56,222,225 |
| 155 movups xmm1,XMMWORD PTR[rax*1+rcx] |
| 156 add rax,32 |
| 157 DB 102,15,56,222,208 |
| 158 DB 102,15,56,222,216 |
| 159 DB 102,15,56,222,224 |
| 160 movups xmm0,XMMWORD PTR[((-16))+rax*1+rcx] |
| 161 jnz $L$dec_loop3 |
| 162 |
| 163 DB 102,15,56,222,209 |
| 164 DB 102,15,56,222,217 |
| 165 DB 102,15,56,222,225 |
| 166 DB 102,15,56,223,208 |
| 167 DB 102,15,56,223,216 |
| 168 DB 102,15,56,223,224 |
| 169 DB 0F3h,0C3h ;repret |
| 170 _aesni_decrypt3 ENDP |
| 171 |
| 172 ALIGN 16 |
| 173 _aesni_encrypt4 PROC PRIVATE |
| 174 movups xmm0,XMMWORD PTR[rcx] |
| 175 shl eax,4 |
| 176 movups xmm1,XMMWORD PTR[16+rcx] |
| 177 xorps xmm2,xmm0 |
| 178 xorps xmm3,xmm0 |
| 179 xorps xmm4,xmm0 |
| 180 xorps xmm5,xmm0 |
| 181 movups xmm0,XMMWORD PTR[32+rcx] |
| 182 lea rcx,QWORD PTR[32+rax*1+rcx] |
| 183 neg rax |
| 184 DB 00fh,01fh,000h |
| 185 add rax,16 |
| 186 |
| 187 $L$enc_loop4:: |
| 188 DB 102,15,56,220,209 |
| 189 DB 102,15,56,220,217 |
| 190 DB 102,15,56,220,225 |
| 191 DB 102,15,56,220,233 |
| 192 movups xmm1,XMMWORD PTR[rax*1+rcx] |
| 193 add rax,32 |
| 194 DB 102,15,56,220,208 |
| 195 DB 102,15,56,220,216 |
| 196 DB 102,15,56,220,224 |
| 197 DB 102,15,56,220,232 |
| 198 movups xmm0,XMMWORD PTR[((-16))+rax*1+rcx] |
| 199 jnz $L$enc_loop4 |
| 200 |
| 201 DB 102,15,56,220,209 |
| 202 DB 102,15,56,220,217 |
| 203 DB 102,15,56,220,225 |
| 204 DB 102,15,56,220,233 |
| 205 DB 102,15,56,221,208 |
| 206 DB 102,15,56,221,216 |
| 207 DB 102,15,56,221,224 |
| 208 DB 102,15,56,221,232 |
| 209 DB 0F3h,0C3h ;repret |
| 210 _aesni_encrypt4 ENDP |
| 211 |
| 212 ALIGN 16 |
| 213 _aesni_decrypt4 PROC PRIVATE |
| 214 movups xmm0,XMMWORD PTR[rcx] |
| 215 shl eax,4 |
| 216 movups xmm1,XMMWORD PTR[16+rcx] |
| 217 xorps xmm2,xmm0 |
| 218 xorps xmm3,xmm0 |
| 219 xorps xmm4,xmm0 |
| 220 xorps xmm5,xmm0 |
| 221 movups xmm0,XMMWORD PTR[32+rcx] |
| 222 lea rcx,QWORD PTR[32+rax*1+rcx] |
| 223 neg rax |
| 224 DB 00fh,01fh,000h |
| 225 add rax,16 |
| 226 |
| 227 $L$dec_loop4:: |
| 228 DB 102,15,56,222,209 |
| 229 DB 102,15,56,222,217 |
| 230 DB 102,15,56,222,225 |
| 231 DB 102,15,56,222,233 |
| 232 movups xmm1,XMMWORD PTR[rax*1+rcx] |
| 233 add rax,32 |
| 234 DB 102,15,56,222,208 |
| 235 DB 102,15,56,222,216 |
| 236 DB 102,15,56,222,224 |
| 237 DB 102,15,56,222,232 |
| 238 movups xmm0,XMMWORD PTR[((-16))+rax*1+rcx] |
| 239 jnz $L$dec_loop4 |
| 240 |
| 241 DB 102,15,56,222,209 |
| 242 DB 102,15,56,222,217 |
| 243 DB 102,15,56,222,225 |
| 244 DB 102,15,56,222,233 |
| 245 DB 102,15,56,223,208 |
| 246 DB 102,15,56,223,216 |
| 247 DB 102,15,56,223,224 |
| 248 DB 102,15,56,223,232 |
| 249 DB 0F3h,0C3h ;repret |
| 250 _aesni_decrypt4 ENDP |
| 251 |
| 252 ALIGN 16 |
| 253 _aesni_encrypt6 PROC PRIVATE |
| 254 movups xmm0,XMMWORD PTR[rcx] |
| 255 shl eax,4 |
| 256 movups xmm1,XMMWORD PTR[16+rcx] |
| 257 xorps xmm2,xmm0 |
| 258 pxor xmm3,xmm0 |
| 259 pxor xmm4,xmm0 |
| 260 DB 102,15,56,220,209 |
| 261 lea rcx,QWORD PTR[32+rax*1+rcx] |
| 262 neg rax |
| 263 DB 102,15,56,220,217 |
| 264 pxor xmm5,xmm0 |
| 265 pxor xmm6,xmm0 |
| 266 DB 102,15,56,220,225 |
| 267 pxor xmm7,xmm0 |
| 268 add rax,16 |
| 269 DB 102,15,56,220,233 |
| 270 DB 102,15,56,220,241 |
| 271 DB 102,15,56,220,249 |
| 272 movups xmm0,XMMWORD PTR[((-16))+rax*1+rcx] |
| 273 jmp $L$enc_loop6_enter |
| 274 ALIGN 16 |
| 275 $L$enc_loop6:: |
| 276 DB 102,15,56,220,209 |
| 277 DB 102,15,56,220,217 |
| 278 DB 102,15,56,220,225 |
| 279 DB 102,15,56,220,233 |
| 280 DB 102,15,56,220,241 |
| 281 DB 102,15,56,220,249 |
| 282 $L$enc_loop6_enter:: |
| 283 movups xmm1,XMMWORD PTR[rax*1+rcx] |
| 284 add rax,32 |
| 285 DB 102,15,56,220,208 |
| 286 DB 102,15,56,220,216 |
| 287 DB 102,15,56,220,224 |
| 288 DB 102,15,56,220,232 |
| 289 DB 102,15,56,220,240 |
| 290 DB 102,15,56,220,248 |
| 291 movups xmm0,XMMWORD PTR[((-16))+rax*1+rcx] |
| 292 jnz $L$enc_loop6 |
| 293 |
| 294 DB 102,15,56,220,209 |
| 295 DB 102,15,56,220,217 |
| 296 DB 102,15,56,220,225 |
| 297 DB 102,15,56,220,233 |
| 298 DB 102,15,56,220,241 |
| 299 DB 102,15,56,220,249 |
| 300 DB 102,15,56,221,208 |
| 301 DB 102,15,56,221,216 |
| 302 DB 102,15,56,221,224 |
| 303 DB 102,15,56,221,232 |
| 304 DB 102,15,56,221,240 |
| 305 DB 102,15,56,221,248 |
| 306 DB 0F3h,0C3h ;repret |
| 307 _aesni_encrypt6 ENDP |
| 308 |
| 309 ALIGN 16 |
| 310 _aesni_decrypt6 PROC PRIVATE |
| 311 movups xmm0,XMMWORD PTR[rcx] |
| 312 shl eax,4 |
| 313 movups xmm1,XMMWORD PTR[16+rcx] |
| 314 xorps xmm2,xmm0 |
| 315 pxor xmm3,xmm0 |
| 316 pxor xmm4,xmm0 |
| 317 DB 102,15,56,222,209 |
| 318 lea rcx,QWORD PTR[32+rax*1+rcx] |
| 319 neg rax |
| 320 DB 102,15,56,222,217 |
| 321 pxor xmm5,xmm0 |
| 322 pxor xmm6,xmm0 |
| 323 DB 102,15,56,222,225 |
| 324 pxor xmm7,xmm0 |
| 325 add rax,16 |
| 326 DB 102,15,56,222,233 |
| 327 DB 102,15,56,222,241 |
| 328 DB 102,15,56,222,249 |
| 329 movups xmm0,XMMWORD PTR[((-16))+rax*1+rcx] |
| 330 jmp $L$dec_loop6_enter |
| 331 ALIGN 16 |
| 332 $L$dec_loop6:: |
| 333 DB 102,15,56,222,209 |
| 334 DB 102,15,56,222,217 |
| 335 DB 102,15,56,222,225 |
| 336 DB 102,15,56,222,233 |
| 337 DB 102,15,56,222,241 |
| 338 DB 102,15,56,222,249 |
| 339 $L$dec_loop6_enter:: |
| 340 movups xmm1,XMMWORD PTR[rax*1+rcx] |
| 341 add rax,32 |
| 342 DB 102,15,56,222,208 |
| 343 DB 102,15,56,222,216 |
| 344 DB 102,15,56,222,224 |
| 345 DB 102,15,56,222,232 |
| 346 DB 102,15,56,222,240 |
| 347 DB 102,15,56,222,248 |
| 348 movups xmm0,XMMWORD PTR[((-16))+rax*1+rcx] |
| 349 jnz $L$dec_loop6 |
| 350 |
| 351 DB 102,15,56,222,209 |
| 352 DB 102,15,56,222,217 |
| 353 DB 102,15,56,222,225 |
| 354 DB 102,15,56,222,233 |
| 355 DB 102,15,56,222,241 |
| 356 DB 102,15,56,222,249 |
| 357 DB 102,15,56,223,208 |
| 358 DB 102,15,56,223,216 |
| 359 DB 102,15,56,223,224 |
| 360 DB 102,15,56,223,232 |
| 361 DB 102,15,56,223,240 |
| 362 DB 102,15,56,223,248 |
| 363 DB 0F3h,0C3h ;repret |
| 364 _aesni_decrypt6 ENDP |
| 365 |
| 366 ALIGN 16 |
| 367 _aesni_encrypt8 PROC PRIVATE |
| 368 movups xmm0,XMMWORD PTR[rcx] |
| 369 shl eax,4 |
| 370 movups xmm1,XMMWORD PTR[16+rcx] |
| 371 xorps xmm2,xmm0 |
| 372 xorps xmm3,xmm0 |
| 373 pxor xmm4,xmm0 |
| 374 pxor xmm5,xmm0 |
| 375 pxor xmm6,xmm0 |
| 376 lea rcx,QWORD PTR[32+rax*1+rcx] |
| 377 neg rax |
| 378 DB 102,15,56,220,209 |
| 379 add rax,16 |
| 380 pxor xmm7,xmm0 |
| 381 DB 102,15,56,220,217 |
| 382 pxor xmm8,xmm0 |
| 383 pxor xmm9,xmm0 |
| 384 DB 102,15,56,220,225 |
| 385 DB 102,15,56,220,233 |
| 386 DB 102,15,56,220,241 |
| 387 DB 102,15,56,220,249 |
| 388 DB 102,68,15,56,220,193 |
| 389 DB 102,68,15,56,220,201 |
| 390 movups xmm0,XMMWORD PTR[((-16))+rax*1+rcx] |
| 391 jmp $L$enc_loop8_enter |
| 392 ALIGN 16 |
| 393 $L$enc_loop8:: |
| 394 DB 102,15,56,220,209 |
| 395 DB 102,15,56,220,217 |
| 396 DB 102,15,56,220,225 |
| 397 DB 102,15,56,220,233 |
| 398 DB 102,15,56,220,241 |
| 399 DB 102,15,56,220,249 |
| 400 DB 102,68,15,56,220,193 |
| 401 DB 102,68,15,56,220,201 |
| 402 $L$enc_loop8_enter:: |
| 403 movups xmm1,XMMWORD PTR[rax*1+rcx] |
| 404 add rax,32 |
| 405 DB 102,15,56,220,208 |
| 406 DB 102,15,56,220,216 |
| 407 DB 102,15,56,220,224 |
| 408 DB 102,15,56,220,232 |
| 409 DB 102,15,56,220,240 |
| 410 DB 102,15,56,220,248 |
| 411 DB 102,68,15,56,220,192 |
| 412 DB 102,68,15,56,220,200 |
| 413 movups xmm0,XMMWORD PTR[((-16))+rax*1+rcx] |
| 414 jnz $L$enc_loop8 |
| 415 |
| 416 DB 102,15,56,220,209 |
| 417 DB 102,15,56,220,217 |
| 418 DB 102,15,56,220,225 |
| 419 DB 102,15,56,220,233 |
| 420 DB 102,15,56,220,241 |
| 421 DB 102,15,56,220,249 |
| 422 DB 102,68,15,56,220,193 |
| 423 DB 102,68,15,56,220,201 |
| 424 DB 102,15,56,221,208 |
| 425 DB 102,15,56,221,216 |
| 426 DB 102,15,56,221,224 |
| 427 DB 102,15,56,221,232 |
| 428 DB 102,15,56,221,240 |
| 429 DB 102,15,56,221,248 |
| 430 DB 102,68,15,56,221,192 |
| 431 DB 102,68,15,56,221,200 |
| 432 DB 0F3h,0C3h ;repret |
| 433 _aesni_encrypt8 ENDP |
| 434 |
| 435 ALIGN 16 |
| 436 _aesni_decrypt8 PROC PRIVATE |
| 437 movups xmm0,XMMWORD PTR[rcx] |
| 438 shl eax,4 |
| 439 movups xmm1,XMMWORD PTR[16+rcx] |
| 440 xorps xmm2,xmm0 |
| 441 xorps xmm3,xmm0 |
| 442 pxor xmm4,xmm0 |
| 443 pxor xmm5,xmm0 |
| 444 pxor xmm6,xmm0 |
| 445 lea rcx,QWORD PTR[32+rax*1+rcx] |
| 446 neg rax |
| 447 DB 102,15,56,222,209 |
| 448 add rax,16 |
| 449 pxor xmm7,xmm0 |
| 450 DB 102,15,56,222,217 |
| 451 pxor xmm8,xmm0 |
| 452 pxor xmm9,xmm0 |
| 453 DB 102,15,56,222,225 |
| 454 DB 102,15,56,222,233 |
| 455 DB 102,15,56,222,241 |
| 456 DB 102,15,56,222,249 |
| 457 DB 102,68,15,56,222,193 |
| 458 DB 102,68,15,56,222,201 |
| 459 movups xmm0,XMMWORD PTR[((-16))+rax*1+rcx] |
| 460 jmp $L$dec_loop8_enter |
| 461 ALIGN 16 |
| 462 $L$dec_loop8:: |
| 463 DB 102,15,56,222,209 |
| 464 DB 102,15,56,222,217 |
| 465 DB 102,15,56,222,225 |
| 466 DB 102,15,56,222,233 |
| 467 DB 102,15,56,222,241 |
| 468 DB 102,15,56,222,249 |
| 469 DB 102,68,15,56,222,193 |
| 470 DB 102,68,15,56,222,201 |
| 471 $L$dec_loop8_enter:: |
| 472 movups xmm1,XMMWORD PTR[rax*1+rcx] |
| 473 add rax,32 |
| 474 DB 102,15,56,222,208 |
| 475 DB 102,15,56,222,216 |
| 476 DB 102,15,56,222,224 |
| 477 DB 102,15,56,222,232 |
| 478 DB 102,15,56,222,240 |
| 479 DB 102,15,56,222,248 |
| 480 DB 102,68,15,56,222,192 |
| 481 DB 102,68,15,56,222,200 |
| 482 movups xmm0,XMMWORD PTR[((-16))+rax*1+rcx] |
| 483 jnz $L$dec_loop8 |
| 484 |
| 485 DB 102,15,56,222,209 |
| 486 DB 102,15,56,222,217 |
| 487 DB 102,15,56,222,225 |
| 488 DB 102,15,56,222,233 |
| 489 DB 102,15,56,222,241 |
| 490 DB 102,15,56,222,249 |
| 491 DB 102,68,15,56,222,193 |
| 492 DB 102,68,15,56,222,201 |
| 493 DB 102,15,56,223,208 |
| 494 DB 102,15,56,223,216 |
| 495 DB 102,15,56,223,224 |
| 496 DB 102,15,56,223,232 |
| 497 DB 102,15,56,223,240 |
| 498 DB 102,15,56,223,248 |
| 499 DB 102,68,15,56,223,192 |
| 500 DB 102,68,15,56,223,200 |
| 501 DB 0F3h,0C3h ;repret |
| 502 _aesni_decrypt8 ENDP |
| 503 PUBLIC aesni_ecb_encrypt |
| 504 |
| 505 ALIGN 16 |
| 506 aesni_ecb_encrypt PROC PUBLIC |
| 507 mov QWORD PTR[8+rsp],rdi ;WIN64 prologue |
| 508 mov QWORD PTR[16+rsp],rsi |
| 509 mov rax,rsp |
| 510 $L$SEH_begin_aesni_ecb_encrypt:: |
| 511 mov rdi,rcx |
| 512 mov rsi,rdx |
| 513 mov rdx,r8 |
| 514 mov rcx,r9 |
| 515 mov r8,QWORD PTR[40+rsp] |
| 516 |
| 517 |
| 518 and rdx,-16 |
| 519 jz $L$ecb_ret |
| 520 |
| 521 mov eax,DWORD PTR[240+rcx] |
| 522 movups xmm0,XMMWORD PTR[rcx] |
| 523 mov r11,rcx |
| 524 mov r10d,eax |
| 525 test r8d,r8d |
| 526 jz $L$ecb_decrypt |
| 527 |
| 528 cmp rdx,080h |
| 529 jb $L$ecb_enc_tail |
| 530 |
| 531 movdqu xmm2,XMMWORD PTR[rdi] |
| 532 movdqu xmm3,XMMWORD PTR[16+rdi] |
| 533 movdqu xmm4,XMMWORD PTR[32+rdi] |
| 534 movdqu xmm5,XMMWORD PTR[48+rdi] |
| 535 movdqu xmm6,XMMWORD PTR[64+rdi] |
| 536 movdqu xmm7,XMMWORD PTR[80+rdi] |
| 537 movdqu xmm8,XMMWORD PTR[96+rdi] |
| 538 movdqu xmm9,XMMWORD PTR[112+rdi] |
| 539 lea rdi,QWORD PTR[128+rdi] |
| 540 sub rdx,080h |
| 541 jmp $L$ecb_enc_loop8_enter |
| 542 ALIGN 16 |
| 543 $L$ecb_enc_loop8:: |
| 544 movups XMMWORD PTR[rsi],xmm2 |
| 545 mov rcx,r11 |
| 546 movdqu xmm2,XMMWORD PTR[rdi] |
| 547 mov eax,r10d |
| 548 movups XMMWORD PTR[16+rsi],xmm3 |
| 549 movdqu xmm3,XMMWORD PTR[16+rdi] |
| 550 movups XMMWORD PTR[32+rsi],xmm4 |
| 551 movdqu xmm4,XMMWORD PTR[32+rdi] |
| 552 movups XMMWORD PTR[48+rsi],xmm5 |
| 553 movdqu xmm5,XMMWORD PTR[48+rdi] |
| 554 movups XMMWORD PTR[64+rsi],xmm6 |
| 555 movdqu xmm6,XMMWORD PTR[64+rdi] |
| 556 movups XMMWORD PTR[80+rsi],xmm7 |
| 557 movdqu xmm7,XMMWORD PTR[80+rdi] |
| 558 movups XMMWORD PTR[96+rsi],xmm8 |
| 559 movdqu xmm8,XMMWORD PTR[96+rdi] |
| 560 movups XMMWORD PTR[112+rsi],xmm9 |
| 561 lea rsi,QWORD PTR[128+rsi] |
| 562 movdqu xmm9,XMMWORD PTR[112+rdi] |
| 563 lea rdi,QWORD PTR[128+rdi] |
| 564 $L$ecb_enc_loop8_enter:: |
| 565 |
| 566 call _aesni_encrypt8 |
| 567 |
| 568 sub rdx,080h |
| 569 jnc $L$ecb_enc_loop8 |
| 570 |
| 571 movups XMMWORD PTR[rsi],xmm2 |
| 572 mov rcx,r11 |
| 573 movups XMMWORD PTR[16+rsi],xmm3 |
| 574 mov eax,r10d |
| 575 movups XMMWORD PTR[32+rsi],xmm4 |
| 576 movups XMMWORD PTR[48+rsi],xmm5 |
| 577 movups XMMWORD PTR[64+rsi],xmm6 |
| 578 movups XMMWORD PTR[80+rsi],xmm7 |
| 579 movups XMMWORD PTR[96+rsi],xmm8 |
| 580 movups XMMWORD PTR[112+rsi],xmm9 |
| 581 lea rsi,QWORD PTR[128+rsi] |
| 582 add rdx,080h |
| 583 jz $L$ecb_ret |
| 584 |
| 585 $L$ecb_enc_tail:: |
| 586 movups xmm2,XMMWORD PTR[rdi] |
| 587 cmp rdx,020h |
| 588 jb $L$ecb_enc_one |
| 589 movups xmm3,XMMWORD PTR[16+rdi] |
| 590 je $L$ecb_enc_two |
| 591 movups xmm4,XMMWORD PTR[32+rdi] |
| 592 cmp rdx,040h |
| 593 jb $L$ecb_enc_three |
| 594 movups xmm5,XMMWORD PTR[48+rdi] |
| 595 je $L$ecb_enc_four |
| 596 movups xmm6,XMMWORD PTR[64+rdi] |
| 597 cmp rdx,060h |
| 598 jb $L$ecb_enc_five |
| 599 movups xmm7,XMMWORD PTR[80+rdi] |
| 600 je $L$ecb_enc_six |
| 601 movdqu xmm8,XMMWORD PTR[96+rdi] |
| 602 call _aesni_encrypt8 |
| 603 movups XMMWORD PTR[rsi],xmm2 |
| 604 movups XMMWORD PTR[16+rsi],xmm3 |
| 605 movups XMMWORD PTR[32+rsi],xmm4 |
| 606 movups XMMWORD PTR[48+rsi],xmm5 |
| 607 movups XMMWORD PTR[64+rsi],xmm6 |
| 608 movups XMMWORD PTR[80+rsi],xmm7 |
| 609 movups XMMWORD PTR[96+rsi],xmm8 |
| 610 jmp $L$ecb_ret |
| 611 ALIGN 16 |
| 612 $L$ecb_enc_one:: |
| 613 movups xmm0,XMMWORD PTR[rcx] |
| 614 movups xmm1,XMMWORD PTR[16+rcx] |
| 615 lea rcx,QWORD PTR[32+rcx] |
| 616 xorps xmm2,xmm0 |
| 617 $L$oop_enc1_3:: |
| 618 DB 102,15,56,220,209 |
| 619 dec eax |
| 620 movups xmm1,XMMWORD PTR[rcx] |
| 621 lea rcx,QWORD PTR[16+rcx] |
| 622 jnz $L$oop_enc1_3 |
| 623 DB 102,15,56,221,209 |
| 624 movups XMMWORD PTR[rsi],xmm2 |
| 625 jmp $L$ecb_ret |
| 626 ALIGN 16 |
| 627 $L$ecb_enc_two:: |
| 628 call _aesni_encrypt2 |
| 629 movups XMMWORD PTR[rsi],xmm2 |
| 630 movups XMMWORD PTR[16+rsi],xmm3 |
| 631 jmp $L$ecb_ret |
| 632 ALIGN 16 |
| 633 $L$ecb_enc_three:: |
| 634 call _aesni_encrypt3 |
| 635 movups XMMWORD PTR[rsi],xmm2 |
| 636 movups XMMWORD PTR[16+rsi],xmm3 |
| 637 movups XMMWORD PTR[32+rsi],xmm4 |
| 638 jmp $L$ecb_ret |
| 639 ALIGN 16 |
| 640 $L$ecb_enc_four:: |
| 641 call _aesni_encrypt4 |
| 642 movups XMMWORD PTR[rsi],xmm2 |
| 643 movups XMMWORD PTR[16+rsi],xmm3 |
| 644 movups XMMWORD PTR[32+rsi],xmm4 |
| 645 movups XMMWORD PTR[48+rsi],xmm5 |
| 646 jmp $L$ecb_ret |
| 647 ALIGN 16 |
| 648 $L$ecb_enc_five:: |
| 649 xorps xmm7,xmm7 |
| 650 call _aesni_encrypt6 |
| 651 movups XMMWORD PTR[rsi],xmm2 |
| 652 movups XMMWORD PTR[16+rsi],xmm3 |
| 653 movups XMMWORD PTR[32+rsi],xmm4 |
| 654 movups XMMWORD PTR[48+rsi],xmm5 |
| 655 movups XMMWORD PTR[64+rsi],xmm6 |
| 656 jmp $L$ecb_ret |
| 657 ALIGN 16 |
| 658 $L$ecb_enc_six:: |
| 659 call _aesni_encrypt6 |
| 660 movups XMMWORD PTR[rsi],xmm2 |
| 661 movups XMMWORD PTR[16+rsi],xmm3 |
| 662 movups XMMWORD PTR[32+rsi],xmm4 |
| 663 movups XMMWORD PTR[48+rsi],xmm5 |
| 664 movups XMMWORD PTR[64+rsi],xmm6 |
| 665 movups XMMWORD PTR[80+rsi],xmm7 |
| 666 jmp $L$ecb_ret |
| 667 |
| 668 ALIGN 16 |
| 669 $L$ecb_decrypt:: |
| 670 cmp rdx,080h |
| 671 jb $L$ecb_dec_tail |
| 672 |
| 673 movdqu xmm2,XMMWORD PTR[rdi] |
| 674 movdqu xmm3,XMMWORD PTR[16+rdi] |
| 675 movdqu xmm4,XMMWORD PTR[32+rdi] |
| 676 movdqu xmm5,XMMWORD PTR[48+rdi] |
| 677 movdqu xmm6,XMMWORD PTR[64+rdi] |
| 678 movdqu xmm7,XMMWORD PTR[80+rdi] |
| 679 movdqu xmm8,XMMWORD PTR[96+rdi] |
| 680 movdqu xmm9,XMMWORD PTR[112+rdi] |
| 681 lea rdi,QWORD PTR[128+rdi] |
| 682 sub rdx,080h |
| 683 jmp $L$ecb_dec_loop8_enter |
| 684 ALIGN 16 |
| 685 $L$ecb_dec_loop8:: |
| 686 movups XMMWORD PTR[rsi],xmm2 |
| 687 mov rcx,r11 |
| 688 movdqu xmm2,XMMWORD PTR[rdi] |
| 689 mov eax,r10d |
| 690 movups XMMWORD PTR[16+rsi],xmm3 |
| 691 movdqu xmm3,XMMWORD PTR[16+rdi] |
| 692 movups XMMWORD PTR[32+rsi],xmm4 |
| 693 movdqu xmm4,XMMWORD PTR[32+rdi] |
| 694 movups XMMWORD PTR[48+rsi],xmm5 |
| 695 movdqu xmm5,XMMWORD PTR[48+rdi] |
| 696 movups XMMWORD PTR[64+rsi],xmm6 |
| 697 movdqu xmm6,XMMWORD PTR[64+rdi] |
| 698 movups XMMWORD PTR[80+rsi],xmm7 |
| 699 movdqu xmm7,XMMWORD PTR[80+rdi] |
| 700 movups XMMWORD PTR[96+rsi],xmm8 |
| 701 movdqu xmm8,XMMWORD PTR[96+rdi] |
| 702 movups XMMWORD PTR[112+rsi],xmm9 |
| 703 lea rsi,QWORD PTR[128+rsi] |
| 704 movdqu xmm9,XMMWORD PTR[112+rdi] |
| 705 lea rdi,QWORD PTR[128+rdi] |
| 706 $L$ecb_dec_loop8_enter:: |
| 707 |
| 708 call _aesni_decrypt8 |
| 709 |
| 710 movups xmm0,XMMWORD PTR[r11] |
| 711 sub rdx,080h |
| 712 jnc $L$ecb_dec_loop8 |
| 713 |
| 714 movups XMMWORD PTR[rsi],xmm2 |
| 715 mov rcx,r11 |
| 716 movups XMMWORD PTR[16+rsi],xmm3 |
| 717 mov eax,r10d |
| 718 movups XMMWORD PTR[32+rsi],xmm4 |
| 719 movups XMMWORD PTR[48+rsi],xmm5 |
| 720 movups XMMWORD PTR[64+rsi],xmm6 |
| 721 movups XMMWORD PTR[80+rsi],xmm7 |
| 722 movups XMMWORD PTR[96+rsi],xmm8 |
| 723 movups XMMWORD PTR[112+rsi],xmm9 |
| 724 lea rsi,QWORD PTR[128+rsi] |
| 725 add rdx,080h |
| 726 jz $L$ecb_ret |
| 727 |
| 728 $L$ecb_dec_tail:: |
| 729 movups xmm2,XMMWORD PTR[rdi] |
| 730 cmp rdx,020h |
| 731 jb $L$ecb_dec_one |
| 732 movups xmm3,XMMWORD PTR[16+rdi] |
| 733 je $L$ecb_dec_two |
| 734 movups xmm4,XMMWORD PTR[32+rdi] |
| 735 cmp rdx,040h |
| 736 jb $L$ecb_dec_three |
| 737 movups xmm5,XMMWORD PTR[48+rdi] |
| 738 je $L$ecb_dec_four |
| 739 movups xmm6,XMMWORD PTR[64+rdi] |
| 740 cmp rdx,060h |
| 741 jb $L$ecb_dec_five |
| 742 movups xmm7,XMMWORD PTR[80+rdi] |
| 743 je $L$ecb_dec_six |
| 744 movups xmm8,XMMWORD PTR[96+rdi] |
| 745 movups xmm0,XMMWORD PTR[rcx] |
| 746 call _aesni_decrypt8 |
| 747 movups XMMWORD PTR[rsi],xmm2 |
| 748 movups XMMWORD PTR[16+rsi],xmm3 |
| 749 movups XMMWORD PTR[32+rsi],xmm4 |
| 750 movups XMMWORD PTR[48+rsi],xmm5 |
| 751 movups XMMWORD PTR[64+rsi],xmm6 |
| 752 movups XMMWORD PTR[80+rsi],xmm7 |
| 753 movups XMMWORD PTR[96+rsi],xmm8 |
| 754 jmp $L$ecb_ret |
| 755 ALIGN 16 |
| 756 $L$ecb_dec_one:: |
| 757 movups xmm0,XMMWORD PTR[rcx] |
| 758 movups xmm1,XMMWORD PTR[16+rcx] |
| 759 lea rcx,QWORD PTR[32+rcx] |
| 760 xorps xmm2,xmm0 |
| 761 $L$oop_dec1_4:: |
| 762 DB 102,15,56,222,209 |
| 763 dec eax |
| 764 movups xmm1,XMMWORD PTR[rcx] |
| 765 lea rcx,QWORD PTR[16+rcx] |
| 766 jnz $L$oop_dec1_4 |
| 767 DB 102,15,56,223,209 |
| 768 movups XMMWORD PTR[rsi],xmm2 |
| 769 jmp $L$ecb_ret |
| 770 ALIGN 16 |
| 771 $L$ecb_dec_two:: |
| 772 call _aesni_decrypt2 |
| 773 movups XMMWORD PTR[rsi],xmm2 |
| 774 movups XMMWORD PTR[16+rsi],xmm3 |
| 775 jmp $L$ecb_ret |
| 776 ALIGN 16 |
| 777 $L$ecb_dec_three:: |
| 778 call _aesni_decrypt3 |
| 779 movups XMMWORD PTR[rsi],xmm2 |
| 780 movups XMMWORD PTR[16+rsi],xmm3 |
| 781 movups XMMWORD PTR[32+rsi],xmm4 |
| 782 jmp $L$ecb_ret |
| 783 ALIGN 16 |
| 784 $L$ecb_dec_four:: |
| 785 call _aesni_decrypt4 |
| 786 movups XMMWORD PTR[rsi],xmm2 |
| 787 movups XMMWORD PTR[16+rsi],xmm3 |
| 788 movups XMMWORD PTR[32+rsi],xmm4 |
| 789 movups XMMWORD PTR[48+rsi],xmm5 |
| 790 jmp $L$ecb_ret |
| 791 ALIGN 16 |
| 792 $L$ecb_dec_five:: |
| 793 xorps xmm7,xmm7 |
| 794 call _aesni_decrypt6 |
| 795 movups XMMWORD PTR[rsi],xmm2 |
| 796 movups XMMWORD PTR[16+rsi],xmm3 |
| 797 movups XMMWORD PTR[32+rsi],xmm4 |
| 798 movups XMMWORD PTR[48+rsi],xmm5 |
| 799 movups XMMWORD PTR[64+rsi],xmm6 |
| 800 jmp $L$ecb_ret |
| 801 ALIGN 16 |
| 802 $L$ecb_dec_six:: |
| 803 call _aesni_decrypt6 |
| 804 movups XMMWORD PTR[rsi],xmm2 |
| 805 movups XMMWORD PTR[16+rsi],xmm3 |
| 806 movups XMMWORD PTR[32+rsi],xmm4 |
| 807 movups XMMWORD PTR[48+rsi],xmm5 |
| 808 movups XMMWORD PTR[64+rsi],xmm6 |
| 809 movups XMMWORD PTR[80+rsi],xmm7 |
| 810 |
| 811 $L$ecb_ret:: |
| 812 mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue |
| 813 mov rsi,QWORD PTR[16+rsp] |
| 814 DB 0F3h,0C3h ;repret |
| 815 $L$SEH_end_aesni_ecb_encrypt:: |
| 816 aesni_ecb_encrypt ENDP |
| 817 PUBLIC aesni_ccm64_encrypt_blocks |
| 818 |
| 819 ALIGN 16 |
| 820 aesni_ccm64_encrypt_blocks PROC PUBLIC |
| 821 mov QWORD PTR[8+rsp],rdi ;WIN64 prologue |
| 822 mov QWORD PTR[16+rsp],rsi |
| 823 mov rax,rsp |
| 824 $L$SEH_begin_aesni_ccm64_encrypt_blocks:: |
| 825 mov rdi,rcx |
| 826 mov rsi,rdx |
| 827 mov rdx,r8 |
| 828 mov rcx,r9 |
| 829 mov r8,QWORD PTR[40+rsp] |
| 830 mov r9,QWORD PTR[48+rsp] |
| 831 |
| 832 |
| 833 lea rsp,QWORD PTR[((-88))+rsp] |
| 834 movaps XMMWORD PTR[rsp],xmm6 |
| 835 movaps XMMWORD PTR[16+rsp],xmm7 |
| 836 movaps XMMWORD PTR[32+rsp],xmm8 |
| 837 movaps XMMWORD PTR[48+rsp],xmm9 |
| 838 $L$ccm64_enc_body:: |
| 839 mov eax,DWORD PTR[240+rcx] |
| 840 movdqu xmm6,XMMWORD PTR[r8] |
| 841 movdqa xmm9,XMMWORD PTR[$L$increment64] |
| 842 movdqa xmm7,XMMWORD PTR[$L$bswap_mask] |
| 843 |
| 844 shl eax,4 |
| 845 mov r10d,16 |
| 846 lea r11,QWORD PTR[rcx] |
| 847 movdqu xmm3,XMMWORD PTR[r9] |
| 848 movdqa xmm2,xmm6 |
| 849 lea rcx,QWORD PTR[32+rax*1+rcx] |
| 850 DB 102,15,56,0,247 |
| 851 sub r10,rax |
| 852 jmp $L$ccm64_enc_outer |
| 853 ALIGN 16 |
| 854 $L$ccm64_enc_outer:: |
| 855 movups xmm0,XMMWORD PTR[r11] |
| 856 mov rax,r10 |
| 857 movups xmm8,XMMWORD PTR[rdi] |
| 858 |
| 859 xorps xmm2,xmm0 |
| 860 movups xmm1,XMMWORD PTR[16+r11] |
| 861 xorps xmm0,xmm8 |
| 862 xorps xmm3,xmm0 |
| 863 movups xmm0,XMMWORD PTR[32+r11] |
| 864 |
| 865 $L$ccm64_enc2_loop:: |
| 866 DB 102,15,56,220,209 |
| 867 DB 102,15,56,220,217 |
| 868 movups xmm1,XMMWORD PTR[rax*1+rcx] |
| 869 add rax,32 |
| 870 DB 102,15,56,220,208 |
| 871 DB 102,15,56,220,216 |
| 872 movups xmm0,XMMWORD PTR[((-16))+rax*1+rcx] |
| 873 jnz $L$ccm64_enc2_loop |
| 874 DB 102,15,56,220,209 |
| 875 DB 102,15,56,220,217 |
| 876 paddq xmm6,xmm9 |
| 877 dec rdx |
| 878 DB 102,15,56,221,208 |
| 879 DB 102,15,56,221,216 |
| 880 |
| 881 lea rdi,QWORD PTR[16+rdi] |
| 882 xorps xmm8,xmm2 |
| 883 movdqa xmm2,xmm6 |
| 884 movups XMMWORD PTR[rsi],xmm8 |
| 885 DB 102,15,56,0,215 |
| 886 lea rsi,QWORD PTR[16+rsi] |
| 887 jnz $L$ccm64_enc_outer |
| 888 |
| 889 movups XMMWORD PTR[r9],xmm3 |
| 890 movaps xmm6,XMMWORD PTR[rsp] |
| 891 movaps xmm7,XMMWORD PTR[16+rsp] |
| 892 movaps xmm8,XMMWORD PTR[32+rsp] |
| 893 movaps xmm9,XMMWORD PTR[48+rsp] |
| 894 lea rsp,QWORD PTR[88+rsp] |
| 895 $L$ccm64_enc_ret:: |
| 896 mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue |
| 897 mov rsi,QWORD PTR[16+rsp] |
| 898 DB 0F3h,0C3h ;repret |
| 899 $L$SEH_end_aesni_ccm64_encrypt_blocks:: |
| 900 aesni_ccm64_encrypt_blocks ENDP |
| 901 PUBLIC aesni_ccm64_decrypt_blocks |
| 902 |
| 903 ALIGN 16 |
| 904 aesni_ccm64_decrypt_blocks PROC PUBLIC |
| 905 mov QWORD PTR[8+rsp],rdi ;WIN64 prologue |
| 906 mov QWORD PTR[16+rsp],rsi |
| 907 mov rax,rsp |
| 908 $L$SEH_begin_aesni_ccm64_decrypt_blocks:: |
| 909 mov rdi,rcx |
| 910 mov rsi,rdx |
| 911 mov rdx,r8 |
| 912 mov rcx,r9 |
| 913 mov r8,QWORD PTR[40+rsp] |
| 914 mov r9,QWORD PTR[48+rsp] |
| 915 |
| 916 |
| 917 lea rsp,QWORD PTR[((-88))+rsp] |
| 918 movaps XMMWORD PTR[rsp],xmm6 |
| 919 movaps XMMWORD PTR[16+rsp],xmm7 |
| 920 movaps XMMWORD PTR[32+rsp],xmm8 |
| 921 movaps XMMWORD PTR[48+rsp],xmm9 |
| 922 $L$ccm64_dec_body:: |
| 923 mov eax,DWORD PTR[240+rcx] |
| 924 movups xmm6,XMMWORD PTR[r8] |
| 925 movdqu xmm3,XMMWORD PTR[r9] |
| 926 movdqa xmm9,XMMWORD PTR[$L$increment64] |
| 927 movdqa xmm7,XMMWORD PTR[$L$bswap_mask] |
| 928 |
| 929 movaps xmm2,xmm6 |
| 930 mov r10d,eax |
| 931 mov r11,rcx |
| 932 DB 102,15,56,0,247 |
| 933 movups xmm0,XMMWORD PTR[rcx] |
| 934 movups xmm1,XMMWORD PTR[16+rcx] |
| 935 lea rcx,QWORD PTR[32+rcx] |
| 936 xorps xmm2,xmm0 |
| 937 $L$oop_enc1_5:: |
| 938 DB 102,15,56,220,209 |
| 939 dec eax |
| 940 movups xmm1,XMMWORD PTR[rcx] |
| 941 lea rcx,QWORD PTR[16+rcx] |
| 942 jnz $L$oop_enc1_5 |
| 943 DB 102,15,56,221,209 |
| 944 shl r10d,4 |
| 945 mov eax,16 |
| 946 movups xmm8,XMMWORD PTR[rdi] |
| 947 paddq xmm6,xmm9 |
| 948 lea rdi,QWORD PTR[16+rdi] |
| 949 sub rax,r10 |
| 950 lea rcx,QWORD PTR[32+r10*1+r11] |
| 951 mov r10,rax |
| 952 jmp $L$ccm64_dec_outer |
| 953 ALIGN 16 |
| 954 $L$ccm64_dec_outer:: |
| 955 xorps xmm8,xmm2 |
| 956 movdqa xmm2,xmm6 |
| 957 movups XMMWORD PTR[rsi],xmm8 |
| 958 lea rsi,QWORD PTR[16+rsi] |
| 959 DB 102,15,56,0,215 |
| 960 |
| 961 sub rdx,1 |
| 962 jz $L$ccm64_dec_break |
| 963 |
| 964 movups xmm0,XMMWORD PTR[r11] |
| 965 mov rax,r10 |
| 966 movups xmm1,XMMWORD PTR[16+r11] |
| 967 xorps xmm8,xmm0 |
| 968 xorps xmm2,xmm0 |
| 969 xorps xmm3,xmm8 |
| 970 movups xmm0,XMMWORD PTR[32+r11] |
| 971 jmp $L$ccm64_dec2_loop |
| 972 ALIGN 16 |
| 973 $L$ccm64_dec2_loop:: |
| 974 DB 102,15,56,220,209 |
| 975 DB 102,15,56,220,217 |
| 976 movups xmm1,XMMWORD PTR[rax*1+rcx] |
| 977 add rax,32 |
| 978 DB 102,15,56,220,208 |
| 979 DB 102,15,56,220,216 |
| 980 movups xmm0,XMMWORD PTR[((-16))+rax*1+rcx] |
| 981 jnz $L$ccm64_dec2_loop |
| 982 movups xmm8,XMMWORD PTR[rdi] |
| 983 paddq xmm6,xmm9 |
| 984 DB 102,15,56,220,209 |
| 985 DB 102,15,56,220,217 |
| 986 DB 102,15,56,221,208 |
| 987 DB 102,15,56,221,216 |
| 988 lea rdi,QWORD PTR[16+rdi] |
| 989 jmp $L$ccm64_dec_outer |
| 990 |
| 991 ALIGN 16 |
| 992 $L$ccm64_dec_break:: |
| 993 |
| 994 mov eax,DWORD PTR[240+r11] |
| 995 movups xmm0,XMMWORD PTR[r11] |
| 996 movups xmm1,XMMWORD PTR[16+r11] |
| 997 xorps xmm8,xmm0 |
| 998 lea r11,QWORD PTR[32+r11] |
| 999 xorps xmm3,xmm8 |
| 1000 $L$oop_enc1_6:: |
| 1001 DB 102,15,56,220,217 |
| 1002 dec eax |
| 1003 movups xmm1,XMMWORD PTR[r11] |
| 1004 lea r11,QWORD PTR[16+r11] |
| 1005 jnz $L$oop_enc1_6 |
| 1006 DB 102,15,56,221,217 |
| 1007 movups XMMWORD PTR[r9],xmm3 |
| 1008 movaps xmm6,XMMWORD PTR[rsp] |
| 1009 movaps xmm7,XMMWORD PTR[16+rsp] |
| 1010 movaps xmm8,XMMWORD PTR[32+rsp] |
| 1011 movaps xmm9,XMMWORD PTR[48+rsp] |
| 1012 lea rsp,QWORD PTR[88+rsp] |
| 1013 $L$ccm64_dec_ret:: |
| 1014 mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue |
| 1015 mov rsi,QWORD PTR[16+rsp] |
| 1016 DB 0F3h,0C3h ;repret |
| 1017 $L$SEH_end_aesni_ccm64_decrypt_blocks:: |
| 1018 aesni_ccm64_decrypt_blocks ENDP |
| 1019 PUBLIC aesni_ctr32_encrypt_blocks |
| 1020 |
| 1021 ALIGN 16 |
| 1022 aesni_ctr32_encrypt_blocks PROC PUBLIC |
| 1023 mov QWORD PTR[8+rsp],rdi ;WIN64 prologue |
| 1024 mov QWORD PTR[16+rsp],rsi |
| 1025 mov rax,rsp |
| 1026 $L$SEH_begin_aesni_ctr32_encrypt_blocks:: |
| 1027 mov rdi,rcx |
| 1028 mov rsi,rdx |
| 1029 mov rdx,r8 |
| 1030 mov rcx,r9 |
| 1031 mov r8,QWORD PTR[40+rsp] |
| 1032 |
| 1033 |
| 1034 lea rax,QWORD PTR[rsp] |
| 1035 push rbp |
| 1036 sub rsp,288 |
| 1037 and rsp,-16 |
| 1038 movaps XMMWORD PTR[(-168)+rax],xmm6 |
| 1039 movaps XMMWORD PTR[(-152)+rax],xmm7 |
| 1040 movaps XMMWORD PTR[(-136)+rax],xmm8 |
| 1041 movaps XMMWORD PTR[(-120)+rax],xmm9 |
| 1042 movaps XMMWORD PTR[(-104)+rax],xmm10 |
| 1043 movaps XMMWORD PTR[(-88)+rax],xmm11 |
| 1044 movaps XMMWORD PTR[(-72)+rax],xmm12 |
| 1045 movaps XMMWORD PTR[(-56)+rax],xmm13 |
| 1046 movaps XMMWORD PTR[(-40)+rax],xmm14 |
| 1047 movaps XMMWORD PTR[(-24)+rax],xmm15 |
| 1048 $L$ctr32_body:: |
| 1049 lea rbp,QWORD PTR[((-8))+rax] |
| 1050 |
| 1051 cmp rdx,1 |
| 1052 je $L$ctr32_one_shortcut |
| 1053 |
| 1054 movdqu xmm2,XMMWORD PTR[r8] |
| 1055 movdqu xmm0,XMMWORD PTR[rcx] |
| 1056 mov r8d,DWORD PTR[12+r8] |
| 1057 pxor xmm2,xmm0 |
| 1058 mov r11d,DWORD PTR[12+rcx] |
| 1059 movdqa XMMWORD PTR[rsp],xmm2 |
| 1060 bswap r8d |
| 1061 movdqa xmm3,xmm2 |
| 1062 movdqa xmm4,xmm2 |
| 1063 movdqa xmm5,xmm2 |
| 1064 movdqa XMMWORD PTR[64+rsp],xmm2 |
| 1065 movdqa XMMWORD PTR[80+rsp],xmm2 |
| 1066 movdqa XMMWORD PTR[96+rsp],xmm2 |
| 1067 mov r10,rdx |
| 1068 movdqa XMMWORD PTR[112+rsp],xmm2 |
| 1069 |
| 1070 lea rax,QWORD PTR[1+r8] |
| 1071 lea rdx,QWORD PTR[2+r8] |
| 1072 bswap eax |
| 1073 bswap edx |
| 1074 xor eax,r11d |
| 1075 xor edx,r11d |
| 1076 DB 102,15,58,34,216,3 |
| 1077 lea rax,QWORD PTR[3+r8] |
| 1078 movdqa XMMWORD PTR[16+rsp],xmm3 |
| 1079 DB 102,15,58,34,226,3 |
| 1080 bswap eax |
| 1081 mov rdx,r10 |
| 1082 lea r10,QWORD PTR[4+r8] |
| 1083 movdqa XMMWORD PTR[32+rsp],xmm4 |
| 1084 xor eax,r11d |
| 1085 bswap r10d |
| 1086 DB 102,15,58,34,232,3 |
| 1087 xor r10d,r11d |
| 1088 movdqa XMMWORD PTR[48+rsp],xmm5 |
| 1089 lea r9,QWORD PTR[5+r8] |
| 1090 mov DWORD PTR[((64+12))+rsp],r10d |
| 1091 bswap r9d |
| 1092 lea r10,QWORD PTR[6+r8] |
| 1093 mov eax,DWORD PTR[240+rcx] |
| 1094 xor r9d,r11d |
| 1095 bswap r10d |
| 1096 mov DWORD PTR[((80+12))+rsp],r9d |
| 1097 xor r10d,r11d |
| 1098 lea r9,QWORD PTR[7+r8] |
| 1099 mov DWORD PTR[((96+12))+rsp],r10d |
| 1100 bswap r9d |
| 1101 mov r10d,DWORD PTR[((OPENSSL_ia32cap_P+4))] |
| 1102 xor r9d,r11d |
| 1103 and r10d,71303168 |
| 1104 mov DWORD PTR[((112+12))+rsp],r9d |
| 1105 |
| 1106 movups xmm1,XMMWORD PTR[16+rcx] |
| 1107 |
| 1108 movdqa xmm6,XMMWORD PTR[64+rsp] |
| 1109 movdqa xmm7,XMMWORD PTR[80+rsp] |
| 1110 |
| 1111 cmp rdx,8 |
| 1112 jb $L$ctr32_tail |
| 1113 |
| 1114 sub rdx,6 |
| 1115 cmp r10d,4194304 |
| 1116 je $L$ctr32_6x |
| 1117 |
| 1118 lea rcx,QWORD PTR[128+rcx] |
| 1119 sub rdx,2 |
| 1120 jmp $L$ctr32_loop8 |
| 1121 |
| 1122 ALIGN 16 |
| 1123 $L$ctr32_6x:: |
| 1124 shl eax,4 |
| 1125 mov r10d,48 |
| 1126 bswap r11d |
| 1127 lea rcx,QWORD PTR[32+rax*1+rcx] |
| 1128 sub r10,rax |
| 1129 jmp $L$ctr32_loop6 |
| 1130 |
| 1131 ALIGN 16 |
| 1132 $L$ctr32_loop6:: |
| 1133 add r8d,6 |
| 1134 movups xmm0,XMMWORD PTR[((-48))+r10*1+rcx] |
| 1135 DB 102,15,56,220,209 |
| 1136 mov eax,r8d |
| 1137 xor eax,r11d |
| 1138 DB 102,15,56,220,217 |
| 1139 DB 00fh,038h,0f1h,044h,024h,12 |
| 1140 lea eax,DWORD PTR[1+r8] |
| 1141 DB 102,15,56,220,225 |
| 1142 xor eax,r11d |
| 1143 DB 00fh,038h,0f1h,044h,024h,28 |
| 1144 DB 102,15,56,220,233 |
| 1145 lea eax,DWORD PTR[2+r8] |
| 1146 xor eax,r11d |
| 1147 DB 102,15,56,220,241 |
| 1148 DB 00fh,038h,0f1h,044h,024h,44 |
| 1149 lea eax,DWORD PTR[3+r8] |
| 1150 DB 102,15,56,220,249 |
| 1151 movups xmm1,XMMWORD PTR[((-32))+r10*1+rcx] |
| 1152 xor eax,r11d |
| 1153 |
| 1154 DB 102,15,56,220,208 |
| 1155 DB 00fh,038h,0f1h,044h,024h,60 |
| 1156 lea eax,DWORD PTR[4+r8] |
| 1157 DB 102,15,56,220,216 |
| 1158 xor eax,r11d |
| 1159 DB 00fh,038h,0f1h,044h,024h,76 |
| 1160 DB 102,15,56,220,224 |
| 1161 lea eax,DWORD PTR[5+r8] |
| 1162 xor eax,r11d |
| 1163 DB 102,15,56,220,232 |
| 1164 DB 00fh,038h,0f1h,044h,024h,92 |
| 1165 mov rax,r10 |
| 1166 DB 102,15,56,220,240 |
| 1167 DB 102,15,56,220,248 |
| 1168 movups xmm0,XMMWORD PTR[((-16))+r10*1+rcx] |
| 1169 |
| 1170 call $L$enc_loop6 |
| 1171 |
| 1172 movdqu xmm8,XMMWORD PTR[rdi] |
| 1173 movdqu xmm9,XMMWORD PTR[16+rdi] |
| 1174 movdqu xmm10,XMMWORD PTR[32+rdi] |
| 1175 movdqu xmm11,XMMWORD PTR[48+rdi] |
| 1176 movdqu xmm12,XMMWORD PTR[64+rdi] |
| 1177 movdqu xmm13,XMMWORD PTR[80+rdi] |
| 1178 lea rdi,QWORD PTR[96+rdi] |
| 1179 movups xmm1,XMMWORD PTR[((-64))+r10*1+rcx] |
| 1180 pxor xmm8,xmm2 |
| 1181 movaps xmm2,XMMWORD PTR[rsp] |
| 1182 pxor xmm9,xmm3 |
| 1183 movaps xmm3,XMMWORD PTR[16+rsp] |
| 1184 pxor xmm10,xmm4 |
| 1185 movaps xmm4,XMMWORD PTR[32+rsp] |
| 1186 pxor xmm11,xmm5 |
| 1187 movaps xmm5,XMMWORD PTR[48+rsp] |
| 1188 pxor xmm12,xmm6 |
| 1189 movaps xmm6,XMMWORD PTR[64+rsp] |
| 1190 pxor xmm13,xmm7 |
| 1191 movaps xmm7,XMMWORD PTR[80+rsp] |
| 1192 movdqu XMMWORD PTR[rsi],xmm8 |
| 1193 movdqu XMMWORD PTR[16+rsi],xmm9 |
| 1194 movdqu XMMWORD PTR[32+rsi],xmm10 |
| 1195 movdqu XMMWORD PTR[48+rsi],xmm11 |
| 1196 movdqu XMMWORD PTR[64+rsi],xmm12 |
| 1197 movdqu XMMWORD PTR[80+rsi],xmm13 |
| 1198 lea rsi,QWORD PTR[96+rsi] |
| 1199 |
| 1200 sub rdx,6 |
| 1201 jnc $L$ctr32_loop6 |
| 1202 |
| 1203 add rdx,6 |
| 1204 jz $L$ctr32_done |
| 1205 |
| 1206 lea eax,DWORD PTR[((-48))+r10] |
| 1207 lea rcx,QWORD PTR[((-80))+r10*1+rcx] |
| 1208 neg eax |
| 1209 shr eax,4 |
| 1210 jmp $L$ctr32_tail |
| 1211 |
| 1212 ALIGN 32 |
| 1213 $L$ctr32_loop8:: |
| 1214 add r8d,8 |
| 1215 movdqa xmm8,XMMWORD PTR[96+rsp] |
| 1216 DB 102,15,56,220,209 |
| 1217 mov r9d,r8d |
| 1218 movdqa xmm9,XMMWORD PTR[112+rsp] |
| 1219 DB 102,15,56,220,217 |
| 1220 bswap r9d |
| 1221 movups xmm0,XMMWORD PTR[((32-128))+rcx] |
| 1222 DB 102,15,56,220,225 |
| 1223 xor r9d,r11d |
| 1224 nop |
| 1225 DB 102,15,56,220,233 |
| 1226 mov DWORD PTR[((0+12))+rsp],r9d |
| 1227 lea r9,QWORD PTR[1+r8] |
| 1228 DB 102,15,56,220,241 |
| 1229 DB 102,15,56,220,249 |
| 1230 DB 102,68,15,56,220,193 |
| 1231 DB 102,68,15,56,220,201 |
| 1232 movups xmm1,XMMWORD PTR[((48-128))+rcx] |
| 1233 bswap r9d |
| 1234 DB 102,15,56,220,208 |
| 1235 DB 102,15,56,220,216 |
| 1236 xor r9d,r11d |
| 1237 DB 066h,090h |
| 1238 DB 102,15,56,220,224 |
| 1239 DB 102,15,56,220,232 |
| 1240 mov DWORD PTR[((16+12))+rsp],r9d |
| 1241 lea r9,QWORD PTR[2+r8] |
| 1242 DB 102,15,56,220,240 |
| 1243 DB 102,15,56,220,248 |
| 1244 DB 102,68,15,56,220,192 |
| 1245 DB 102,68,15,56,220,200 |
| 1246 movups xmm0,XMMWORD PTR[((64-128))+rcx] |
| 1247 bswap r9d |
| 1248 DB 102,15,56,220,209 |
| 1249 DB 102,15,56,220,217 |
| 1250 xor r9d,r11d |
| 1251 DB 066h,090h |
| 1252 DB 102,15,56,220,225 |
| 1253 DB 102,15,56,220,233 |
| 1254 mov DWORD PTR[((32+12))+rsp],r9d |
| 1255 lea r9,QWORD PTR[3+r8] |
| 1256 DB 102,15,56,220,241 |
| 1257 DB 102,15,56,220,249 |
| 1258 DB 102,68,15,56,220,193 |
| 1259 DB 102,68,15,56,220,201 |
| 1260 movups xmm1,XMMWORD PTR[((80-128))+rcx] |
| 1261 bswap r9d |
| 1262 DB 102,15,56,220,208 |
| 1263 DB 102,15,56,220,216 |
| 1264 xor r9d,r11d |
| 1265 DB 066h,090h |
| 1266 DB 102,15,56,220,224 |
| 1267 DB 102,15,56,220,232 |
| 1268 mov DWORD PTR[((48+12))+rsp],r9d |
| 1269 lea r9,QWORD PTR[4+r8] |
| 1270 DB 102,15,56,220,240 |
| 1271 DB 102,15,56,220,248 |
| 1272 DB 102,68,15,56,220,192 |
| 1273 DB 102,68,15,56,220,200 |
| 1274 movups xmm0,XMMWORD PTR[((96-128))+rcx] |
| 1275 bswap r9d |
| 1276 DB 102,15,56,220,209 |
| 1277 DB 102,15,56,220,217 |
| 1278 xor r9d,r11d |
| 1279 DB 066h,090h |
| 1280 DB 102,15,56,220,225 |
| 1281 DB 102,15,56,220,233 |
| 1282 mov DWORD PTR[((64+12))+rsp],r9d |
| 1283 lea r9,QWORD PTR[5+r8] |
| 1284 DB 102,15,56,220,241 |
| 1285 DB 102,15,56,220,249 |
| 1286 DB 102,68,15,56,220,193 |
| 1287 DB 102,68,15,56,220,201 |
| 1288 movups xmm1,XMMWORD PTR[((112-128))+rcx] |
| 1289 bswap r9d |
| 1290 DB 102,15,56,220,208 |
| 1291 DB 102,15,56,220,216 |
| 1292 xor r9d,r11d |
| 1293 DB 066h,090h |
| 1294 DB 102,15,56,220,224 |
| 1295 DB 102,15,56,220,232 |
| 1296 mov DWORD PTR[((80+12))+rsp],r9d |
| 1297 lea r9,QWORD PTR[6+r8] |
| 1298 DB 102,15,56,220,240 |
| 1299 DB 102,15,56,220,248 |
| 1300 DB 102,68,15,56,220,192 |
| 1301 DB 102,68,15,56,220,200 |
| 1302 movups xmm0,XMMWORD PTR[((128-128))+rcx] |
| 1303 bswap r9d |
| 1304 DB 102,15,56,220,209 |
| 1305 DB 102,15,56,220,217 |
| 1306 xor r9d,r11d |
| 1307 DB 066h,090h |
| 1308 DB 102,15,56,220,225 |
| 1309 DB 102,15,56,220,233 |
| 1310 mov DWORD PTR[((96+12))+rsp],r9d |
| 1311 lea r9,QWORD PTR[7+r8] |
| 1312 DB 102,15,56,220,241 |
| 1313 DB 102,15,56,220,249 |
| 1314 DB 102,68,15,56,220,193 |
| 1315 DB 102,68,15,56,220,201 |
| 1316 movups xmm1,XMMWORD PTR[((144-128))+rcx] |
| 1317 bswap r9d |
| 1318 DB 102,15,56,220,208 |
| 1319 DB 102,15,56,220,216 |
| 1320 DB 102,15,56,220,224 |
| 1321 xor r9d,r11d |
| 1322 movdqu xmm10,XMMWORD PTR[rdi] |
| 1323 DB 102,15,56,220,232 |
| 1324 mov DWORD PTR[((112+12))+rsp],r9d |
| 1325 cmp eax,11 |
| 1326 DB 102,15,56,220,240 |
| 1327 DB 102,15,56,220,248 |
| 1328 DB 102,68,15,56,220,192 |
| 1329 DB 102,68,15,56,220,200 |
| 1330 movups xmm0,XMMWORD PTR[((160-128))+rcx] |
| 1331 |
| 1332 jb $L$ctr32_enc_done |
| 1333 |
| 1334 DB 102,15,56,220,209 |
| 1335 DB 102,15,56,220,217 |
| 1336 DB 102,15,56,220,225 |
| 1337 DB 102,15,56,220,233 |
| 1338 DB 102,15,56,220,241 |
| 1339 DB 102,15,56,220,249 |
| 1340 DB 102,68,15,56,220,193 |
| 1341 DB 102,68,15,56,220,201 |
| 1342 movups xmm1,XMMWORD PTR[((176-128))+rcx] |
| 1343 |
| 1344 DB 102,15,56,220,208 |
| 1345 DB 102,15,56,220,216 |
| 1346 DB 102,15,56,220,224 |
| 1347 DB 102,15,56,220,232 |
| 1348 DB 102,15,56,220,240 |
| 1349 DB 102,15,56,220,248 |
| 1350 DB 102,68,15,56,220,192 |
| 1351 DB 102,68,15,56,220,200 |
| 1352 movups xmm0,XMMWORD PTR[((192-128))+rcx] |
| 1353 je $L$ctr32_enc_done |
| 1354 |
| 1355 DB 102,15,56,220,209 |
| 1356 DB 102,15,56,220,217 |
| 1357 DB 102,15,56,220,225 |
| 1358 DB 102,15,56,220,233 |
| 1359 DB 102,15,56,220,241 |
| 1360 DB 102,15,56,220,249 |
| 1361 DB 102,68,15,56,220,193 |
| 1362 DB 102,68,15,56,220,201 |
| 1363 movups xmm1,XMMWORD PTR[((208-128))+rcx] |
| 1364 |
| 1365 DB 102,15,56,220,208 |
| 1366 DB 102,15,56,220,216 |
| 1367 DB 102,15,56,220,224 |
| 1368 DB 102,15,56,220,232 |
| 1369 DB 102,15,56,220,240 |
| 1370 DB 102,15,56,220,248 |
| 1371 DB 102,68,15,56,220,192 |
| 1372 DB 102,68,15,56,220,200 |
| 1373 movups xmm0,XMMWORD PTR[((224-128))+rcx] |
| 1374 jmp $L$ctr32_enc_done |
| 1375 |
| 1376 ALIGN 16 |
| 1377 $L$ctr32_enc_done:: |
| 1378 movdqu xmm11,XMMWORD PTR[16+rdi] |
| 1379 pxor xmm10,xmm0 |
| 1380 movdqu xmm12,XMMWORD PTR[32+rdi] |
| 1381 pxor xmm11,xmm0 |
| 1382 movdqu xmm13,XMMWORD PTR[48+rdi] |
| 1383 pxor xmm12,xmm0 |
| 1384 movdqu xmm14,XMMWORD PTR[64+rdi] |
| 1385 pxor xmm13,xmm0 |
| 1386 movdqu xmm15,XMMWORD PTR[80+rdi] |
| 1387 pxor xmm14,xmm0 |
| 1388 pxor xmm15,xmm0 |
| 1389 DB 102,15,56,220,209 |
| 1390 DB 102,15,56,220,217 |
| 1391 DB 102,15,56,220,225 |
| 1392 DB 102,15,56,220,233 |
| 1393 DB 102,15,56,220,241 |
| 1394 DB 102,15,56,220,249 |
| 1395 DB 102,68,15,56,220,193 |
| 1396 DB 102,68,15,56,220,201 |
| 1397 movdqu xmm1,XMMWORD PTR[96+rdi] |
| 1398 lea rdi,QWORD PTR[128+rdi] |
| 1399 |
| 1400 DB 102,65,15,56,221,210 |
| 1401 pxor xmm1,xmm0 |
| 1402 movdqu xmm10,XMMWORD PTR[((112-128))+rdi] |
| 1403 DB 102,65,15,56,221,219 |
| 1404 pxor xmm10,xmm0 |
| 1405 movdqa xmm11,XMMWORD PTR[rsp] |
| 1406 DB 102,65,15,56,221,228 |
| 1407 DB 102,65,15,56,221,237 |
| 1408 movdqa xmm12,XMMWORD PTR[16+rsp] |
| 1409 movdqa xmm13,XMMWORD PTR[32+rsp] |
| 1410 DB 102,65,15,56,221,246 |
| 1411 DB 102,65,15,56,221,255 |
| 1412 movdqa xmm14,XMMWORD PTR[48+rsp] |
| 1413 movdqa xmm15,XMMWORD PTR[64+rsp] |
| 1414 DB 102,68,15,56,221,193 |
| 1415 movdqa xmm0,XMMWORD PTR[80+rsp] |
| 1416 movups xmm1,XMMWORD PTR[((16-128))+rcx] |
| 1417 DB 102,69,15,56,221,202 |
| 1418 |
| 1419 movups XMMWORD PTR[rsi],xmm2 |
| 1420 movdqa xmm2,xmm11 |
| 1421 movups XMMWORD PTR[16+rsi],xmm3 |
| 1422 movdqa xmm3,xmm12 |
| 1423 movups XMMWORD PTR[32+rsi],xmm4 |
| 1424 movdqa xmm4,xmm13 |
| 1425 movups XMMWORD PTR[48+rsi],xmm5 |
| 1426 movdqa xmm5,xmm14 |
| 1427 movups XMMWORD PTR[64+rsi],xmm6 |
| 1428 movdqa xmm6,xmm15 |
| 1429 movups XMMWORD PTR[80+rsi],xmm7 |
| 1430 movdqa xmm7,xmm0 |
| 1431 movups XMMWORD PTR[96+rsi],xmm8 |
| 1432 movups XMMWORD PTR[112+rsi],xmm9 |
| 1433 lea rsi,QWORD PTR[128+rsi] |
| 1434 |
| 1435 sub rdx,8 |
| 1436 jnc $L$ctr32_loop8 |
| 1437 |
| 1438 add rdx,8 |
| 1439 jz $L$ctr32_done |
| 1440 lea rcx,QWORD PTR[((-128))+rcx] |
| 1441 |
| 1442 $L$ctr32_tail:: |
| 1443 lea rcx,QWORD PTR[16+rcx] |
| 1444 cmp rdx,4 |
| 1445 jb $L$ctr32_loop3 |
| 1446 je $L$ctr32_loop4 |
| 1447 |
| 1448 shl eax,4 |
| 1449 movdqa xmm8,XMMWORD PTR[96+rsp] |
| 1450 pxor xmm9,xmm9 |
| 1451 |
| 1452 movups xmm0,XMMWORD PTR[16+rcx] |
| 1453 DB 102,15,56,220,209 |
| 1454 DB 102,15,56,220,217 |
| 1455 lea rcx,QWORD PTR[((32-16))+rax*1+rcx] |
| 1456 neg rax |
| 1457 DB 102,15,56,220,225 |
| 1458 add rax,16 |
| 1459 movups xmm10,XMMWORD PTR[rdi] |
| 1460 DB 102,15,56,220,233 |
| 1461 DB 102,15,56,220,241 |
| 1462 movups xmm11,XMMWORD PTR[16+rdi] |
| 1463 movups xmm12,XMMWORD PTR[32+rdi] |
| 1464 DB 102,15,56,220,249 |
| 1465 DB 102,68,15,56,220,193 |
| 1466 |
| 1467 call $L$enc_loop8_enter |
| 1468 |
| 1469 movdqu xmm13,XMMWORD PTR[48+rdi] |
| 1470 pxor xmm2,xmm10 |
| 1471 movdqu xmm10,XMMWORD PTR[64+rdi] |
| 1472 pxor xmm3,xmm11 |
| 1473 movdqu XMMWORD PTR[rsi],xmm2 |
| 1474 pxor xmm4,xmm12 |
| 1475 movdqu XMMWORD PTR[16+rsi],xmm3 |
| 1476 pxor xmm5,xmm13 |
| 1477 movdqu XMMWORD PTR[32+rsi],xmm4 |
| 1478 pxor xmm6,xmm10 |
| 1479 movdqu XMMWORD PTR[48+rsi],xmm5 |
| 1480 movdqu XMMWORD PTR[64+rsi],xmm6 |
| 1481 cmp rdx,6 |
| 1482 jb $L$ctr32_done |
| 1483 |
| 1484 movups xmm11,XMMWORD PTR[80+rdi] |
| 1485 xorps xmm7,xmm11 |
| 1486 movups XMMWORD PTR[80+rsi],xmm7 |
| 1487 je $L$ctr32_done |
| 1488 |
| 1489 movups xmm12,XMMWORD PTR[96+rdi] |
| 1490 xorps xmm8,xmm12 |
| 1491 movups XMMWORD PTR[96+rsi],xmm8 |
| 1492 jmp $L$ctr32_done |
| 1493 |
| 1494 ALIGN 32 |
| 1495 $L$ctr32_loop4:: |
| 1496 DB 102,15,56,220,209 |
| 1497 lea rcx,QWORD PTR[16+rcx] |
| 1498 dec eax |
| 1499 DB 102,15,56,220,217 |
| 1500 DB 102,15,56,220,225 |
| 1501 DB 102,15,56,220,233 |
| 1502 movups xmm1,XMMWORD PTR[rcx] |
| 1503 jnz $L$ctr32_loop4 |
| 1504 DB 102,15,56,221,209 |
| 1505 DB 102,15,56,221,217 |
| 1506 movups xmm10,XMMWORD PTR[rdi] |
| 1507 movups xmm11,XMMWORD PTR[16+rdi] |
| 1508 DB 102,15,56,221,225 |
| 1509 DB 102,15,56,221,233 |
| 1510 movups xmm12,XMMWORD PTR[32+rdi] |
| 1511 movups xmm13,XMMWORD PTR[48+rdi] |
| 1512 |
| 1513 xorps xmm2,xmm10 |
| 1514 movups XMMWORD PTR[rsi],xmm2 |
| 1515 xorps xmm3,xmm11 |
| 1516 movups XMMWORD PTR[16+rsi],xmm3 |
| 1517 pxor xmm4,xmm12 |
| 1518 movdqu XMMWORD PTR[32+rsi],xmm4 |
| 1519 pxor xmm5,xmm13 |
| 1520 movdqu XMMWORD PTR[48+rsi],xmm5 |
| 1521 jmp $L$ctr32_done |
| 1522 |
| 1523 ALIGN 32 |
| 1524 $L$ctr32_loop3:: |
| 1525 DB 102,15,56,220,209 |
| 1526 lea rcx,QWORD PTR[16+rcx] |
| 1527 dec eax |
| 1528 DB 102,15,56,220,217 |
| 1529 DB 102,15,56,220,225 |
| 1530 movups xmm1,XMMWORD PTR[rcx] |
| 1531 jnz $L$ctr32_loop3 |
| 1532 DB 102,15,56,221,209 |
| 1533 DB 102,15,56,221,217 |
| 1534 DB 102,15,56,221,225 |
| 1535 |
| 1536 movups xmm10,XMMWORD PTR[rdi] |
| 1537 xorps xmm2,xmm10 |
| 1538 movups XMMWORD PTR[rsi],xmm2 |
| 1539 cmp rdx,2 |
| 1540 jb $L$ctr32_done |
| 1541 |
| 1542 movups xmm11,XMMWORD PTR[16+rdi] |
| 1543 xorps xmm3,xmm11 |
| 1544 movups XMMWORD PTR[16+rsi],xmm3 |
| 1545 je $L$ctr32_done |
| 1546 |
| 1547 movups xmm12,XMMWORD PTR[32+rdi] |
| 1548 xorps xmm4,xmm12 |
| 1549 movups XMMWORD PTR[32+rsi],xmm4 |
| 1550 jmp $L$ctr32_done |
| 1551 |
| 1552 ALIGN 16 |
| 1553 $L$ctr32_one_shortcut:: |
| 1554 movups xmm2,XMMWORD PTR[r8] |
| 1555 movups xmm10,XMMWORD PTR[rdi] |
| 1556 mov eax,DWORD PTR[240+rcx] |
| 1557 movups xmm0,XMMWORD PTR[rcx] |
| 1558 movups xmm1,XMMWORD PTR[16+rcx] |
| 1559 lea rcx,QWORD PTR[32+rcx] |
| 1560 xorps xmm2,xmm0 |
| 1561 $L$oop_enc1_7:: |
| 1562 DB 102,15,56,220,209 |
| 1563 dec eax |
| 1564 movups xmm1,XMMWORD PTR[rcx] |
| 1565 lea rcx,QWORD PTR[16+rcx] |
| 1566 jnz $L$oop_enc1_7 |
| 1567 DB 102,15,56,221,209 |
| 1568 xorps xmm2,xmm10 |
| 1569 movups XMMWORD PTR[rsi],xmm2 |
| 1570 jmp $L$ctr32_done |
| 1571 |
| 1572 ALIGN 16 |
| 1573 $L$ctr32_done:: |
| 1574 movaps xmm6,XMMWORD PTR[((-160))+rbp] |
| 1575 movaps xmm7,XMMWORD PTR[((-144))+rbp] |
| 1576 movaps xmm8,XMMWORD PTR[((-128))+rbp] |
| 1577 movaps xmm9,XMMWORD PTR[((-112))+rbp] |
| 1578 movaps xmm10,XMMWORD PTR[((-96))+rbp] |
| 1579 movaps xmm11,XMMWORD PTR[((-80))+rbp] |
| 1580 movaps xmm12,XMMWORD PTR[((-64))+rbp] |
| 1581 movaps xmm13,XMMWORD PTR[((-48))+rbp] |
| 1582 movaps xmm14,XMMWORD PTR[((-32))+rbp] |
| 1583 movaps xmm15,XMMWORD PTR[((-16))+rbp] |
| 1584 lea rsp,QWORD PTR[rbp] |
| 1585 pop rbp |
| 1586 $L$ctr32_epilogue:: |
| 1587 mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue |
| 1588 mov rsi,QWORD PTR[16+rsp] |
| 1589 DB 0F3h,0C3h ;repret |
| 1590 $L$SEH_end_aesni_ctr32_encrypt_blocks:: |
| 1591 aesni_ctr32_encrypt_blocks ENDP |
| 1592 PUBLIC aesni_xts_encrypt |
| 1593 |
| 1594 ALIGN 16 |
| 1595 aesni_xts_encrypt PROC PUBLIC |
| 1596 mov QWORD PTR[8+rsp],rdi ;WIN64 prologue |
| 1597 mov QWORD PTR[16+rsp],rsi |
| 1598 mov rax,rsp |
| 1599 $L$SEH_begin_aesni_xts_encrypt:: |
| 1600 mov rdi,rcx |
| 1601 mov rsi,rdx |
| 1602 mov rdx,r8 |
| 1603 mov rcx,r9 |
| 1604 mov r8,QWORD PTR[40+rsp] |
| 1605 mov r9,QWORD PTR[48+rsp] |
| 1606 |
| 1607 |
| 1608 lea rax,QWORD PTR[rsp] |
| 1609 push rbp |
| 1610 sub rsp,272 |
| 1611 and rsp,-16 |
| 1612 movaps XMMWORD PTR[(-168)+rax],xmm6 |
| 1613 movaps XMMWORD PTR[(-152)+rax],xmm7 |
| 1614 movaps XMMWORD PTR[(-136)+rax],xmm8 |
| 1615 movaps XMMWORD PTR[(-120)+rax],xmm9 |
| 1616 movaps XMMWORD PTR[(-104)+rax],xmm10 |
| 1617 movaps XMMWORD PTR[(-88)+rax],xmm11 |
| 1618 movaps XMMWORD PTR[(-72)+rax],xmm12 |
| 1619 movaps XMMWORD PTR[(-56)+rax],xmm13 |
| 1620 movaps XMMWORD PTR[(-40)+rax],xmm14 |
| 1621 movaps XMMWORD PTR[(-24)+rax],xmm15 |
| 1622 $L$xts_enc_body:: |
| 1623 lea rbp,QWORD PTR[((-8))+rax] |
| 1624 movups xmm2,XMMWORD PTR[r9] |
| 1625 mov eax,DWORD PTR[240+r8] |
| 1626 mov r10d,DWORD PTR[240+rcx] |
| 1627 movups xmm0,XMMWORD PTR[r8] |
| 1628 movups xmm1,XMMWORD PTR[16+r8] |
| 1629 lea r8,QWORD PTR[32+r8] |
| 1630 xorps xmm2,xmm0 |
| 1631 $L$oop_enc1_8:: |
| 1632 DB 102,15,56,220,209 |
| 1633 dec eax |
| 1634 movups xmm1,XMMWORD PTR[r8] |
| 1635 lea r8,QWORD PTR[16+r8] |
| 1636 jnz $L$oop_enc1_8 |
| 1637 DB 102,15,56,221,209 |
| 1638 movups xmm0,XMMWORD PTR[rcx] |
| 1639 mov r11,rcx |
| 1640 mov eax,r10d |
| 1641 shl r10d,4 |
| 1642 mov r9,rdx |
| 1643 and rdx,-16 |
| 1644 |
| 1645 movups xmm1,XMMWORD PTR[16+r10*1+rcx] |
| 1646 |
| 1647 movdqa xmm8,XMMWORD PTR[$L$xts_magic] |
| 1648 movdqa xmm15,xmm2 |
| 1649 pshufd xmm9,xmm2,05fh |
| 1650 pxor xmm1,xmm0 |
| 1651 movdqa xmm14,xmm9 |
| 1652 paddd xmm9,xmm9 |
| 1653 movdqa xmm10,xmm15 |
| 1654 psrad xmm14,31 |
| 1655 paddq xmm15,xmm15 |
| 1656 pand xmm14,xmm8 |
| 1657 pxor xmm10,xmm0 |
| 1658 pxor xmm15,xmm14 |
| 1659 movdqa xmm14,xmm9 |
| 1660 paddd xmm9,xmm9 |
| 1661 movdqa xmm11,xmm15 |
| 1662 psrad xmm14,31 |
| 1663 paddq xmm15,xmm15 |
| 1664 pand xmm14,xmm8 |
| 1665 pxor xmm11,xmm0 |
| 1666 pxor xmm15,xmm14 |
| 1667 movdqa xmm14,xmm9 |
| 1668 paddd xmm9,xmm9 |
| 1669 movdqa xmm12,xmm15 |
| 1670 psrad xmm14,31 |
| 1671 paddq xmm15,xmm15 |
| 1672 pand xmm14,xmm8 |
| 1673 pxor xmm12,xmm0 |
| 1674 pxor xmm15,xmm14 |
| 1675 movdqa xmm14,xmm9 |
| 1676 paddd xmm9,xmm9 |
| 1677 movdqa xmm13,xmm15 |
| 1678 psrad xmm14,31 |
| 1679 paddq xmm15,xmm15 |
| 1680 pand xmm14,xmm8 |
| 1681 pxor xmm13,xmm0 |
| 1682 pxor xmm15,xmm14 |
| 1683 movdqa xmm14,xmm15 |
| 1684 psrad xmm9,31 |
| 1685 paddq xmm15,xmm15 |
| 1686 pand xmm9,xmm8 |
| 1687 pxor xmm14,xmm0 |
| 1688 pxor xmm15,xmm9 |
| 1689 movaps XMMWORD PTR[96+rsp],xmm1 |
| 1690 |
| 1691 sub rdx,16*6 |
| 1692 jc $L$xts_enc_short |
| 1693 |
| 1694 mov eax,16+96 |
| 1695 lea rcx,QWORD PTR[32+r10*1+r11] |
| 1696 sub rax,r10 |
| 1697 movups xmm1,XMMWORD PTR[16+r11] |
| 1698 mov r10,rax |
| 1699 lea r8,QWORD PTR[$L$xts_magic] |
| 1700 jmp $L$xts_enc_grandloop |
| 1701 |
| 1702 ALIGN 32 |
| 1703 $L$xts_enc_grandloop:: |
| 1704 movdqu xmm2,XMMWORD PTR[rdi] |
| 1705 movdqa xmm8,xmm0 |
| 1706 movdqu xmm3,XMMWORD PTR[16+rdi] |
| 1707 pxor xmm2,xmm10 |
| 1708 movdqu xmm4,XMMWORD PTR[32+rdi] |
| 1709 pxor xmm3,xmm11 |
| 1710 DB 102,15,56,220,209 |
| 1711 movdqu xmm5,XMMWORD PTR[48+rdi] |
| 1712 pxor xmm4,xmm12 |
| 1713 DB 102,15,56,220,217 |
| 1714 movdqu xmm6,XMMWORD PTR[64+rdi] |
| 1715 pxor xmm5,xmm13 |
| 1716 DB 102,15,56,220,225 |
| 1717 movdqu xmm7,XMMWORD PTR[80+rdi] |
| 1718 pxor xmm8,xmm15 |
| 1719 movdqa xmm9,XMMWORD PTR[96+rsp] |
| 1720 pxor xmm6,xmm14 |
| 1721 DB 102,15,56,220,233 |
| 1722 movups xmm0,XMMWORD PTR[32+r11] |
| 1723 lea rdi,QWORD PTR[96+rdi] |
| 1724 pxor xmm7,xmm8 |
| 1725 |
| 1726 pxor xmm10,xmm9 |
| 1727 DB 102,15,56,220,241 |
| 1728 pxor xmm11,xmm9 |
| 1729 movdqa XMMWORD PTR[rsp],xmm10 |
| 1730 DB 102,15,56,220,249 |
| 1731 movups xmm1,XMMWORD PTR[48+r11] |
| 1732 pxor xmm12,xmm9 |
| 1733 |
| 1734 DB 102,15,56,220,208 |
| 1735 pxor xmm13,xmm9 |
| 1736 movdqa XMMWORD PTR[16+rsp],xmm11 |
| 1737 DB 102,15,56,220,216 |
| 1738 pxor xmm14,xmm9 |
| 1739 movdqa XMMWORD PTR[32+rsp],xmm12 |
| 1740 DB 102,15,56,220,224 |
| 1741 DB 102,15,56,220,232 |
| 1742 pxor xmm8,xmm9 |
| 1743 movdqa XMMWORD PTR[64+rsp],xmm14 |
| 1744 DB 102,15,56,220,240 |
| 1745 DB 102,15,56,220,248 |
| 1746 movups xmm0,XMMWORD PTR[64+r11] |
| 1747 movdqa XMMWORD PTR[80+rsp],xmm8 |
| 1748 pshufd xmm9,xmm15,05fh |
| 1749 jmp $L$xts_enc_loop6 |
| 1750 ALIGN 32 |
| 1751 $L$xts_enc_loop6:: |
| 1752 DB 102,15,56,220,209 |
| 1753 DB 102,15,56,220,217 |
| 1754 DB 102,15,56,220,225 |
| 1755 DB 102,15,56,220,233 |
| 1756 DB 102,15,56,220,241 |
| 1757 DB 102,15,56,220,249 |
| 1758 movups xmm1,XMMWORD PTR[((-64))+rax*1+rcx] |
| 1759 add rax,32 |
| 1760 |
| 1761 DB 102,15,56,220,208 |
| 1762 DB 102,15,56,220,216 |
| 1763 DB 102,15,56,220,224 |
| 1764 DB 102,15,56,220,232 |
| 1765 DB 102,15,56,220,240 |
| 1766 DB 102,15,56,220,248 |
| 1767 movups xmm0,XMMWORD PTR[((-80))+rax*1+rcx] |
| 1768 jnz $L$xts_enc_loop6 |
| 1769 |
| 1770 movdqa xmm8,XMMWORD PTR[r8] |
| 1771 movdqa xmm14,xmm9 |
| 1772 paddd xmm9,xmm9 |
| 1773 DB 102,15,56,220,209 |
| 1774 paddq xmm15,xmm15 |
| 1775 psrad xmm14,31 |
| 1776 DB 102,15,56,220,217 |
| 1777 pand xmm14,xmm8 |
| 1778 movups xmm10,XMMWORD PTR[r11] |
| 1779 DB 102,15,56,220,225 |
| 1780 DB 102,15,56,220,233 |
| 1781 DB 102,15,56,220,241 |
| 1782 pxor xmm15,xmm14 |
| 1783 movaps xmm11,xmm10 |
| 1784 DB 102,15,56,220,249 |
| 1785 movups xmm1,XMMWORD PTR[((-64))+rcx] |
| 1786 |
| 1787 movdqa xmm14,xmm9 |
| 1788 DB 102,15,56,220,208 |
| 1789 paddd xmm9,xmm9 |
| 1790 pxor xmm10,xmm15 |
| 1791 DB 102,15,56,220,216 |
| 1792 psrad xmm14,31 |
| 1793 paddq xmm15,xmm15 |
| 1794 DB 102,15,56,220,224 |
| 1795 DB 102,15,56,220,232 |
| 1796 pand xmm14,xmm8 |
| 1797 movaps xmm12,xmm11 |
| 1798 DB 102,15,56,220,240 |
| 1799 pxor xmm15,xmm14 |
| 1800 movdqa xmm14,xmm9 |
| 1801 DB 102,15,56,220,248 |
| 1802 movups xmm0,XMMWORD PTR[((-48))+rcx] |
| 1803 |
| 1804 paddd xmm9,xmm9 |
| 1805 DB 102,15,56,220,209 |
| 1806 pxor xmm11,xmm15 |
| 1807 psrad xmm14,31 |
| 1808 DB 102,15,56,220,217 |
| 1809 paddq xmm15,xmm15 |
| 1810 pand xmm14,xmm8 |
| 1811 DB 102,15,56,220,225 |
| 1812 DB 102,15,56,220,233 |
| 1813 movdqa XMMWORD PTR[48+rsp],xmm13 |
| 1814 pxor xmm15,xmm14 |
| 1815 DB 102,15,56,220,241 |
| 1816 movaps xmm13,xmm12 |
| 1817 movdqa xmm14,xmm9 |
| 1818 DB 102,15,56,220,249 |
| 1819 movups xmm1,XMMWORD PTR[((-32))+rcx] |
| 1820 |
| 1821 paddd xmm9,xmm9 |
| 1822 DB 102,15,56,220,208 |
| 1823 pxor xmm12,xmm15 |
| 1824 psrad xmm14,31 |
| 1825 DB 102,15,56,220,216 |
| 1826 paddq xmm15,xmm15 |
| 1827 pand xmm14,xmm8 |
| 1828 DB 102,15,56,220,224 |
| 1829 DB 102,15,56,220,232 |
| 1830 DB 102,15,56,220,240 |
| 1831 pxor xmm15,xmm14 |
| 1832 movaps xmm14,xmm13 |
| 1833 DB 102,15,56,220,248 |
| 1834 |
| 1835 movdqa xmm0,xmm9 |
| 1836 paddd xmm9,xmm9 |
| 1837 DB 102,15,56,220,209 |
| 1838 pxor xmm13,xmm15 |
| 1839 psrad xmm0,31 |
| 1840 DB 102,15,56,220,217 |
| 1841 paddq xmm15,xmm15 |
| 1842 pand xmm0,xmm8 |
| 1843 DB 102,15,56,220,225 |
| 1844 DB 102,15,56,220,233 |
| 1845 pxor xmm15,xmm0 |
| 1846 movups xmm0,XMMWORD PTR[r11] |
| 1847 DB 102,15,56,220,241 |
| 1848 DB 102,15,56,220,249 |
| 1849 movups xmm1,XMMWORD PTR[16+r11] |
| 1850 |
| 1851 pxor xmm14,xmm15 |
| 1852 DB 102,15,56,221,84,36,0 |
| 1853 psrad xmm9,31 |
| 1854 paddq xmm15,xmm15 |
| 1855 DB 102,15,56,221,92,36,16 |
| 1856 DB 102,15,56,221,100,36,32 |
| 1857 pand xmm9,xmm8 |
| 1858 mov rax,r10 |
| 1859 DB 102,15,56,221,108,36,48 |
| 1860 DB 102,15,56,221,116,36,64 |
| 1861 DB 102,15,56,221,124,36,80 |
| 1862 pxor xmm15,xmm9 |
| 1863 |
| 1864 lea rsi,QWORD PTR[96+rsi] |
| 1865 movups XMMWORD PTR[(-96)+rsi],xmm2 |
| 1866 movups XMMWORD PTR[(-80)+rsi],xmm3 |
| 1867 movups XMMWORD PTR[(-64)+rsi],xmm4 |
| 1868 movups XMMWORD PTR[(-48)+rsi],xmm5 |
| 1869 movups XMMWORD PTR[(-32)+rsi],xmm6 |
| 1870 movups XMMWORD PTR[(-16)+rsi],xmm7 |
| 1871 sub rdx,16*6 |
| 1872 jnc $L$xts_enc_grandloop |
| 1873 |
| 1874 mov eax,16+96 |
| 1875 sub eax,r10d |
| 1876 mov rcx,r11 |
| 1877 shr eax,4 |
| 1878 |
| 1879 $L$xts_enc_short:: |
| 1880 mov r10d,eax |
| 1881 pxor xmm10,xmm0 |
| 1882 add rdx,16*6 |
| 1883 jz $L$xts_enc_done |
| 1884 |
| 1885 pxor xmm11,xmm0 |
| 1886 cmp rdx,020h |
| 1887 jb $L$xts_enc_one |
| 1888 pxor xmm12,xmm0 |
| 1889 je $L$xts_enc_two |
| 1890 |
| 1891 pxor xmm13,xmm0 |
| 1892 cmp rdx,040h |
| 1893 jb $L$xts_enc_three |
| 1894 pxor xmm14,xmm0 |
| 1895 je $L$xts_enc_four |
| 1896 |
| 1897 movdqu xmm2,XMMWORD PTR[rdi] |
| 1898 movdqu xmm3,XMMWORD PTR[16+rdi] |
| 1899 movdqu xmm4,XMMWORD PTR[32+rdi] |
| 1900 pxor xmm2,xmm10 |
| 1901 movdqu xmm5,XMMWORD PTR[48+rdi] |
| 1902 pxor xmm3,xmm11 |
| 1903 movdqu xmm6,XMMWORD PTR[64+rdi] |
| 1904 lea rdi,QWORD PTR[80+rdi] |
| 1905 pxor xmm4,xmm12 |
| 1906 pxor xmm5,xmm13 |
| 1907 pxor xmm6,xmm14 |
| 1908 |
| 1909 call _aesni_encrypt6 |
| 1910 |
| 1911 xorps xmm2,xmm10 |
| 1912 movdqa xmm10,xmm15 |
| 1913 xorps xmm3,xmm11 |
| 1914 xorps xmm4,xmm12 |
| 1915 movdqu XMMWORD PTR[rsi],xmm2 |
| 1916 xorps xmm5,xmm13 |
| 1917 movdqu XMMWORD PTR[16+rsi],xmm3 |
| 1918 xorps xmm6,xmm14 |
| 1919 movdqu XMMWORD PTR[32+rsi],xmm4 |
| 1920 movdqu XMMWORD PTR[48+rsi],xmm5 |
| 1921 movdqu XMMWORD PTR[64+rsi],xmm6 |
| 1922 lea rsi,QWORD PTR[80+rsi] |
| 1923 jmp $L$xts_enc_done |
| 1924 |
| 1925 ALIGN 16 |
| 1926 $L$xts_enc_one:: |
| 1927 movups xmm2,XMMWORD PTR[rdi] |
| 1928 lea rdi,QWORD PTR[16+rdi] |
| 1929 xorps xmm2,xmm10 |
| 1930 movups xmm0,XMMWORD PTR[rcx] |
| 1931 movups xmm1,XMMWORD PTR[16+rcx] |
| 1932 lea rcx,QWORD PTR[32+rcx] |
| 1933 xorps xmm2,xmm0 |
| 1934 $L$oop_enc1_9:: |
| 1935 DB 102,15,56,220,209 |
| 1936 dec eax |
| 1937 movups xmm1,XMMWORD PTR[rcx] |
| 1938 lea rcx,QWORD PTR[16+rcx] |
| 1939 jnz $L$oop_enc1_9 |
| 1940 DB 102,15,56,221,209 |
| 1941 xorps xmm2,xmm10 |
| 1942 movdqa xmm10,xmm11 |
| 1943 movups XMMWORD PTR[rsi],xmm2 |
| 1944 lea rsi,QWORD PTR[16+rsi] |
| 1945 jmp $L$xts_enc_done |
| 1946 |
| 1947 ALIGN 16 |
| 1948 $L$xts_enc_two:: |
| 1949 movups xmm2,XMMWORD PTR[rdi] |
| 1950 movups xmm3,XMMWORD PTR[16+rdi] |
| 1951 lea rdi,QWORD PTR[32+rdi] |
| 1952 xorps xmm2,xmm10 |
| 1953 xorps xmm3,xmm11 |
| 1954 |
| 1955 call _aesni_encrypt2 |
| 1956 |
| 1957 xorps xmm2,xmm10 |
| 1958 movdqa xmm10,xmm12 |
| 1959 xorps xmm3,xmm11 |
| 1960 movups XMMWORD PTR[rsi],xmm2 |
| 1961 movups XMMWORD PTR[16+rsi],xmm3 |
| 1962 lea rsi,QWORD PTR[32+rsi] |
| 1963 jmp $L$xts_enc_done |
| 1964 |
| 1965 ALIGN 16 |
| 1966 $L$xts_enc_three:: |
| 1967 movups xmm2,XMMWORD PTR[rdi] |
| 1968 movups xmm3,XMMWORD PTR[16+rdi] |
| 1969 movups xmm4,XMMWORD PTR[32+rdi] |
| 1970 lea rdi,QWORD PTR[48+rdi] |
| 1971 xorps xmm2,xmm10 |
| 1972 xorps xmm3,xmm11 |
| 1973 xorps xmm4,xmm12 |
| 1974 |
| 1975 call _aesni_encrypt3 |
| 1976 |
| 1977 xorps xmm2,xmm10 |
| 1978 movdqa xmm10,xmm13 |
| 1979 xorps xmm3,xmm11 |
| 1980 xorps xmm4,xmm12 |
| 1981 movups XMMWORD PTR[rsi],xmm2 |
| 1982 movups XMMWORD PTR[16+rsi],xmm3 |
| 1983 movups XMMWORD PTR[32+rsi],xmm4 |
| 1984 lea rsi,QWORD PTR[48+rsi] |
| 1985 jmp $L$xts_enc_done |
| 1986 |
| 1987 ALIGN 16 |
| 1988 $L$xts_enc_four:: |
| 1989 movups xmm2,XMMWORD PTR[rdi] |
| 1990 movups xmm3,XMMWORD PTR[16+rdi] |
| 1991 movups xmm4,XMMWORD PTR[32+rdi] |
| 1992 xorps xmm2,xmm10 |
| 1993 movups xmm5,XMMWORD PTR[48+rdi] |
| 1994 lea rdi,QWORD PTR[64+rdi] |
| 1995 xorps xmm3,xmm11 |
| 1996 xorps xmm4,xmm12 |
| 1997 xorps xmm5,xmm13 |
| 1998 |
| 1999 call _aesni_encrypt4 |
| 2000 |
| 2001 pxor xmm2,xmm10 |
| 2002 movdqa xmm10,xmm14 |
| 2003 pxor xmm3,xmm11 |
| 2004 pxor xmm4,xmm12 |
| 2005 movdqu XMMWORD PTR[rsi],xmm2 |
| 2006 pxor xmm5,xmm13 |
| 2007 movdqu XMMWORD PTR[16+rsi],xmm3 |
| 2008 movdqu XMMWORD PTR[32+rsi],xmm4 |
| 2009 movdqu XMMWORD PTR[48+rsi],xmm5 |
| 2010 lea rsi,QWORD PTR[64+rsi] |
| 2011 jmp $L$xts_enc_done |
| 2012 |
| 2013 ALIGN 16 |
| 2014 $L$xts_enc_done:: |
| 2015 and r9,15 |
| 2016 jz $L$xts_enc_ret |
| 2017 mov rdx,r9 |
| 2018 |
| 2019 $L$xts_enc_steal:: |
| 2020 movzx eax,BYTE PTR[rdi] |
| 2021 movzx ecx,BYTE PTR[((-16))+rsi] |
| 2022 lea rdi,QWORD PTR[1+rdi] |
| 2023 mov BYTE PTR[((-16))+rsi],al |
| 2024 mov BYTE PTR[rsi],cl |
| 2025 lea rsi,QWORD PTR[1+rsi] |
| 2026 sub rdx,1 |
| 2027 jnz $L$xts_enc_steal |
| 2028 |
| 2029 sub rsi,r9 |
| 2030 mov rcx,r11 |
| 2031 mov eax,r10d |
| 2032 |
| 2033 movups xmm2,XMMWORD PTR[((-16))+rsi] |
| 2034 xorps xmm2,xmm10 |
| 2035 movups xmm0,XMMWORD PTR[rcx] |
| 2036 movups xmm1,XMMWORD PTR[16+rcx] |
| 2037 lea rcx,QWORD PTR[32+rcx] |
| 2038 xorps xmm2,xmm0 |
| 2039 $L$oop_enc1_10:: |
| 2040 DB 102,15,56,220,209 |
| 2041 dec eax |
| 2042 movups xmm1,XMMWORD PTR[rcx] |
| 2043 lea rcx,QWORD PTR[16+rcx] |
| 2044 jnz $L$oop_enc1_10 |
| 2045 DB 102,15,56,221,209 |
| 2046 xorps xmm2,xmm10 |
| 2047 movups XMMWORD PTR[(-16)+rsi],xmm2 |
| 2048 |
| 2049 $L$xts_enc_ret:: |
| 2050 movaps xmm6,XMMWORD PTR[((-160))+rbp] |
| 2051 movaps xmm7,XMMWORD PTR[((-144))+rbp] |
| 2052 movaps xmm8,XMMWORD PTR[((-128))+rbp] |
| 2053 movaps xmm9,XMMWORD PTR[((-112))+rbp] |
| 2054 movaps xmm10,XMMWORD PTR[((-96))+rbp] |
| 2055 movaps xmm11,XMMWORD PTR[((-80))+rbp] |
| 2056 movaps xmm12,XMMWORD PTR[((-64))+rbp] |
| 2057 movaps xmm13,XMMWORD PTR[((-48))+rbp] |
| 2058 movaps xmm14,XMMWORD PTR[((-32))+rbp] |
| 2059 movaps xmm15,XMMWORD PTR[((-16))+rbp] |
| 2060 lea rsp,QWORD PTR[rbp] |
| 2061 pop rbp |
| 2062 $L$xts_enc_epilogue:: |
| 2063 mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue |
| 2064 mov rsi,QWORD PTR[16+rsp] |
| 2065 DB 0F3h,0C3h ;repret |
| 2066 $L$SEH_end_aesni_xts_encrypt:: |
| 2067 aesni_xts_encrypt ENDP |
| 2068 PUBLIC aesni_xts_decrypt |
| 2069 |
| 2070 ALIGN 16 |
| 2071 aesni_xts_decrypt PROC PUBLIC |
| 2072 mov QWORD PTR[8+rsp],rdi ;WIN64 prologue |
| 2073 mov QWORD PTR[16+rsp],rsi |
| 2074 mov rax,rsp |
| 2075 $L$SEH_begin_aesni_xts_decrypt:: |
| 2076 mov rdi,rcx |
| 2077 mov rsi,rdx |
| 2078 mov rdx,r8 |
| 2079 mov rcx,r9 |
| 2080 mov r8,QWORD PTR[40+rsp] |
| 2081 mov r9,QWORD PTR[48+rsp] |
| 2082 |
| 2083 |
| 2084 lea rax,QWORD PTR[rsp] |
| 2085 push rbp |
| 2086 sub rsp,272 |
| 2087 and rsp,-16 |
| 2088 movaps XMMWORD PTR[(-168)+rax],xmm6 |
| 2089 movaps XMMWORD PTR[(-152)+rax],xmm7 |
| 2090 movaps XMMWORD PTR[(-136)+rax],xmm8 |
| 2091 movaps XMMWORD PTR[(-120)+rax],xmm9 |
| 2092 movaps XMMWORD PTR[(-104)+rax],xmm10 |
| 2093 movaps XMMWORD PTR[(-88)+rax],xmm11 |
| 2094 movaps XMMWORD PTR[(-72)+rax],xmm12 |
| 2095 movaps XMMWORD PTR[(-56)+rax],xmm13 |
| 2096 movaps XMMWORD PTR[(-40)+rax],xmm14 |
| 2097 movaps XMMWORD PTR[(-24)+rax],xmm15 |
| 2098 $L$xts_dec_body:: |
| 2099 lea rbp,QWORD PTR[((-8))+rax] |
| 2100 movups xmm2,XMMWORD PTR[r9] |
| 2101 mov eax,DWORD PTR[240+r8] |
| 2102 mov r10d,DWORD PTR[240+rcx] |
| 2103 movups xmm0,XMMWORD PTR[r8] |
| 2104 movups xmm1,XMMWORD PTR[16+r8] |
| 2105 lea r8,QWORD PTR[32+r8] |
| 2106 xorps xmm2,xmm0 |
| 2107 $L$oop_enc1_11:: |
| 2108 DB 102,15,56,220,209 |
| 2109 dec eax |
| 2110 movups xmm1,XMMWORD PTR[r8] |
| 2111 lea r8,QWORD PTR[16+r8] |
| 2112 jnz $L$oop_enc1_11 |
| 2113 DB 102,15,56,221,209 |
| 2114 xor eax,eax |
| 2115 test rdx,15 |
| 2116 setnz al |
| 2117 shl rax,4 |
| 2118 sub rdx,rax |
| 2119 |
| 2120 movups xmm0,XMMWORD PTR[rcx] |
| 2121 mov r11,rcx |
| 2122 mov eax,r10d |
| 2123 shl r10d,4 |
| 2124 mov r9,rdx |
| 2125 and rdx,-16 |
| 2126 |
| 2127 movups xmm1,XMMWORD PTR[16+r10*1+rcx] |
| 2128 |
| 2129 movdqa xmm8,XMMWORD PTR[$L$xts_magic] |
| 2130 movdqa xmm15,xmm2 |
| 2131 pshufd xmm9,xmm2,05fh |
| 2132 pxor xmm1,xmm0 |
| 2133 movdqa xmm14,xmm9 |
| 2134 paddd xmm9,xmm9 |
| 2135 movdqa xmm10,xmm15 |
| 2136 psrad xmm14,31 |
| 2137 paddq xmm15,xmm15 |
| 2138 pand xmm14,xmm8 |
| 2139 pxor xmm10,xmm0 |
| 2140 pxor xmm15,xmm14 |
| 2141 movdqa xmm14,xmm9 |
| 2142 paddd xmm9,xmm9 |
| 2143 movdqa xmm11,xmm15 |
| 2144 psrad xmm14,31 |
| 2145 paddq xmm15,xmm15 |
| 2146 pand xmm14,xmm8 |
| 2147 pxor xmm11,xmm0 |
| 2148 pxor xmm15,xmm14 |
| 2149 movdqa xmm14,xmm9 |
| 2150 paddd xmm9,xmm9 |
| 2151 movdqa xmm12,xmm15 |
| 2152 psrad xmm14,31 |
| 2153 paddq xmm15,xmm15 |
| 2154 pand xmm14,xmm8 |
| 2155 pxor xmm12,xmm0 |
| 2156 pxor xmm15,xmm14 |
| 2157 movdqa xmm14,xmm9 |
| 2158 paddd xmm9,xmm9 |
| 2159 movdqa xmm13,xmm15 |
| 2160 psrad xmm14,31 |
| 2161 paddq xmm15,xmm15 |
| 2162 pand xmm14,xmm8 |
| 2163 pxor xmm13,xmm0 |
| 2164 pxor xmm15,xmm14 |
| 2165 movdqa xmm14,xmm15 |
| 2166 psrad xmm9,31 |
| 2167 paddq xmm15,xmm15 |
| 2168 pand xmm9,xmm8 |
| 2169 pxor xmm14,xmm0 |
| 2170 pxor xmm15,xmm9 |
| 2171 movaps XMMWORD PTR[96+rsp],xmm1 |
| 2172 |
| 2173 sub rdx,16*6 |
| 2174 jc $L$xts_dec_short |
| 2175 |
| 2176 mov eax,16+96 |
| 2177 lea rcx,QWORD PTR[32+r10*1+r11] |
| 2178 sub rax,r10 |
| 2179 movups xmm1,XMMWORD PTR[16+r11] |
| 2180 mov r10,rax |
| 2181 lea r8,QWORD PTR[$L$xts_magic] |
| 2182 jmp $L$xts_dec_grandloop |
| 2183 |
| 2184 ALIGN 32 |
| 2185 $L$xts_dec_grandloop:: |
| 2186 movdqu xmm2,XMMWORD PTR[rdi] |
| 2187 movdqa xmm8,xmm0 |
| 2188 movdqu xmm3,XMMWORD PTR[16+rdi] |
| 2189 pxor xmm2,xmm10 |
| 2190 movdqu xmm4,XMMWORD PTR[32+rdi] |
| 2191 pxor xmm3,xmm11 |
| 2192 DB 102,15,56,222,209 |
| 2193 movdqu xmm5,XMMWORD PTR[48+rdi] |
| 2194 pxor xmm4,xmm12 |
| 2195 DB 102,15,56,222,217 |
| 2196 movdqu xmm6,XMMWORD PTR[64+rdi] |
| 2197 pxor xmm5,xmm13 |
| 2198 DB 102,15,56,222,225 |
| 2199 movdqu xmm7,XMMWORD PTR[80+rdi] |
| 2200 pxor xmm8,xmm15 |
| 2201 movdqa xmm9,XMMWORD PTR[96+rsp] |
| 2202 pxor xmm6,xmm14 |
| 2203 DB 102,15,56,222,233 |
| 2204 movups xmm0,XMMWORD PTR[32+r11] |
| 2205 lea rdi,QWORD PTR[96+rdi] |
| 2206 pxor xmm7,xmm8 |
| 2207 |
| 2208 pxor xmm10,xmm9 |
| 2209 DB 102,15,56,222,241 |
| 2210 pxor xmm11,xmm9 |
| 2211 movdqa XMMWORD PTR[rsp],xmm10 |
| 2212 DB 102,15,56,222,249 |
| 2213 movups xmm1,XMMWORD PTR[48+r11] |
| 2214 pxor xmm12,xmm9 |
| 2215 |
| 2216 DB 102,15,56,222,208 |
| 2217 pxor xmm13,xmm9 |
| 2218 movdqa XMMWORD PTR[16+rsp],xmm11 |
| 2219 DB 102,15,56,222,216 |
| 2220 pxor xmm14,xmm9 |
| 2221 movdqa XMMWORD PTR[32+rsp],xmm12 |
| 2222 DB 102,15,56,222,224 |
| 2223 DB 102,15,56,222,232 |
| 2224 pxor xmm8,xmm9 |
| 2225 movdqa XMMWORD PTR[64+rsp],xmm14 |
| 2226 DB 102,15,56,222,240 |
| 2227 DB 102,15,56,222,248 |
| 2228 movups xmm0,XMMWORD PTR[64+r11] |
| 2229 movdqa XMMWORD PTR[80+rsp],xmm8 |
| 2230 pshufd xmm9,xmm15,05fh |
| 2231 jmp $L$xts_dec_loop6 |
| 2232 ALIGN 32 |
| 2233 $L$xts_dec_loop6:: |
| 2234 DB 102,15,56,222,209 |
| 2235 DB 102,15,56,222,217 |
| 2236 DB 102,15,56,222,225 |
| 2237 DB 102,15,56,222,233 |
| 2238 DB 102,15,56,222,241 |
| 2239 DB 102,15,56,222,249 |
| 2240 movups xmm1,XMMWORD PTR[((-64))+rax*1+rcx] |
| 2241 add rax,32 |
| 2242 |
| 2243 DB 102,15,56,222,208 |
| 2244 DB 102,15,56,222,216 |
| 2245 DB 102,15,56,222,224 |
| 2246 DB 102,15,56,222,232 |
| 2247 DB 102,15,56,222,240 |
| 2248 DB 102,15,56,222,248 |
| 2249 movups xmm0,XMMWORD PTR[((-80))+rax*1+rcx] |
| 2250 jnz $L$xts_dec_loop6 |
| 2251 |
| 2252 movdqa xmm8,XMMWORD PTR[r8] |
| 2253 movdqa xmm14,xmm9 |
| 2254 paddd xmm9,xmm9 |
| 2255 DB 102,15,56,222,209 |
| 2256 paddq xmm15,xmm15 |
| 2257 psrad xmm14,31 |
| 2258 DB 102,15,56,222,217 |
| 2259 pand xmm14,xmm8 |
| 2260 movups xmm10,XMMWORD PTR[r11] |
| 2261 DB 102,15,56,222,225 |
| 2262 DB 102,15,56,222,233 |
| 2263 DB 102,15,56,222,241 |
| 2264 pxor xmm15,xmm14 |
| 2265 movaps xmm11,xmm10 |
| 2266 DB 102,15,56,222,249 |
| 2267 movups xmm1,XMMWORD PTR[((-64))+rcx] |
| 2268 |
| 2269 movdqa xmm14,xmm9 |
| 2270 DB 102,15,56,222,208 |
| 2271 paddd xmm9,xmm9 |
| 2272 pxor xmm10,xmm15 |
| 2273 DB 102,15,56,222,216 |
| 2274 psrad xmm14,31 |
| 2275 paddq xmm15,xmm15 |
| 2276 DB 102,15,56,222,224 |
| 2277 DB 102,15,56,222,232 |
| 2278 pand xmm14,xmm8 |
| 2279 movaps xmm12,xmm11 |
| 2280 DB 102,15,56,222,240 |
| 2281 pxor xmm15,xmm14 |
| 2282 movdqa xmm14,xmm9 |
| 2283 DB 102,15,56,222,248 |
| 2284 movups xmm0,XMMWORD PTR[((-48))+rcx] |
| 2285 |
| 2286 paddd xmm9,xmm9 |
| 2287 DB 102,15,56,222,209 |
| 2288 pxor xmm11,xmm15 |
| 2289 psrad xmm14,31 |
| 2290 DB 102,15,56,222,217 |
| 2291 paddq xmm15,xmm15 |
| 2292 pand xmm14,xmm8 |
| 2293 DB 102,15,56,222,225 |
| 2294 DB 102,15,56,222,233 |
| 2295 movdqa XMMWORD PTR[48+rsp],xmm13 |
| 2296 pxor xmm15,xmm14 |
| 2297 DB 102,15,56,222,241 |
| 2298 movaps xmm13,xmm12 |
| 2299 movdqa xmm14,xmm9 |
| 2300 DB 102,15,56,222,249 |
| 2301 movups xmm1,XMMWORD PTR[((-32))+rcx] |
| 2302 |
| 2303 paddd xmm9,xmm9 |
| 2304 DB 102,15,56,222,208 |
| 2305 pxor xmm12,xmm15 |
| 2306 psrad xmm14,31 |
| 2307 DB 102,15,56,222,216 |
| 2308 paddq xmm15,xmm15 |
| 2309 pand xmm14,xmm8 |
| 2310 DB 102,15,56,222,224 |
| 2311 DB 102,15,56,222,232 |
| 2312 DB 102,15,56,222,240 |
| 2313 pxor xmm15,xmm14 |
| 2314 movaps xmm14,xmm13 |
| 2315 DB 102,15,56,222,248 |
| 2316 |
| 2317 movdqa xmm0,xmm9 |
| 2318 paddd xmm9,xmm9 |
| 2319 DB 102,15,56,222,209 |
| 2320 pxor xmm13,xmm15 |
| 2321 psrad xmm0,31 |
| 2322 DB 102,15,56,222,217 |
| 2323 paddq xmm15,xmm15 |
| 2324 pand xmm0,xmm8 |
| 2325 DB 102,15,56,222,225 |
| 2326 DB 102,15,56,222,233 |
| 2327 pxor xmm15,xmm0 |
| 2328 movups xmm0,XMMWORD PTR[r11] |
| 2329 DB 102,15,56,222,241 |
| 2330 DB 102,15,56,222,249 |
| 2331 movups xmm1,XMMWORD PTR[16+r11] |
| 2332 |
| 2333 pxor xmm14,xmm15 |
| 2334 DB 102,15,56,223,84,36,0 |
| 2335 psrad xmm9,31 |
| 2336 paddq xmm15,xmm15 |
| 2337 DB 102,15,56,223,92,36,16 |
| 2338 DB 102,15,56,223,100,36,32 |
| 2339 pand xmm9,xmm8 |
| 2340 mov rax,r10 |
| 2341 DB 102,15,56,223,108,36,48 |
| 2342 DB 102,15,56,223,116,36,64 |
| 2343 DB 102,15,56,223,124,36,80 |
| 2344 pxor xmm15,xmm9 |
| 2345 |
| 2346 lea rsi,QWORD PTR[96+rsi] |
| 2347 movups XMMWORD PTR[(-96)+rsi],xmm2 |
| 2348 movups XMMWORD PTR[(-80)+rsi],xmm3 |
| 2349 movups XMMWORD PTR[(-64)+rsi],xmm4 |
| 2350 movups XMMWORD PTR[(-48)+rsi],xmm5 |
| 2351 movups XMMWORD PTR[(-32)+rsi],xmm6 |
| 2352 movups XMMWORD PTR[(-16)+rsi],xmm7 |
| 2353 sub rdx,16*6 |
| 2354 jnc $L$xts_dec_grandloop |
| 2355 |
| 2356 mov eax,16+96 |
| 2357 sub eax,r10d |
| 2358 mov rcx,r11 |
| 2359 shr eax,4 |
| 2360 |
| 2361 $L$xts_dec_short:: |
| 2362 mov r10d,eax |
| 2363 pxor xmm10,xmm0 |
| 2364 pxor xmm11,xmm0 |
| 2365 add rdx,16*6 |
| 2366 jz $L$xts_dec_done |
| 2367 |
| 2368 pxor xmm12,xmm0 |
| 2369 cmp rdx,020h |
| 2370 jb $L$xts_dec_one |
| 2371 pxor xmm13,xmm0 |
| 2372 je $L$xts_dec_two |
| 2373 |
| 2374 pxor xmm14,xmm0 |
| 2375 cmp rdx,040h |
| 2376 jb $L$xts_dec_three |
| 2377 je $L$xts_dec_four |
| 2378 |
| 2379 movdqu xmm2,XMMWORD PTR[rdi] |
| 2380 movdqu xmm3,XMMWORD PTR[16+rdi] |
| 2381 movdqu xmm4,XMMWORD PTR[32+rdi] |
| 2382 pxor xmm2,xmm10 |
| 2383 movdqu xmm5,XMMWORD PTR[48+rdi] |
| 2384 pxor xmm3,xmm11 |
| 2385 movdqu xmm6,XMMWORD PTR[64+rdi] |
| 2386 lea rdi,QWORD PTR[80+rdi] |
| 2387 pxor xmm4,xmm12 |
| 2388 pxor xmm5,xmm13 |
| 2389 pxor xmm6,xmm14 |
| 2390 |
| 2391 call _aesni_decrypt6 |
| 2392 |
| 2393 xorps xmm2,xmm10 |
| 2394 xorps xmm3,xmm11 |
| 2395 xorps xmm4,xmm12 |
| 2396 movdqu XMMWORD PTR[rsi],xmm2 |
| 2397 xorps xmm5,xmm13 |
| 2398 movdqu XMMWORD PTR[16+rsi],xmm3 |
| 2399 xorps xmm6,xmm14 |
| 2400 movdqu XMMWORD PTR[32+rsi],xmm4 |
| 2401 pxor xmm14,xmm14 |
| 2402 movdqu XMMWORD PTR[48+rsi],xmm5 |
| 2403 pcmpgtd xmm14,xmm15 |
| 2404 movdqu XMMWORD PTR[64+rsi],xmm6 |
| 2405 lea rsi,QWORD PTR[80+rsi] |
| 2406 pshufd xmm11,xmm14,013h |
| 2407 and r9,15 |
| 2408 jz $L$xts_dec_ret |
| 2409 |
| 2410 movdqa xmm10,xmm15 |
| 2411 paddq xmm15,xmm15 |
| 2412 pand xmm11,xmm8 |
| 2413 pxor xmm11,xmm15 |
| 2414 jmp $L$xts_dec_done2 |
| 2415 |
| 2416 ALIGN 16 |
| 2417 $L$xts_dec_one:: |
| 2418 movups xmm2,XMMWORD PTR[rdi] |
| 2419 lea rdi,QWORD PTR[16+rdi] |
| 2420 xorps xmm2,xmm10 |
| 2421 movups xmm0,XMMWORD PTR[rcx] |
| 2422 movups xmm1,XMMWORD PTR[16+rcx] |
| 2423 lea rcx,QWORD PTR[32+rcx] |
| 2424 xorps xmm2,xmm0 |
| 2425 $L$oop_dec1_12:: |
| 2426 DB 102,15,56,222,209 |
| 2427 dec eax |
| 2428 movups xmm1,XMMWORD PTR[rcx] |
| 2429 lea rcx,QWORD PTR[16+rcx] |
| 2430 jnz $L$oop_dec1_12 |
| 2431 DB 102,15,56,223,209 |
| 2432 xorps xmm2,xmm10 |
| 2433 movdqa xmm10,xmm11 |
| 2434 movups XMMWORD PTR[rsi],xmm2 |
| 2435 movdqa xmm11,xmm12 |
| 2436 lea rsi,QWORD PTR[16+rsi] |
| 2437 jmp $L$xts_dec_done |
| 2438 |
| 2439 ALIGN 16 |
| 2440 $L$xts_dec_two:: |
| 2441 movups xmm2,XMMWORD PTR[rdi] |
| 2442 movups xmm3,XMMWORD PTR[16+rdi] |
| 2443 lea rdi,QWORD PTR[32+rdi] |
| 2444 xorps xmm2,xmm10 |
| 2445 xorps xmm3,xmm11 |
| 2446 |
| 2447 call _aesni_decrypt2 |
| 2448 |
| 2449 xorps xmm2,xmm10 |
| 2450 movdqa xmm10,xmm12 |
| 2451 xorps xmm3,xmm11 |
| 2452 movdqa xmm11,xmm13 |
| 2453 movups XMMWORD PTR[rsi],xmm2 |
| 2454 movups XMMWORD PTR[16+rsi],xmm3 |
| 2455 lea rsi,QWORD PTR[32+rsi] |
| 2456 jmp $L$xts_dec_done |
| 2457 |
| 2458 ALIGN 16 |
| 2459 $L$xts_dec_three:: |
| 2460 movups xmm2,XMMWORD PTR[rdi] |
| 2461 movups xmm3,XMMWORD PTR[16+rdi] |
| 2462 movups xmm4,XMMWORD PTR[32+rdi] |
| 2463 lea rdi,QWORD PTR[48+rdi] |
| 2464 xorps xmm2,xmm10 |
| 2465 xorps xmm3,xmm11 |
| 2466 xorps xmm4,xmm12 |
| 2467 |
| 2468 call _aesni_decrypt3 |
| 2469 |
| 2470 xorps xmm2,xmm10 |
| 2471 movdqa xmm10,xmm13 |
| 2472 xorps xmm3,xmm11 |
| 2473 movdqa xmm11,xmm14 |
| 2474 xorps xmm4,xmm12 |
| 2475 movups XMMWORD PTR[rsi],xmm2 |
| 2476 movups XMMWORD PTR[16+rsi],xmm3 |
| 2477 movups XMMWORD PTR[32+rsi],xmm4 |
| 2478 lea rsi,QWORD PTR[48+rsi] |
| 2479 jmp $L$xts_dec_done |
| 2480 |
| 2481 ALIGN 16 |
| 2482 $L$xts_dec_four:: |
| 2483 movups xmm2,XMMWORD PTR[rdi] |
| 2484 movups xmm3,XMMWORD PTR[16+rdi] |
| 2485 movups xmm4,XMMWORD PTR[32+rdi] |
| 2486 xorps xmm2,xmm10 |
| 2487 movups xmm5,XMMWORD PTR[48+rdi] |
| 2488 lea rdi,QWORD PTR[64+rdi] |
| 2489 xorps xmm3,xmm11 |
| 2490 xorps xmm4,xmm12 |
| 2491 xorps xmm5,xmm13 |
| 2492 |
| 2493 call _aesni_decrypt4 |
| 2494 |
| 2495 pxor xmm2,xmm10 |
| 2496 movdqa xmm10,xmm14 |
| 2497 pxor xmm3,xmm11 |
| 2498 movdqa xmm11,xmm15 |
| 2499 pxor xmm4,xmm12 |
| 2500 movdqu XMMWORD PTR[rsi],xmm2 |
| 2501 pxor xmm5,xmm13 |
| 2502 movdqu XMMWORD PTR[16+rsi],xmm3 |
| 2503 movdqu XMMWORD PTR[32+rsi],xmm4 |
| 2504 movdqu XMMWORD PTR[48+rsi],xmm5 |
| 2505 lea rsi,QWORD PTR[64+rsi] |
| 2506 jmp $L$xts_dec_done |
| 2507 |
| 2508 ALIGN 16 |
| 2509 $L$xts_dec_done:: |
| 2510 and r9,15 |
| 2511 jz $L$xts_dec_ret |
| 2512 $L$xts_dec_done2:: |
| 2513 mov rdx,r9 |
| 2514 mov rcx,r11 |
| 2515 mov eax,r10d |
| 2516 |
| 2517 movups xmm2,XMMWORD PTR[rdi] |
| 2518 xorps xmm2,xmm11 |
| 2519 movups xmm0,XMMWORD PTR[rcx] |
| 2520 movups xmm1,XMMWORD PTR[16+rcx] |
| 2521 lea rcx,QWORD PTR[32+rcx] |
| 2522 xorps xmm2,xmm0 |
| 2523 $L$oop_dec1_13:: |
| 2524 DB 102,15,56,222,209 |
| 2525 dec eax |
| 2526 movups xmm1,XMMWORD PTR[rcx] |
| 2527 lea rcx,QWORD PTR[16+rcx] |
| 2528 jnz $L$oop_dec1_13 |
| 2529 DB 102,15,56,223,209 |
| 2530 xorps xmm2,xmm11 |
| 2531 movups XMMWORD PTR[rsi],xmm2 |
| 2532 |
| 2533 $L$xts_dec_steal:: |
| 2534 movzx eax,BYTE PTR[16+rdi] |
| 2535 movzx ecx,BYTE PTR[rsi] |
| 2536 lea rdi,QWORD PTR[1+rdi] |
| 2537 mov BYTE PTR[rsi],al |
| 2538 mov BYTE PTR[16+rsi],cl |
| 2539 lea rsi,QWORD PTR[1+rsi] |
| 2540 sub rdx,1 |
| 2541 jnz $L$xts_dec_steal |
| 2542 |
| 2543 sub rsi,r9 |
| 2544 mov rcx,r11 |
| 2545 mov eax,r10d |
| 2546 |
| 2547 movups xmm2,XMMWORD PTR[rsi] |
| 2548 xorps xmm2,xmm10 |
| 2549 movups xmm0,XMMWORD PTR[rcx] |
| 2550 movups xmm1,XMMWORD PTR[16+rcx] |
| 2551 lea rcx,QWORD PTR[32+rcx] |
| 2552 xorps xmm2,xmm0 |
| 2553 $L$oop_dec1_14:: |
| 2554 DB 102,15,56,222,209 |
| 2555 dec eax |
| 2556 movups xmm1,XMMWORD PTR[rcx] |
| 2557 lea rcx,QWORD PTR[16+rcx] |
| 2558 jnz $L$oop_dec1_14 |
| 2559 DB 102,15,56,223,209 |
| 2560 xorps xmm2,xmm10 |
| 2561 movups XMMWORD PTR[rsi],xmm2 |
| 2562 |
| 2563 $L$xts_dec_ret:: |
| 2564 movaps xmm6,XMMWORD PTR[((-160))+rbp] |
| 2565 movaps xmm7,XMMWORD PTR[((-144))+rbp] |
| 2566 movaps xmm8,XMMWORD PTR[((-128))+rbp] |
| 2567 movaps xmm9,XMMWORD PTR[((-112))+rbp] |
| 2568 movaps xmm10,XMMWORD PTR[((-96))+rbp] |
| 2569 movaps xmm11,XMMWORD PTR[((-80))+rbp] |
| 2570 movaps xmm12,XMMWORD PTR[((-64))+rbp] |
| 2571 movaps xmm13,XMMWORD PTR[((-48))+rbp] |
| 2572 movaps xmm14,XMMWORD PTR[((-32))+rbp] |
| 2573 movaps xmm15,XMMWORD PTR[((-16))+rbp] |
| 2574 lea rsp,QWORD PTR[rbp] |
| 2575 pop rbp |
| 2576 $L$xts_dec_epilogue:: |
| 2577 mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue |
| 2578 mov rsi,QWORD PTR[16+rsp] |
| 2579 DB 0F3h,0C3h ;repret |
| 2580 $L$SEH_end_aesni_xts_decrypt:: |
| 2581 aesni_xts_decrypt ENDP |
| 2582 PUBLIC aesni_cbc_encrypt |
| 2583 |
| 2584 ALIGN 16 |
| 2585 aesni_cbc_encrypt PROC PUBLIC |
| 2586 mov QWORD PTR[8+rsp],rdi ;WIN64 prologue |
| 2587 mov QWORD PTR[16+rsp],rsi |
| 2588 mov rax,rsp |
| 2589 $L$SEH_begin_aesni_cbc_encrypt:: |
| 2590 mov rdi,rcx |
| 2591 mov rsi,rdx |
| 2592 mov rdx,r8 |
| 2593 mov rcx,r9 |
| 2594 mov r8,QWORD PTR[40+rsp] |
| 2595 mov r9,QWORD PTR[48+rsp] |
| 2596 |
| 2597 |
| 2598 test rdx,rdx |
| 2599 jz $L$cbc_ret |
| 2600 |
| 2601 mov r10d,DWORD PTR[240+rcx] |
| 2602 mov r11,rcx |
| 2603 test r9d,r9d |
| 2604 jz $L$cbc_decrypt |
| 2605 |
| 2606 movups xmm2,XMMWORD PTR[r8] |
| 2607 mov eax,r10d |
| 2608 cmp rdx,16 |
| 2609 jb $L$cbc_enc_tail |
| 2610 sub rdx,16 |
| 2611 jmp $L$cbc_enc_loop |
| 2612 ALIGN 16 |
| 2613 $L$cbc_enc_loop:: |
| 2614 movups xmm3,XMMWORD PTR[rdi] |
| 2615 lea rdi,QWORD PTR[16+rdi] |
| 2616 |
| 2617 movups xmm0,XMMWORD PTR[rcx] |
| 2618 movups xmm1,XMMWORD PTR[16+rcx] |
| 2619 xorps xmm3,xmm0 |
| 2620 lea rcx,QWORD PTR[32+rcx] |
| 2621 xorps xmm2,xmm3 |
| 2622 $L$oop_enc1_15:: |
| 2623 DB 102,15,56,220,209 |
| 2624 dec eax |
| 2625 movups xmm1,XMMWORD PTR[rcx] |
| 2626 lea rcx,QWORD PTR[16+rcx] |
| 2627 jnz $L$oop_enc1_15 |
| 2628 DB 102,15,56,221,209 |
| 2629 mov eax,r10d |
| 2630 mov rcx,r11 |
| 2631 movups XMMWORD PTR[rsi],xmm2 |
| 2632 lea rsi,QWORD PTR[16+rsi] |
| 2633 sub rdx,16 |
| 2634 jnc $L$cbc_enc_loop |
| 2635 add rdx,16 |
| 2636 jnz $L$cbc_enc_tail |
| 2637 movups XMMWORD PTR[r8],xmm2 |
| 2638 jmp $L$cbc_ret |
| 2639 |
| 2640 $L$cbc_enc_tail:: |
| 2641 mov rcx,rdx |
| 2642 xchg rsi,rdi |
| 2643 DD 09066A4F3h |
| 2644 mov ecx,16 |
| 2645 sub rcx,rdx |
| 2646 xor eax,eax |
| 2647 DD 09066AAF3h |
| 2648 lea rdi,QWORD PTR[((-16))+rdi] |
| 2649 mov eax,r10d |
| 2650 mov rsi,rdi |
| 2651 mov rcx,r11 |
| 2652 xor rdx,rdx |
| 2653 jmp $L$cbc_enc_loop |
| 2654 |
| 2655 ALIGN 16 |
| 2656 $L$cbc_decrypt:: |
| 2657 lea rax,QWORD PTR[rsp] |
| 2658 push rbp |
| 2659 sub rsp,176 |
| 2660 and rsp,-16 |
| 2661 movaps XMMWORD PTR[16+rsp],xmm6 |
| 2662 movaps XMMWORD PTR[32+rsp],xmm7 |
| 2663 movaps XMMWORD PTR[48+rsp],xmm8 |
| 2664 movaps XMMWORD PTR[64+rsp],xmm9 |
| 2665 movaps XMMWORD PTR[80+rsp],xmm10 |
| 2666 movaps XMMWORD PTR[96+rsp],xmm11 |
| 2667 movaps XMMWORD PTR[112+rsp],xmm12 |
| 2668 movaps XMMWORD PTR[128+rsp],xmm13 |
| 2669 movaps XMMWORD PTR[144+rsp],xmm14 |
| 2670 movaps XMMWORD PTR[160+rsp],xmm15 |
| 2671 $L$cbc_decrypt_body:: |
| 2672 lea rbp,QWORD PTR[((-8))+rax] |
| 2673 movups xmm10,XMMWORD PTR[r8] |
| 2674 mov eax,r10d |
| 2675 cmp rdx,050h |
| 2676 jbe $L$cbc_dec_tail |
| 2677 |
| 2678 movups xmm0,XMMWORD PTR[rcx] |
| 2679 movdqu xmm2,XMMWORD PTR[rdi] |
| 2680 movdqu xmm3,XMMWORD PTR[16+rdi] |
| 2681 movdqa xmm11,xmm2 |
| 2682 movdqu xmm4,XMMWORD PTR[32+rdi] |
| 2683 movdqa xmm12,xmm3 |
| 2684 movdqu xmm5,XMMWORD PTR[48+rdi] |
| 2685 movdqa xmm13,xmm4 |
| 2686 movdqu xmm6,XMMWORD PTR[64+rdi] |
| 2687 movdqa xmm14,xmm5 |
| 2688 movdqu xmm7,XMMWORD PTR[80+rdi] |
| 2689 movdqa xmm15,xmm6 |
| 2690 mov r9d,DWORD PTR[((OPENSSL_ia32cap_P+4))] |
| 2691 cmp rdx,070h |
| 2692 jbe $L$cbc_dec_six_or_seven |
| 2693 |
| 2694 and r9d,71303168 |
| 2695 sub rdx,050h |
| 2696 cmp r9d,4194304 |
| 2697 je $L$cbc_dec_loop6_enter |
| 2698 sub rdx,020h |
| 2699 lea rcx,QWORD PTR[112+rcx] |
| 2700 jmp $L$cbc_dec_loop8_enter |
| 2701 ALIGN 16 |
| 2702 $L$cbc_dec_loop8:: |
| 2703 movups XMMWORD PTR[rsi],xmm9 |
| 2704 lea rsi,QWORD PTR[16+rsi] |
| 2705 $L$cbc_dec_loop8_enter:: |
| 2706 movdqu xmm8,XMMWORD PTR[96+rdi] |
| 2707 pxor xmm2,xmm0 |
| 2708 movdqu xmm9,XMMWORD PTR[112+rdi] |
| 2709 pxor xmm3,xmm0 |
| 2710 movups xmm1,XMMWORD PTR[((16-112))+rcx] |
| 2711 pxor xmm4,xmm0 |
| 2712 xor r11,r11 |
| 2713 cmp rdx,070h |
| 2714 pxor xmm5,xmm0 |
| 2715 pxor xmm6,xmm0 |
| 2716 pxor xmm7,xmm0 |
| 2717 pxor xmm8,xmm0 |
| 2718 |
| 2719 DB 102,15,56,222,209 |
| 2720 pxor xmm9,xmm0 |
| 2721 movups xmm0,XMMWORD PTR[((32-112))+rcx] |
| 2722 DB 102,15,56,222,217 |
| 2723 DB 102,15,56,222,225 |
| 2724 DB 102,15,56,222,233 |
| 2725 DB 102,15,56,222,241 |
| 2726 DB 102,15,56,222,249 |
| 2727 DB 102,68,15,56,222,193 |
| 2728 setnc r11b |
| 2729 shl r11,7 |
| 2730 DB 102,68,15,56,222,201 |
| 2731 add r11,rdi |
| 2732 movups xmm1,XMMWORD PTR[((48-112))+rcx] |
| 2733 DB 102,15,56,222,208 |
| 2734 DB 102,15,56,222,216 |
| 2735 DB 102,15,56,222,224 |
| 2736 DB 102,15,56,222,232 |
| 2737 DB 102,15,56,222,240 |
| 2738 DB 102,15,56,222,248 |
| 2739 DB 102,68,15,56,222,192 |
| 2740 DB 102,68,15,56,222,200 |
| 2741 movups xmm0,XMMWORD PTR[((64-112))+rcx] |
| 2742 nop |
| 2743 DB 102,15,56,222,209 |
| 2744 DB 102,15,56,222,217 |
| 2745 DB 102,15,56,222,225 |
| 2746 DB 102,15,56,222,233 |
| 2747 DB 102,15,56,222,241 |
| 2748 DB 102,15,56,222,249 |
| 2749 DB 102,68,15,56,222,193 |
| 2750 DB 102,68,15,56,222,201 |
| 2751 movups xmm1,XMMWORD PTR[((80-112))+rcx] |
| 2752 nop |
| 2753 DB 102,15,56,222,208 |
| 2754 DB 102,15,56,222,216 |
| 2755 DB 102,15,56,222,224 |
| 2756 DB 102,15,56,222,232 |
| 2757 DB 102,15,56,222,240 |
| 2758 DB 102,15,56,222,248 |
| 2759 DB 102,68,15,56,222,192 |
| 2760 DB 102,68,15,56,222,200 |
| 2761 movups xmm0,XMMWORD PTR[((96-112))+rcx] |
| 2762 nop |
| 2763 DB 102,15,56,222,209 |
| 2764 DB 102,15,56,222,217 |
| 2765 DB 102,15,56,222,225 |
| 2766 DB 102,15,56,222,233 |
| 2767 DB 102,15,56,222,241 |
| 2768 DB 102,15,56,222,249 |
| 2769 DB 102,68,15,56,222,193 |
| 2770 DB 102,68,15,56,222,201 |
| 2771 movups xmm1,XMMWORD PTR[((112-112))+rcx] |
| 2772 nop |
| 2773 DB 102,15,56,222,208 |
| 2774 DB 102,15,56,222,216 |
| 2775 DB 102,15,56,222,224 |
| 2776 DB 102,15,56,222,232 |
| 2777 DB 102,15,56,222,240 |
| 2778 DB 102,15,56,222,248 |
| 2779 DB 102,68,15,56,222,192 |
| 2780 DB 102,68,15,56,222,200 |
| 2781 movups xmm0,XMMWORD PTR[((128-112))+rcx] |
| 2782 nop |
| 2783 DB 102,15,56,222,209 |
| 2784 DB 102,15,56,222,217 |
| 2785 DB 102,15,56,222,225 |
| 2786 DB 102,15,56,222,233 |
| 2787 DB 102,15,56,222,241 |
| 2788 DB 102,15,56,222,249 |
| 2789 DB 102,68,15,56,222,193 |
| 2790 DB 102,68,15,56,222,201 |
| 2791 movups xmm1,XMMWORD PTR[((144-112))+rcx] |
| 2792 cmp eax,11 |
| 2793 DB 102,15,56,222,208 |
| 2794 DB 102,15,56,222,216 |
| 2795 DB 102,15,56,222,224 |
| 2796 DB 102,15,56,222,232 |
| 2797 DB 102,15,56,222,240 |
| 2798 DB 102,15,56,222,248 |
| 2799 DB 102,68,15,56,222,192 |
| 2800 DB 102,68,15,56,222,200 |
| 2801 movups xmm0,XMMWORD PTR[((160-112))+rcx] |
| 2802 jb $L$cbc_dec_done |
| 2803 DB 102,15,56,222,209 |
| 2804 DB 102,15,56,222,217 |
| 2805 DB 102,15,56,222,225 |
| 2806 DB 102,15,56,222,233 |
| 2807 DB 102,15,56,222,241 |
| 2808 DB 102,15,56,222,249 |
| 2809 DB 102,68,15,56,222,193 |
| 2810 DB 102,68,15,56,222,201 |
| 2811 movups xmm1,XMMWORD PTR[((176-112))+rcx] |
| 2812 nop |
| 2813 DB 102,15,56,222,208 |
| 2814 DB 102,15,56,222,216 |
| 2815 DB 102,15,56,222,224 |
| 2816 DB 102,15,56,222,232 |
| 2817 DB 102,15,56,222,240 |
| 2818 DB 102,15,56,222,248 |
| 2819 DB 102,68,15,56,222,192 |
| 2820 DB 102,68,15,56,222,200 |
| 2821 movups xmm0,XMMWORD PTR[((192-112))+rcx] |
| 2822 je $L$cbc_dec_done |
| 2823 DB 102,15,56,222,209 |
| 2824 DB 102,15,56,222,217 |
| 2825 DB 102,15,56,222,225 |
| 2826 DB 102,15,56,222,233 |
| 2827 DB 102,15,56,222,241 |
| 2828 DB 102,15,56,222,249 |
| 2829 DB 102,68,15,56,222,193 |
| 2830 DB 102,68,15,56,222,201 |
| 2831 movups xmm1,XMMWORD PTR[((208-112))+rcx] |
| 2832 nop |
| 2833 DB 102,15,56,222,208 |
| 2834 DB 102,15,56,222,216 |
| 2835 DB 102,15,56,222,224 |
| 2836 DB 102,15,56,222,232 |
| 2837 DB 102,15,56,222,240 |
| 2838 DB 102,15,56,222,248 |
| 2839 DB 102,68,15,56,222,192 |
| 2840 DB 102,68,15,56,222,200 |
| 2841 movups xmm0,XMMWORD PTR[((224-112))+rcx] |
| 2842 jmp $L$cbc_dec_done |
| 2843 ALIGN 16 |
| 2844 $L$cbc_dec_done:: |
| 2845 DB 102,15,56,222,209 |
| 2846 DB 102,15,56,222,217 |
| 2847 pxor xmm10,xmm0 |
| 2848 pxor xmm11,xmm0 |
| 2849 DB 102,15,56,222,225 |
| 2850 DB 102,15,56,222,233 |
| 2851 pxor xmm12,xmm0 |
| 2852 pxor xmm13,xmm0 |
| 2853 DB 102,15,56,222,241 |
| 2854 DB 102,15,56,222,249 |
| 2855 pxor xmm14,xmm0 |
| 2856 pxor xmm15,xmm0 |
| 2857 DB 102,68,15,56,222,193 |
| 2858 DB 102,68,15,56,222,201 |
| 2859 movdqu xmm1,XMMWORD PTR[80+rdi] |
| 2860 |
| 2861 DB 102,65,15,56,223,210 |
| 2862 movdqu xmm10,XMMWORD PTR[96+rdi] |
| 2863 pxor xmm1,xmm0 |
| 2864 DB 102,65,15,56,223,219 |
| 2865 pxor xmm10,xmm0 |
| 2866 movdqu xmm0,XMMWORD PTR[112+rdi] |
| 2867 DB 102,65,15,56,223,228 |
| 2868 lea rdi,QWORD PTR[128+rdi] |
| 2869 movdqu xmm11,XMMWORD PTR[r11] |
| 2870 DB 102,65,15,56,223,237 |
| 2871 DB 102,65,15,56,223,246 |
| 2872 movdqu xmm12,XMMWORD PTR[16+r11] |
| 2873 movdqu xmm13,XMMWORD PTR[32+r11] |
| 2874 DB 102,65,15,56,223,255 |
| 2875 DB 102,68,15,56,223,193 |
| 2876 movdqu xmm14,XMMWORD PTR[48+r11] |
| 2877 movdqu xmm15,XMMWORD PTR[64+r11] |
| 2878 DB 102,69,15,56,223,202 |
| 2879 movdqa xmm10,xmm0 |
| 2880 movdqu xmm1,XMMWORD PTR[80+r11] |
| 2881 movups xmm0,XMMWORD PTR[((-112))+rcx] |
| 2882 |
| 2883 movups XMMWORD PTR[rsi],xmm2 |
| 2884 movdqa xmm2,xmm11 |
| 2885 movups XMMWORD PTR[16+rsi],xmm3 |
| 2886 movdqa xmm3,xmm12 |
| 2887 movups XMMWORD PTR[32+rsi],xmm4 |
| 2888 movdqa xmm4,xmm13 |
| 2889 movups XMMWORD PTR[48+rsi],xmm5 |
| 2890 movdqa xmm5,xmm14 |
| 2891 movups XMMWORD PTR[64+rsi],xmm6 |
| 2892 movdqa xmm6,xmm15 |
| 2893 movups XMMWORD PTR[80+rsi],xmm7 |
| 2894 movdqa xmm7,xmm1 |
| 2895 movups XMMWORD PTR[96+rsi],xmm8 |
| 2896 lea rsi,QWORD PTR[112+rsi] |
| 2897 |
| 2898 sub rdx,080h |
| 2899 ja $L$cbc_dec_loop8 |
| 2900 |
| 2901 movaps xmm2,xmm9 |
| 2902 lea rcx,QWORD PTR[((-112))+rcx] |
| 2903 add rdx,070h |
| 2904 jle $L$cbc_dec_tail_collected |
| 2905 movups XMMWORD PTR[rsi],xmm9 |
| 2906 lea rsi,QWORD PTR[16+rsi] |
| 2907 cmp rdx,050h |
| 2908 jbe $L$cbc_dec_tail |
| 2909 |
| 2910 movaps xmm2,xmm11 |
| 2911 $L$cbc_dec_six_or_seven:: |
| 2912 cmp rdx,060h |
| 2913 ja $L$cbc_dec_seven |
| 2914 |
| 2915 movaps xmm8,xmm7 |
| 2916 call _aesni_decrypt6 |
| 2917 pxor xmm2,xmm10 |
| 2918 movaps xmm10,xmm8 |
| 2919 pxor xmm3,xmm11 |
| 2920 movdqu XMMWORD PTR[rsi],xmm2 |
| 2921 pxor xmm4,xmm12 |
| 2922 movdqu XMMWORD PTR[16+rsi],xmm3 |
| 2923 pxor xmm5,xmm13 |
| 2924 movdqu XMMWORD PTR[32+rsi],xmm4 |
| 2925 pxor xmm6,xmm14 |
| 2926 movdqu XMMWORD PTR[48+rsi],xmm5 |
| 2927 pxor xmm7,xmm15 |
| 2928 movdqu XMMWORD PTR[64+rsi],xmm6 |
| 2929 lea rsi,QWORD PTR[80+rsi] |
| 2930 movdqa xmm2,xmm7 |
| 2931 jmp $L$cbc_dec_tail_collected |
| 2932 |
| 2933 ALIGN 16 |
| 2934 $L$cbc_dec_seven:: |
| 2935 movups xmm8,XMMWORD PTR[96+rdi] |
| 2936 xorps xmm9,xmm9 |
| 2937 call _aesni_decrypt8 |
| 2938 movups xmm9,XMMWORD PTR[80+rdi] |
| 2939 pxor xmm2,xmm10 |
| 2940 movups xmm10,XMMWORD PTR[96+rdi] |
| 2941 pxor xmm3,xmm11 |
| 2942 movdqu XMMWORD PTR[rsi],xmm2 |
| 2943 pxor xmm4,xmm12 |
| 2944 movdqu XMMWORD PTR[16+rsi],xmm3 |
| 2945 pxor xmm5,xmm13 |
| 2946 movdqu XMMWORD PTR[32+rsi],xmm4 |
| 2947 pxor xmm6,xmm14 |
| 2948 movdqu XMMWORD PTR[48+rsi],xmm5 |
| 2949 pxor xmm7,xmm15 |
| 2950 movdqu XMMWORD PTR[64+rsi],xmm6 |
| 2951 pxor xmm8,xmm9 |
| 2952 movdqu XMMWORD PTR[80+rsi],xmm7 |
| 2953 lea rsi,QWORD PTR[96+rsi] |
| 2954 movdqa xmm2,xmm8 |
| 2955 jmp $L$cbc_dec_tail_collected |
| 2956 |
| 2957 ALIGN 16 |
| 2958 $L$cbc_dec_loop6:: |
| 2959 movups XMMWORD PTR[rsi],xmm7 |
| 2960 lea rsi,QWORD PTR[16+rsi] |
| 2961 movdqu xmm2,XMMWORD PTR[rdi] |
| 2962 movdqu xmm3,XMMWORD PTR[16+rdi] |
| 2963 movdqa xmm11,xmm2 |
| 2964 movdqu xmm4,XMMWORD PTR[32+rdi] |
| 2965 movdqa xmm12,xmm3 |
| 2966 movdqu xmm5,XMMWORD PTR[48+rdi] |
| 2967 movdqa xmm13,xmm4 |
| 2968 movdqu xmm6,XMMWORD PTR[64+rdi] |
| 2969 movdqa xmm14,xmm5 |
| 2970 movdqu xmm7,XMMWORD PTR[80+rdi] |
| 2971 movdqa xmm15,xmm6 |
| 2972 $L$cbc_dec_loop6_enter:: |
| 2973 lea rdi,QWORD PTR[96+rdi] |
| 2974 movdqa xmm8,xmm7 |
| 2975 |
| 2976 call _aesni_decrypt6 |
| 2977 |
| 2978 pxor xmm2,xmm10 |
| 2979 movdqa xmm10,xmm8 |
| 2980 pxor xmm3,xmm11 |
| 2981 movdqu XMMWORD PTR[rsi],xmm2 |
| 2982 pxor xmm4,xmm12 |
| 2983 movdqu XMMWORD PTR[16+rsi],xmm3 |
| 2984 pxor xmm5,xmm13 |
| 2985 movdqu XMMWORD PTR[32+rsi],xmm4 |
| 2986 pxor xmm6,xmm14 |
| 2987 mov rcx,r11 |
| 2988 movdqu XMMWORD PTR[48+rsi],xmm5 |
| 2989 pxor xmm7,xmm15 |
| 2990 mov eax,r10d |
| 2991 movdqu XMMWORD PTR[64+rsi],xmm6 |
| 2992 lea rsi,QWORD PTR[80+rsi] |
| 2993 sub rdx,060h |
| 2994 ja $L$cbc_dec_loop6 |
| 2995 |
| 2996 movdqa xmm2,xmm7 |
| 2997 add rdx,050h |
| 2998 jle $L$cbc_dec_tail_collected |
| 2999 movups XMMWORD PTR[rsi],xmm7 |
| 3000 lea rsi,QWORD PTR[16+rsi] |
| 3001 |
| 3002 $L$cbc_dec_tail:: |
| 3003 movups xmm2,XMMWORD PTR[rdi] |
| 3004 sub rdx,010h |
| 3005 jbe $L$cbc_dec_one |
| 3006 |
| 3007 movups xmm3,XMMWORD PTR[16+rdi] |
| 3008 movaps xmm11,xmm2 |
| 3009 sub rdx,010h |
| 3010 jbe $L$cbc_dec_two |
| 3011 |
| 3012 movups xmm4,XMMWORD PTR[32+rdi] |
| 3013 movaps xmm12,xmm3 |
| 3014 sub rdx,010h |
| 3015 jbe $L$cbc_dec_three |
| 3016 |
| 3017 movups xmm5,XMMWORD PTR[48+rdi] |
| 3018 movaps xmm13,xmm4 |
| 3019 sub rdx,010h |
| 3020 jbe $L$cbc_dec_four |
| 3021 |
| 3022 movups xmm6,XMMWORD PTR[64+rdi] |
| 3023 movaps xmm14,xmm5 |
| 3024 movaps xmm15,xmm6 |
| 3025 xorps xmm7,xmm7 |
| 3026 call _aesni_decrypt6 |
| 3027 pxor xmm2,xmm10 |
| 3028 movaps xmm10,xmm15 |
| 3029 pxor xmm3,xmm11 |
| 3030 movdqu XMMWORD PTR[rsi],xmm2 |
| 3031 pxor xmm4,xmm12 |
| 3032 movdqu XMMWORD PTR[16+rsi],xmm3 |
| 3033 pxor xmm5,xmm13 |
| 3034 movdqu XMMWORD PTR[32+rsi],xmm4 |
| 3035 pxor xmm6,xmm14 |
| 3036 movdqu XMMWORD PTR[48+rsi],xmm5 |
| 3037 lea rsi,QWORD PTR[64+rsi] |
| 3038 movdqa xmm2,xmm6 |
| 3039 sub rdx,010h |
| 3040 jmp $L$cbc_dec_tail_collected |
| 3041 |
| 3042 ALIGN 16 |
| 3043 $L$cbc_dec_one:: |
| 3044 movaps xmm11,xmm2 |
| 3045 movups xmm0,XMMWORD PTR[rcx] |
| 3046 movups xmm1,XMMWORD PTR[16+rcx] |
| 3047 lea rcx,QWORD PTR[32+rcx] |
| 3048 xorps xmm2,xmm0 |
| 3049 $L$oop_dec1_16:: |
| 3050 DB 102,15,56,222,209 |
| 3051 dec eax |
| 3052 movups xmm1,XMMWORD PTR[rcx] |
| 3053 lea rcx,QWORD PTR[16+rcx] |
| 3054 jnz $L$oop_dec1_16 |
| 3055 DB 102,15,56,223,209 |
| 3056 xorps xmm2,xmm10 |
| 3057 movaps xmm10,xmm11 |
| 3058 jmp $L$cbc_dec_tail_collected |
| 3059 ALIGN 16 |
| 3060 $L$cbc_dec_two:: |
| 3061 movaps xmm12,xmm3 |
| 3062 call _aesni_decrypt2 |
| 3063 pxor xmm2,xmm10 |
| 3064 movaps xmm10,xmm12 |
| 3065 pxor xmm3,xmm11 |
| 3066 movdqu XMMWORD PTR[rsi],xmm2 |
| 3067 movdqa xmm2,xmm3 |
| 3068 lea rsi,QWORD PTR[16+rsi] |
| 3069 jmp $L$cbc_dec_tail_collected |
| 3070 ALIGN 16 |
| 3071 $L$cbc_dec_three:: |
| 3072 movaps xmm13,xmm4 |
| 3073 call _aesni_decrypt3 |
| 3074 pxor xmm2,xmm10 |
| 3075 movaps xmm10,xmm13 |
| 3076 pxor xmm3,xmm11 |
| 3077 movdqu XMMWORD PTR[rsi],xmm2 |
| 3078 pxor xmm4,xmm12 |
| 3079 movdqu XMMWORD PTR[16+rsi],xmm3 |
| 3080 movdqa xmm2,xmm4 |
| 3081 lea rsi,QWORD PTR[32+rsi] |
| 3082 jmp $L$cbc_dec_tail_collected |
| 3083 ALIGN 16 |
| 3084 $L$cbc_dec_four:: |
| 3085 movaps xmm14,xmm5 |
| 3086 call _aesni_decrypt4 |
| 3087 pxor xmm2,xmm10 |
| 3088 movaps xmm10,xmm14 |
| 3089 pxor xmm3,xmm11 |
| 3090 movdqu XMMWORD PTR[rsi],xmm2 |
| 3091 pxor xmm4,xmm12 |
| 3092 movdqu XMMWORD PTR[16+rsi],xmm3 |
| 3093 pxor xmm5,xmm13 |
| 3094 movdqu XMMWORD PTR[32+rsi],xmm4 |
| 3095 movdqa xmm2,xmm5 |
| 3096 lea rsi,QWORD PTR[48+rsi] |
| 3097 jmp $L$cbc_dec_tail_collected |
| 3098 |
| 3099 ALIGN 16 |
| 3100 $L$cbc_dec_tail_collected:: |
| 3101 movups XMMWORD PTR[r8],xmm10 |
| 3102 and rdx,15 |
| 3103 jnz $L$cbc_dec_tail_partial |
| 3104 movups XMMWORD PTR[rsi],xmm2 |
| 3105 jmp $L$cbc_dec_ret |
| 3106 ALIGN 16 |
| 3107 $L$cbc_dec_tail_partial:: |
| 3108 movaps XMMWORD PTR[rsp],xmm2 |
| 3109 mov rcx,16 |
| 3110 mov rdi,rsi |
| 3111 sub rcx,rdx |
| 3112 lea rsi,QWORD PTR[rsp] |
| 3113 DD 09066A4F3h |
| 3114 |
| 3115 $L$cbc_dec_ret:: |
| 3116 movaps xmm6,XMMWORD PTR[16+rsp] |
| 3117 movaps xmm7,XMMWORD PTR[32+rsp] |
| 3118 movaps xmm8,XMMWORD PTR[48+rsp] |
| 3119 movaps xmm9,XMMWORD PTR[64+rsp] |
| 3120 movaps xmm10,XMMWORD PTR[80+rsp] |
| 3121 movaps xmm11,XMMWORD PTR[96+rsp] |
| 3122 movaps xmm12,XMMWORD PTR[112+rsp] |
| 3123 movaps xmm13,XMMWORD PTR[128+rsp] |
| 3124 movaps xmm14,XMMWORD PTR[144+rsp] |
| 3125 movaps xmm15,XMMWORD PTR[160+rsp] |
| 3126 lea rsp,QWORD PTR[rbp] |
| 3127 pop rbp |
| 3128 $L$cbc_ret:: |
| 3129 mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue |
| 3130 mov rsi,QWORD PTR[16+rsp] |
| 3131 DB 0F3h,0C3h ;repret |
| 3132 $L$SEH_end_aesni_cbc_encrypt:: |
| 3133 aesni_cbc_encrypt ENDP |
| 3134 PUBLIC aesni_set_decrypt_key |
| 3135 |
| 3136 ALIGN 16 |
| 3137 aesni_set_decrypt_key PROC PUBLIC |
| 3138 DB 048h,083h,0ECh,008h |
| 3139 call __aesni_set_encrypt_key |
| 3140 shl edx,4 |
| 3141 test eax,eax |
| 3142 jnz $L$dec_key_ret |
| 3143 lea rcx,QWORD PTR[16+rdx*1+r8] |
| 3144 |
| 3145 movups xmm0,XMMWORD PTR[r8] |
| 3146 movups xmm1,XMMWORD PTR[rcx] |
| 3147 movups XMMWORD PTR[rcx],xmm0 |
| 3148 movups XMMWORD PTR[r8],xmm1 |
| 3149 lea r8,QWORD PTR[16+r8] |
| 3150 lea rcx,QWORD PTR[((-16))+rcx] |
| 3151 |
| 3152 $L$dec_key_inverse:: |
| 3153 movups xmm0,XMMWORD PTR[r8] |
| 3154 movups xmm1,XMMWORD PTR[rcx] |
| 3155 DB 102,15,56,219,192 |
| 3156 DB 102,15,56,219,201 |
| 3157 lea r8,QWORD PTR[16+r8] |
| 3158 lea rcx,QWORD PTR[((-16))+rcx] |
| 3159 movups XMMWORD PTR[16+rcx],xmm0 |
| 3160 movups XMMWORD PTR[(-16)+r8],xmm1 |
| 3161 cmp rcx,r8 |
| 3162 ja $L$dec_key_inverse |
| 3163 |
| 3164 movups xmm0,XMMWORD PTR[r8] |
| 3165 DB 102,15,56,219,192 |
| 3166 movups XMMWORD PTR[rcx],xmm0 |
| 3167 $L$dec_key_ret:: |
| 3168 add rsp,8 |
| 3169 DB 0F3h,0C3h ;repret |
| 3170 $L$SEH_end_set_decrypt_key:: |
| 3171 aesni_set_decrypt_key ENDP |
| 3172 PUBLIC aesni_set_encrypt_key |
| 3173 |
| 3174 ALIGN 16 |
| 3175 aesni_set_encrypt_key PROC PUBLIC |
| 3176 __aesni_set_encrypt_key:: |
| 3177 DB 048h,083h,0ECh,008h |
| 3178 mov rax,-1 |
| 3179 test rcx,rcx |
| 3180 jz $L$enc_key_ret |
| 3181 test r8,r8 |
| 3182 jz $L$enc_key_ret |
| 3183 |
| 3184 movups xmm0,XMMWORD PTR[rcx] |
| 3185 xorps xmm4,xmm4 |
| 3186 lea rax,QWORD PTR[16+r8] |
| 3187 cmp edx,256 |
| 3188 je $L$14rounds |
| 3189 cmp edx,192 |
| 3190 je $L$12rounds |
| 3191 cmp edx,128 |
| 3192 jne $L$bad_keybits |
| 3193 |
| 3194 $L$10rounds:: |
| 3195 mov edx,9 |
| 3196 movups XMMWORD PTR[r8],xmm0 |
| 3197 DB 102,15,58,223,200,1 |
| 3198 call $L$key_expansion_128_cold |
| 3199 DB 102,15,58,223,200,2 |
| 3200 call $L$key_expansion_128 |
| 3201 DB 102,15,58,223,200,4 |
| 3202 call $L$key_expansion_128 |
| 3203 DB 102,15,58,223,200,8 |
| 3204 call $L$key_expansion_128 |
| 3205 DB 102,15,58,223,200,16 |
| 3206 call $L$key_expansion_128 |
| 3207 DB 102,15,58,223,200,32 |
| 3208 call $L$key_expansion_128 |
| 3209 DB 102,15,58,223,200,64 |
| 3210 call $L$key_expansion_128 |
| 3211 DB 102,15,58,223,200,128 |
| 3212 call $L$key_expansion_128 |
| 3213 DB 102,15,58,223,200,27 |
| 3214 call $L$key_expansion_128 |
| 3215 DB 102,15,58,223,200,54 |
| 3216 call $L$key_expansion_128 |
| 3217 movups XMMWORD PTR[rax],xmm0 |
| 3218 mov DWORD PTR[80+rax],edx |
| 3219 xor eax,eax |
| 3220 jmp $L$enc_key_ret |
| 3221 |
| 3222 ALIGN 16 |
| 3223 $L$12rounds:: |
| 3224 movq xmm2,QWORD PTR[16+rcx] |
| 3225 mov edx,11 |
| 3226 movups XMMWORD PTR[r8],xmm0 |
| 3227 DB 102,15,58,223,202,1 |
| 3228 call $L$key_expansion_192a_cold |
| 3229 DB 102,15,58,223,202,2 |
| 3230 call $L$key_expansion_192b |
| 3231 DB 102,15,58,223,202,4 |
| 3232 call $L$key_expansion_192a |
| 3233 DB 102,15,58,223,202,8 |
| 3234 call $L$key_expansion_192b |
| 3235 DB 102,15,58,223,202,16 |
| 3236 call $L$key_expansion_192a |
| 3237 DB 102,15,58,223,202,32 |
| 3238 call $L$key_expansion_192b |
| 3239 DB 102,15,58,223,202,64 |
| 3240 call $L$key_expansion_192a |
| 3241 DB 102,15,58,223,202,128 |
| 3242 call $L$key_expansion_192b |
| 3243 movups XMMWORD PTR[rax],xmm0 |
| 3244 mov DWORD PTR[48+rax],edx |
| 3245 xor rax,rax |
| 3246 jmp $L$enc_key_ret |
| 3247 |
| 3248 ALIGN 16 |
| 3249 $L$14rounds:: |
| 3250 movups xmm2,XMMWORD PTR[16+rcx] |
| 3251 mov edx,13 |
| 3252 lea rax,QWORD PTR[16+rax] |
| 3253 movups XMMWORD PTR[r8],xmm0 |
| 3254 movups XMMWORD PTR[16+r8],xmm2 |
| 3255 DB 102,15,58,223,202,1 |
| 3256 call $L$key_expansion_256a_cold |
| 3257 DB 102,15,58,223,200,1 |
| 3258 call $L$key_expansion_256b |
| 3259 DB 102,15,58,223,202,2 |
| 3260 call $L$key_expansion_256a |
| 3261 DB 102,15,58,223,200,2 |
| 3262 call $L$key_expansion_256b |
| 3263 DB 102,15,58,223,202,4 |
| 3264 call $L$key_expansion_256a |
| 3265 DB 102,15,58,223,200,4 |
| 3266 call $L$key_expansion_256b |
| 3267 DB 102,15,58,223,202,8 |
| 3268 call $L$key_expansion_256a |
| 3269 DB 102,15,58,223,200,8 |
| 3270 call $L$key_expansion_256b |
| 3271 DB 102,15,58,223,202,16 |
| 3272 call $L$key_expansion_256a |
| 3273 DB 102,15,58,223,200,16 |
| 3274 call $L$key_expansion_256b |
| 3275 DB 102,15,58,223,202,32 |
| 3276 call $L$key_expansion_256a |
| 3277 DB 102,15,58,223,200,32 |
| 3278 call $L$key_expansion_256b |
| 3279 DB 102,15,58,223,202,64 |
| 3280 call $L$key_expansion_256a |
| 3281 movups XMMWORD PTR[rax],xmm0 |
| 3282 mov DWORD PTR[16+rax],edx |
| 3283 xor rax,rax |
| 3284 jmp $L$enc_key_ret |
| 3285 |
| 3286 ALIGN 16 |
| 3287 $L$bad_keybits:: |
| 3288 mov rax,-2 |
| 3289 $L$enc_key_ret:: |
| 3290 add rsp,8 |
| 3291 DB 0F3h,0C3h ;repret |
| 3292 $L$SEH_end_set_encrypt_key:: |
| 3293 |
| 3294 ALIGN 16 |
| 3295 $L$key_expansion_128:: |
| 3296 movups XMMWORD PTR[rax],xmm0 |
| 3297 lea rax,QWORD PTR[16+rax] |
| 3298 $L$key_expansion_128_cold:: |
| 3299 shufps xmm4,xmm0,16 |
| 3300 xorps xmm0,xmm4 |
| 3301 shufps xmm4,xmm0,140 |
| 3302 xorps xmm0,xmm4 |
| 3303 shufps xmm1,xmm1,255 |
| 3304 xorps xmm0,xmm1 |
| 3305 DB 0F3h,0C3h ;repret |
| 3306 |
| 3307 ALIGN 16 |
| 3308 $L$key_expansion_192a:: |
| 3309 movups XMMWORD PTR[rax],xmm0 |
| 3310 lea rax,QWORD PTR[16+rax] |
| 3311 $L$key_expansion_192a_cold:: |
| 3312 movaps xmm5,xmm2 |
| 3313 $L$key_expansion_192b_warm:: |
| 3314 shufps xmm4,xmm0,16 |
| 3315 movdqa xmm3,xmm2 |
| 3316 xorps xmm0,xmm4 |
| 3317 shufps xmm4,xmm0,140 |
| 3318 pslldq xmm3,4 |
| 3319 xorps xmm0,xmm4 |
| 3320 pshufd xmm1,xmm1,85 |
| 3321 pxor xmm2,xmm3 |
| 3322 pxor xmm0,xmm1 |
| 3323 pshufd xmm3,xmm0,255 |
| 3324 pxor xmm2,xmm3 |
| 3325 DB 0F3h,0C3h ;repret |
| 3326 |
| 3327 ALIGN 16 |
| 3328 $L$key_expansion_192b:: |
| 3329 movaps xmm3,xmm0 |
| 3330 shufps xmm5,xmm0,68 |
| 3331 movups XMMWORD PTR[rax],xmm5 |
| 3332 shufps xmm3,xmm2,78 |
| 3333 movups XMMWORD PTR[16+rax],xmm3 |
| 3334 lea rax,QWORD PTR[32+rax] |
| 3335 jmp $L$key_expansion_192b_warm |
| 3336 |
| 3337 ALIGN 16 |
| 3338 $L$key_expansion_256a:: |
| 3339 movups XMMWORD PTR[rax],xmm2 |
| 3340 lea rax,QWORD PTR[16+rax] |
| 3341 $L$key_expansion_256a_cold:: |
| 3342 shufps xmm4,xmm0,16 |
| 3343 xorps xmm0,xmm4 |
| 3344 shufps xmm4,xmm0,140 |
| 3345 xorps xmm0,xmm4 |
| 3346 shufps xmm1,xmm1,255 |
| 3347 xorps xmm0,xmm1 |
| 3348 DB 0F3h,0C3h ;repret |
| 3349 |
| 3350 ALIGN 16 |
| 3351 $L$key_expansion_256b:: |
| 3352 movups XMMWORD PTR[rax],xmm0 |
| 3353 lea rax,QWORD PTR[16+rax] |
| 3354 |
| 3355 shufps xmm4,xmm2,16 |
| 3356 xorps xmm2,xmm4 |
| 3357 shufps xmm4,xmm2,140 |
| 3358 xorps xmm2,xmm4 |
| 3359 shufps xmm1,xmm1,170 |
| 3360 xorps xmm2,xmm1 |
| 3361 DB 0F3h,0C3h ;repret |
| 3362 aesni_set_encrypt_key ENDP |
| 3363 |
| 3364 ALIGN 64 |
| 3365 $L$bswap_mask:: |
| 3366 DB 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0 |
| 3367 $L$increment32:: |
| 3368 DD 6,6,6,0 |
| 3369 $L$increment64:: |
| 3370 DD 1,0,0,0 |
| 3371 $L$xts_magic:: |
| 3372 DD 087h,0,1,0 |
| 3373 $L$increment1:: |
| 3374 DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 |
| 3375 |
| 3376 DB 65,69,83,32,102,111,114,32,73,110,116,101,108,32,65,69 |
| 3377 DB 83,45,78,73,44,32,67,82,89,80,84,79,71,65,77,83 |
| 3378 DB 32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115 |
| 3379 DB 115,108,46,111,114,103,62,0 |
| 3380 ALIGN 64 |
| 3381 EXTERN __imp_RtlVirtualUnwind:NEAR |
| 3382 |
| 3383 ALIGN 16 |
| 3384 ecb_se_handler PROC PRIVATE |
| 3385 push rsi |
| 3386 push rdi |
| 3387 push rbx |
| 3388 push rbp |
| 3389 push r12 |
| 3390 push r13 |
| 3391 push r14 |
| 3392 push r15 |
| 3393 pushfq |
| 3394 sub rsp,64 |
| 3395 |
| 3396 mov rax,QWORD PTR[152+r8] |
| 3397 |
| 3398 jmp $L$common_seh_tail |
| 3399 ecb_se_handler ENDP |
| 3400 |
| 3401 |
| 3402 ALIGN 16 |
| 3403 ccm64_se_handler PROC PRIVATE |
| 3404 push rsi |
| 3405 push rdi |
| 3406 push rbx |
| 3407 push rbp |
| 3408 push r12 |
| 3409 push r13 |
| 3410 push r14 |
| 3411 push r15 |
| 3412 pushfq |
| 3413 sub rsp,64 |
| 3414 |
| 3415 mov rax,QWORD PTR[120+r8] |
| 3416 mov rbx,QWORD PTR[248+r8] |
| 3417 |
| 3418 mov rsi,QWORD PTR[8+r9] |
| 3419 mov r11,QWORD PTR[56+r9] |
| 3420 |
| 3421 mov r10d,DWORD PTR[r11] |
| 3422 lea r10,QWORD PTR[r10*1+rsi] |
| 3423 cmp rbx,r10 |
| 3424 jb $L$common_seh_tail |
| 3425 |
| 3426 mov rax,QWORD PTR[152+r8] |
| 3427 |
| 3428 mov r10d,DWORD PTR[4+r11] |
| 3429 lea r10,QWORD PTR[r10*1+rsi] |
| 3430 cmp rbx,r10 |
| 3431 jae $L$common_seh_tail |
| 3432 |
| 3433 lea rsi,QWORD PTR[rax] |
| 3434 lea rdi,QWORD PTR[512+r8] |
| 3435 mov ecx,8 |
| 3436 DD 0a548f3fch |
| 3437 lea rax,QWORD PTR[88+rax] |
| 3438 |
| 3439 jmp $L$common_seh_tail |
| 3440 ccm64_se_handler ENDP |
| 3441 |
| 3442 |
| 3443 ALIGN 16 |
| 3444 ctr_xts_se_handler PROC PRIVATE |
| 3445 push rsi |
| 3446 push rdi |
| 3447 push rbx |
| 3448 push rbp |
| 3449 push r12 |
| 3450 push r13 |
| 3451 push r14 |
| 3452 push r15 |
| 3453 pushfq |
| 3454 sub rsp,64 |
| 3455 |
| 3456 mov rax,QWORD PTR[120+r8] |
| 3457 mov rbx,QWORD PTR[248+r8] |
| 3458 |
| 3459 mov rsi,QWORD PTR[8+r9] |
| 3460 mov r11,QWORD PTR[56+r9] |
| 3461 |
| 3462 mov r10d,DWORD PTR[r11] |
| 3463 lea r10,QWORD PTR[r10*1+rsi] |
| 3464 cmp rbx,r10 |
| 3465 jb $L$common_seh_tail |
| 3466 |
| 3467 mov rax,QWORD PTR[152+r8] |
| 3468 |
| 3469 mov r10d,DWORD PTR[4+r11] |
| 3470 lea r10,QWORD PTR[r10*1+rsi] |
| 3471 cmp rbx,r10 |
| 3472 jae $L$common_seh_tail |
| 3473 |
| 3474 mov rax,QWORD PTR[160+r8] |
| 3475 lea rsi,QWORD PTR[((-160))+rax] |
| 3476 lea rdi,QWORD PTR[512+r8] |
| 3477 mov ecx,20 |
| 3478 DD 0a548f3fch |
| 3479 |
| 3480 jmp $L$common_rbp_tail |
| 3481 ctr_xts_se_handler ENDP |
| 3482 |
| 3483 ALIGN 16 |
| 3484 cbc_se_handler PROC PRIVATE |
| 3485 push rsi |
| 3486 push rdi |
| 3487 push rbx |
| 3488 push rbp |
| 3489 push r12 |
| 3490 push r13 |
| 3491 push r14 |
| 3492 push r15 |
| 3493 pushfq |
| 3494 sub rsp,64 |
| 3495 |
| 3496 mov rax,QWORD PTR[152+r8] |
| 3497 mov rbx,QWORD PTR[248+r8] |
| 3498 |
| 3499 lea r10,QWORD PTR[$L$cbc_decrypt] |
| 3500 cmp rbx,r10 |
| 3501 jb $L$common_seh_tail |
| 3502 |
| 3503 lea r10,QWORD PTR[$L$cbc_decrypt_body] |
| 3504 cmp rbx,r10 |
| 3505 jb $L$restore_cbc_rax |
| 3506 |
| 3507 lea r10,QWORD PTR[$L$cbc_ret] |
| 3508 cmp rbx,r10 |
| 3509 jae $L$common_seh_tail |
| 3510 |
| 3511 lea rsi,QWORD PTR[16+rax] |
| 3512 lea rdi,QWORD PTR[512+r8] |
| 3513 mov ecx,20 |
| 3514 DD 0a548f3fch |
| 3515 |
| 3516 $L$common_rbp_tail:: |
| 3517 mov rax,QWORD PTR[160+r8] |
| 3518 mov rbp,QWORD PTR[rax] |
| 3519 lea rax,QWORD PTR[8+rax] |
| 3520 mov QWORD PTR[160+r8],rbp |
| 3521 jmp $L$common_seh_tail |
| 3522 |
| 3523 $L$restore_cbc_rax:: |
| 3524 mov rax,QWORD PTR[120+r8] |
| 3525 |
| 3526 $L$common_seh_tail:: |
| 3527 mov rdi,QWORD PTR[8+rax] |
| 3528 mov rsi,QWORD PTR[16+rax] |
| 3529 mov QWORD PTR[152+r8],rax |
| 3530 mov QWORD PTR[168+r8],rsi |
| 3531 mov QWORD PTR[176+r8],rdi |
| 3532 |
| 3533 mov rdi,QWORD PTR[40+r9] |
| 3534 mov rsi,r8 |
| 3535 mov ecx,154 |
| 3536 DD 0a548f3fch |
| 3537 |
| 3538 mov rsi,r9 |
| 3539 xor rcx,rcx |
| 3540 mov rdx,QWORD PTR[8+rsi] |
| 3541 mov r8,QWORD PTR[rsi] |
| 3542 mov r9,QWORD PTR[16+rsi] |
| 3543 mov r10,QWORD PTR[40+rsi] |
| 3544 lea r11,QWORD PTR[56+rsi] |
| 3545 lea r12,QWORD PTR[24+rsi] |
| 3546 mov QWORD PTR[32+rsp],r10 |
| 3547 mov QWORD PTR[40+rsp],r11 |
| 3548 mov QWORD PTR[48+rsp],r12 |
| 3549 mov QWORD PTR[56+rsp],rcx |
| 3550 call QWORD PTR[__imp_RtlVirtualUnwind] |
| 3551 |
| 3552 mov eax,1 |
| 3553 add rsp,64 |
| 3554 popfq |
| 3555 pop r15 |
| 3556 pop r14 |
| 3557 pop r13 |
| 3558 pop r12 |
| 3559 pop rbp |
| 3560 pop rbx |
| 3561 pop rdi |
| 3562 pop rsi |
| 3563 DB 0F3h,0C3h ;repret |
| 3564 cbc_se_handler ENDP |
| 3565 |
| 3566 .text$ ENDS |
| 3567 .pdata SEGMENT READONLY ALIGN(4) |
| 3568 ALIGN 4 |
| 3569 DD imagerel $L$SEH_begin_aesni_ecb_encrypt |
| 3570 DD imagerel $L$SEH_end_aesni_ecb_encrypt |
| 3571 DD imagerel $L$SEH_info_ecb |
| 3572 |
| 3573 DD imagerel $L$SEH_begin_aesni_ccm64_encrypt_blocks |
| 3574 DD imagerel $L$SEH_end_aesni_ccm64_encrypt_blocks |
| 3575 DD imagerel $L$SEH_info_ccm64_enc |
| 3576 |
| 3577 DD imagerel $L$SEH_begin_aesni_ccm64_decrypt_blocks |
| 3578 DD imagerel $L$SEH_end_aesni_ccm64_decrypt_blocks |
| 3579 DD imagerel $L$SEH_info_ccm64_dec |
| 3580 |
| 3581 DD imagerel $L$SEH_begin_aesni_ctr32_encrypt_blocks |
| 3582 DD imagerel $L$SEH_end_aesni_ctr32_encrypt_blocks |
| 3583 DD imagerel $L$SEH_info_ctr32 |
| 3584 |
| 3585 DD imagerel $L$SEH_begin_aesni_xts_encrypt |
| 3586 DD imagerel $L$SEH_end_aesni_xts_encrypt |
| 3587 DD imagerel $L$SEH_info_xts_enc |
| 3588 |
| 3589 DD imagerel $L$SEH_begin_aesni_xts_decrypt |
| 3590 DD imagerel $L$SEH_end_aesni_xts_decrypt |
| 3591 DD imagerel $L$SEH_info_xts_dec |
| 3592 DD imagerel $L$SEH_begin_aesni_cbc_encrypt |
| 3593 DD imagerel $L$SEH_end_aesni_cbc_encrypt |
| 3594 DD imagerel $L$SEH_info_cbc |
| 3595 |
| 3596 DD imagerel aesni_set_decrypt_key |
| 3597 DD imagerel $L$SEH_end_set_decrypt_key |
| 3598 DD imagerel $L$SEH_info_key |
| 3599 |
| 3600 DD imagerel aesni_set_encrypt_key |
| 3601 DD imagerel $L$SEH_end_set_encrypt_key |
| 3602 DD imagerel $L$SEH_info_key |
| 3603 .pdata ENDS |
| 3604 .xdata SEGMENT READONLY ALIGN(8) |
| 3605 ALIGN 8 |
| 3606 $L$SEH_info_ecb:: |
| 3607 DB 9,0,0,0 |
| 3608 DD imagerel ecb_se_handler |
| 3609 $L$SEH_info_ccm64_enc:: |
| 3610 DB 9,0,0,0 |
| 3611 DD imagerel ccm64_se_handler |
| 3612 DD imagerel $L$ccm64_enc_body,imagerel $L$ccm64_enc_ret |
| 3613 $L$SEH_info_ccm64_dec:: |
| 3614 DB 9,0,0,0 |
| 3615 DD imagerel ccm64_se_handler |
| 3616 DD imagerel $L$ccm64_dec_body,imagerel $L$ccm64_dec_ret |
| 3617 $L$SEH_info_ctr32:: |
| 3618 DB 9,0,0,0 |
| 3619 DD imagerel ctr_xts_se_handler |
| 3620 DD imagerel $L$ctr32_body,imagerel $L$ctr32_epilogue |
| 3621 $L$SEH_info_xts_enc:: |
| 3622 DB 9,0,0,0 |
| 3623 DD imagerel ctr_xts_se_handler |
| 3624 DD imagerel $L$xts_enc_body,imagerel $L$xts_enc_epilogue |
| 3625 $L$SEH_info_xts_dec:: |
| 3626 DB 9,0,0,0 |
| 3627 DD imagerel ctr_xts_se_handler |
| 3628 DD imagerel $L$xts_dec_body,imagerel $L$xts_dec_epilogue |
| 3629 $L$SEH_info_cbc:: |
| 3630 DB 9,0,0,0 |
| 3631 DD imagerel cbc_se_handler |
| 3632 $L$SEH_info_key:: |
| 3633 DB 001h,004h,001h,000h |
| 3634 DB 004h,002h,000h,000h |
| 3635 |
| 3636 .xdata ENDS |
| 3637 END |
OLD | NEW |