Home | History | Annotate | Download | only in aes
      1 OPTION	DOTNAME
      2 .text$	SEGMENT ALIGN(256) '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
   3638