Home | History | Annotate | Download | only in aes
      1 %ifidn __OUTPUT_FORMAT__,obj
      2 section	code	use32 class=code align=64
      3 %elifidn __OUTPUT_FORMAT__,win32
      4 %ifdef __YASM_VERSION_ID__
      5 %if __YASM_VERSION_ID__ < 01010000h
      6 %error yasm version 1.1.0 or later needed.
      7 %endif
      8 ; Yasm automatically includes .00 and complains about redefining it.
      9 ; https://www.tortall.net/projects/yasm/manual/html/objfmt-win32-safeseh.html
     10 %else
     11 $@feat.00 equ 1
     12 %endif
     13 section	.text	code align=64
     14 %else
     15 section	.text	code
     16 %endif
     17 align	16
     18 __x86_AES_encrypt_compact:
     19 	mov	DWORD [20+esp],edi
     20 	xor	eax,DWORD [edi]
     21 	xor	ebx,DWORD [4+edi]
     22 	xor	ecx,DWORD [8+edi]
     23 	xor	edx,DWORD [12+edi]
     24 	mov	esi,DWORD [240+edi]
     25 	lea	esi,[esi*1+esi-2]
     26 	lea	esi,[esi*8+edi]
     27 	mov	DWORD [24+esp],esi
     28 	mov	edi,DWORD [ebp-128]
     29 	mov	esi,DWORD [ebp-96]
     30 	mov	edi,DWORD [ebp-64]
     31 	mov	esi,DWORD [ebp-32]
     32 	mov	edi,DWORD [ebp]
     33 	mov	esi,DWORD [32+ebp]
     34 	mov	edi,DWORD [64+ebp]
     35 	mov	esi,DWORD [96+ebp]
     36 align	16
     37 L$000loop:
     38 	mov	esi,eax
     39 	and	esi,255
     40 	movzx	esi,BYTE [esi*1+ebp-128]
     41 	movzx	edi,bh
     42 	movzx	edi,BYTE [edi*1+ebp-128]
     43 	shl	edi,8
     44 	xor	esi,edi
     45 	mov	edi,ecx
     46 	shr	edi,16
     47 	and	edi,255
     48 	movzx	edi,BYTE [edi*1+ebp-128]
     49 	shl	edi,16
     50 	xor	esi,edi
     51 	mov	edi,edx
     52 	shr	edi,24
     53 	movzx	edi,BYTE [edi*1+ebp-128]
     54 	shl	edi,24
     55 	xor	esi,edi
     56 	mov	DWORD [4+esp],esi
     57 	mov	esi,ebx
     58 	and	esi,255
     59 	shr	ebx,16
     60 	movzx	esi,BYTE [esi*1+ebp-128]
     61 	movzx	edi,ch
     62 	movzx	edi,BYTE [edi*1+ebp-128]
     63 	shl	edi,8
     64 	xor	esi,edi
     65 	mov	edi,edx
     66 	shr	edi,16
     67 	and	edi,255
     68 	movzx	edi,BYTE [edi*1+ebp-128]
     69 	shl	edi,16
     70 	xor	esi,edi
     71 	mov	edi,eax
     72 	shr	edi,24
     73 	movzx	edi,BYTE [edi*1+ebp-128]
     74 	shl	edi,24
     75 	xor	esi,edi
     76 	mov	DWORD [8+esp],esi
     77 	mov	esi,ecx
     78 	and	esi,255
     79 	shr	ecx,24
     80 	movzx	esi,BYTE [esi*1+ebp-128]
     81 	movzx	edi,dh
     82 	movzx	edi,BYTE [edi*1+ebp-128]
     83 	shl	edi,8
     84 	xor	esi,edi
     85 	mov	edi,eax
     86 	shr	edi,16
     87 	and	edx,255
     88 	and	edi,255
     89 	movzx	edi,BYTE [edi*1+ebp-128]
     90 	shl	edi,16
     91 	xor	esi,edi
     92 	movzx	edi,bh
     93 	movzx	edi,BYTE [edi*1+ebp-128]
     94 	shl	edi,24
     95 	xor	esi,edi
     96 	and	edx,255
     97 	movzx	edx,BYTE [edx*1+ebp-128]
     98 	movzx	eax,ah
     99 	movzx	eax,BYTE [eax*1+ebp-128]
    100 	shl	eax,8
    101 	xor	edx,eax
    102 	mov	eax,DWORD [4+esp]
    103 	and	ebx,255
    104 	movzx	ebx,BYTE [ebx*1+ebp-128]
    105 	shl	ebx,16
    106 	xor	edx,ebx
    107 	mov	ebx,DWORD [8+esp]
    108 	movzx	ecx,BYTE [ecx*1+ebp-128]
    109 	shl	ecx,24
    110 	xor	edx,ecx
    111 	mov	ecx,esi
    112 	mov	ebp,2155905152
    113 	and	ebp,ecx
    114 	lea	edi,[ecx*1+ecx]
    115 	mov	esi,ebp
    116 	shr	ebp,7
    117 	and	edi,4278124286
    118 	sub	esi,ebp
    119 	mov	ebp,ecx
    120 	and	esi,454761243
    121 	ror	ebp,16
    122 	xor	esi,edi
    123 	mov	edi,ecx
    124 	xor	ecx,esi
    125 	ror	edi,24
    126 	xor	esi,ebp
    127 	rol	ecx,24
    128 	xor	esi,edi
    129 	mov	ebp,2155905152
    130 	xor	ecx,esi
    131 	and	ebp,edx
    132 	lea	edi,[edx*1+edx]
    133 	mov	esi,ebp
    134 	shr	ebp,7
    135 	and	edi,4278124286
    136 	sub	esi,ebp
    137 	mov	ebp,edx
    138 	and	esi,454761243
    139 	ror	ebp,16
    140 	xor	esi,edi
    141 	mov	edi,edx
    142 	xor	edx,esi
    143 	ror	edi,24
    144 	xor	esi,ebp
    145 	rol	edx,24
    146 	xor	esi,edi
    147 	mov	ebp,2155905152
    148 	xor	edx,esi
    149 	and	ebp,eax
    150 	lea	edi,[eax*1+eax]
    151 	mov	esi,ebp
    152 	shr	ebp,7
    153 	and	edi,4278124286
    154 	sub	esi,ebp
    155 	mov	ebp,eax
    156 	and	esi,454761243
    157 	ror	ebp,16
    158 	xor	esi,edi
    159 	mov	edi,eax
    160 	xor	eax,esi
    161 	ror	edi,24
    162 	xor	esi,ebp
    163 	rol	eax,24
    164 	xor	esi,edi
    165 	mov	ebp,2155905152
    166 	xor	eax,esi
    167 	and	ebp,ebx
    168 	lea	edi,[ebx*1+ebx]
    169 	mov	esi,ebp
    170 	shr	ebp,7
    171 	and	edi,4278124286
    172 	sub	esi,ebp
    173 	mov	ebp,ebx
    174 	and	esi,454761243
    175 	ror	ebp,16
    176 	xor	esi,edi
    177 	mov	edi,ebx
    178 	xor	ebx,esi
    179 	ror	edi,24
    180 	xor	esi,ebp
    181 	rol	ebx,24
    182 	xor	esi,edi
    183 	xor	ebx,esi
    184 	mov	edi,DWORD [20+esp]
    185 	mov	ebp,DWORD [28+esp]
    186 	add	edi,16
    187 	xor	eax,DWORD [edi]
    188 	xor	ebx,DWORD [4+edi]
    189 	xor	ecx,DWORD [8+edi]
    190 	xor	edx,DWORD [12+edi]
    191 	cmp	edi,DWORD [24+esp]
    192 	mov	DWORD [20+esp],edi
    193 	jb	NEAR L$000loop
    194 	mov	esi,eax
    195 	and	esi,255
    196 	movzx	esi,BYTE [esi*1+ebp-128]
    197 	movzx	edi,bh
    198 	movzx	edi,BYTE [edi*1+ebp-128]
    199 	shl	edi,8
    200 	xor	esi,edi
    201 	mov	edi,ecx
    202 	shr	edi,16
    203 	and	edi,255
    204 	movzx	edi,BYTE [edi*1+ebp-128]
    205 	shl	edi,16
    206 	xor	esi,edi
    207 	mov	edi,edx
    208 	shr	edi,24
    209 	movzx	edi,BYTE [edi*1+ebp-128]
    210 	shl	edi,24
    211 	xor	esi,edi
    212 	mov	DWORD [4+esp],esi
    213 	mov	esi,ebx
    214 	and	esi,255
    215 	shr	ebx,16
    216 	movzx	esi,BYTE [esi*1+ebp-128]
    217 	movzx	edi,ch
    218 	movzx	edi,BYTE [edi*1+ebp-128]
    219 	shl	edi,8
    220 	xor	esi,edi
    221 	mov	edi,edx
    222 	shr	edi,16
    223 	and	edi,255
    224 	movzx	edi,BYTE [edi*1+ebp-128]
    225 	shl	edi,16
    226 	xor	esi,edi
    227 	mov	edi,eax
    228 	shr	edi,24
    229 	movzx	edi,BYTE [edi*1+ebp-128]
    230 	shl	edi,24
    231 	xor	esi,edi
    232 	mov	DWORD [8+esp],esi
    233 	mov	esi,ecx
    234 	and	esi,255
    235 	shr	ecx,24
    236 	movzx	esi,BYTE [esi*1+ebp-128]
    237 	movzx	edi,dh
    238 	movzx	edi,BYTE [edi*1+ebp-128]
    239 	shl	edi,8
    240 	xor	esi,edi
    241 	mov	edi,eax
    242 	shr	edi,16
    243 	and	edx,255
    244 	and	edi,255
    245 	movzx	edi,BYTE [edi*1+ebp-128]
    246 	shl	edi,16
    247 	xor	esi,edi
    248 	movzx	edi,bh
    249 	movzx	edi,BYTE [edi*1+ebp-128]
    250 	shl	edi,24
    251 	xor	esi,edi
    252 	mov	edi,DWORD [20+esp]
    253 	and	edx,255
    254 	movzx	edx,BYTE [edx*1+ebp-128]
    255 	movzx	eax,ah
    256 	movzx	eax,BYTE [eax*1+ebp-128]
    257 	shl	eax,8
    258 	xor	edx,eax
    259 	mov	eax,DWORD [4+esp]
    260 	and	ebx,255
    261 	movzx	ebx,BYTE [ebx*1+ebp-128]
    262 	shl	ebx,16
    263 	xor	edx,ebx
    264 	mov	ebx,DWORD [8+esp]
    265 	movzx	ecx,BYTE [ecx*1+ebp-128]
    266 	shl	ecx,24
    267 	xor	edx,ecx
    268 	mov	ecx,esi
    269 	xor	eax,DWORD [16+edi]
    270 	xor	ebx,DWORD [20+edi]
    271 	xor	ecx,DWORD [24+edi]
    272 	xor	edx,DWORD [28+edi]
    273 	ret
    274 align	16
    275 __sse_AES_encrypt_compact:
    276 	pxor	mm0,[edi]
    277 	pxor	mm4,[8+edi]
    278 	mov	esi,DWORD [240+edi]
    279 	lea	esi,[esi*1+esi-2]
    280 	lea	esi,[esi*8+edi]
    281 	mov	DWORD [24+esp],esi
    282 	mov	eax,454761243
    283 	mov	DWORD [8+esp],eax
    284 	mov	DWORD [12+esp],eax
    285 	mov	eax,DWORD [ebp-128]
    286 	mov	ebx,DWORD [ebp-96]
    287 	mov	ecx,DWORD [ebp-64]
    288 	mov	edx,DWORD [ebp-32]
    289 	mov	eax,DWORD [ebp]
    290 	mov	ebx,DWORD [32+ebp]
    291 	mov	ecx,DWORD [64+ebp]
    292 	mov	edx,DWORD [96+ebp]
    293 align	16
    294 L$001loop:
    295 	pshufw	mm1,mm0,8
    296 	pshufw	mm5,mm4,13
    297 	movd	eax,mm1
    298 	movd	ebx,mm5
    299 	mov	DWORD [20+esp],edi
    300 	movzx	esi,al
    301 	movzx	edx,ah
    302 	pshufw	mm2,mm0,13
    303 	movzx	ecx,BYTE [esi*1+ebp-128]
    304 	movzx	edi,bl
    305 	movzx	edx,BYTE [edx*1+ebp-128]
    306 	shr	eax,16
    307 	shl	edx,8
    308 	movzx	esi,BYTE [edi*1+ebp-128]
    309 	movzx	edi,bh
    310 	shl	esi,16
    311 	pshufw	mm6,mm4,8
    312 	or	ecx,esi
    313 	movzx	esi,BYTE [edi*1+ebp-128]
    314 	movzx	edi,ah
    315 	shl	esi,24
    316 	shr	ebx,16
    317 	or	edx,esi
    318 	movzx	esi,BYTE [edi*1+ebp-128]
    319 	movzx	edi,bh
    320 	shl	esi,8
    321 	or	ecx,esi
    322 	movzx	esi,BYTE [edi*1+ebp-128]
    323 	movzx	edi,al
    324 	shl	esi,24
    325 	or	ecx,esi
    326 	movzx	esi,BYTE [edi*1+ebp-128]
    327 	movzx	edi,bl
    328 	movd	eax,mm2
    329 	movd	mm0,ecx
    330 	movzx	ecx,BYTE [edi*1+ebp-128]
    331 	movzx	edi,ah
    332 	shl	ecx,16
    333 	movd	ebx,mm6
    334 	or	ecx,esi
    335 	movzx	esi,BYTE [edi*1+ebp-128]
    336 	movzx	edi,bh
    337 	shl	esi,24
    338 	or	ecx,esi
    339 	movzx	esi,BYTE [edi*1+ebp-128]
    340 	movzx	edi,bl
    341 	shl	esi,8
    342 	shr	ebx,16
    343 	or	ecx,esi
    344 	movzx	esi,BYTE [edi*1+ebp-128]
    345 	movzx	edi,al
    346 	shr	eax,16
    347 	movd	mm1,ecx
    348 	movzx	ecx,BYTE [edi*1+ebp-128]
    349 	movzx	edi,ah
    350 	shl	ecx,16
    351 	and	eax,255
    352 	or	ecx,esi
    353 	punpckldq	mm0,mm1
    354 	movzx	esi,BYTE [edi*1+ebp-128]
    355 	movzx	edi,bh
    356 	shl	esi,24
    357 	and	ebx,255
    358 	movzx	eax,BYTE [eax*1+ebp-128]
    359 	or	ecx,esi
    360 	shl	eax,16
    361 	movzx	esi,BYTE [edi*1+ebp-128]
    362 	or	edx,eax
    363 	shl	esi,8
    364 	movzx	ebx,BYTE [ebx*1+ebp-128]
    365 	or	ecx,esi
    366 	or	edx,ebx
    367 	mov	edi,DWORD [20+esp]
    368 	movd	mm4,ecx
    369 	movd	mm5,edx
    370 	punpckldq	mm4,mm5
    371 	add	edi,16
    372 	cmp	edi,DWORD [24+esp]
    373 	ja	NEAR L$002out
    374 	movq	mm2,[8+esp]
    375 	pxor	mm3,mm3
    376 	pxor	mm7,mm7
    377 	movq	mm1,mm0
    378 	movq	mm5,mm4
    379 	pcmpgtb	mm3,mm0
    380 	pcmpgtb	mm7,mm4
    381 	pand	mm3,mm2
    382 	pand	mm7,mm2
    383 	pshufw	mm2,mm0,177
    384 	pshufw	mm6,mm4,177
    385 	paddb	mm0,mm0
    386 	paddb	mm4,mm4
    387 	pxor	mm0,mm3
    388 	pxor	mm4,mm7
    389 	pshufw	mm3,mm2,177
    390 	pshufw	mm7,mm6,177
    391 	pxor	mm1,mm0
    392 	pxor	mm5,mm4
    393 	pxor	mm0,mm2
    394 	pxor	mm4,mm6
    395 	movq	mm2,mm3
    396 	movq	mm6,mm7
    397 	pslld	mm3,8
    398 	pslld	mm7,8
    399 	psrld	mm2,24
    400 	psrld	mm6,24
    401 	pxor	mm0,mm3
    402 	pxor	mm4,mm7
    403 	pxor	mm0,mm2
    404 	pxor	mm4,mm6
    405 	movq	mm3,mm1
    406 	movq	mm7,mm5
    407 	movq	mm2,[edi]
    408 	movq	mm6,[8+edi]
    409 	psrld	mm1,8
    410 	psrld	mm5,8
    411 	mov	eax,DWORD [ebp-128]
    412 	pslld	mm3,24
    413 	pslld	mm7,24
    414 	mov	ebx,DWORD [ebp-64]
    415 	pxor	mm0,mm1
    416 	pxor	mm4,mm5
    417 	mov	ecx,DWORD [ebp]
    418 	pxor	mm0,mm3
    419 	pxor	mm4,mm7
    420 	mov	edx,DWORD [64+ebp]
    421 	pxor	mm0,mm2
    422 	pxor	mm4,mm6
    423 	jmp	NEAR L$001loop
    424 align	16
    425 L$002out:
    426 	pxor	mm0,[edi]
    427 	pxor	mm4,[8+edi]
    428 	ret
    429 align	16
    430 __x86_AES_encrypt:
    431 	mov	DWORD [20+esp],edi
    432 	xor	eax,DWORD [edi]
    433 	xor	ebx,DWORD [4+edi]
    434 	xor	ecx,DWORD [8+edi]
    435 	xor	edx,DWORD [12+edi]
    436 	mov	esi,DWORD [240+edi]
    437 	lea	esi,[esi*1+esi-2]
    438 	lea	esi,[esi*8+edi]
    439 	mov	DWORD [24+esp],esi
    440 align	16
    441 L$003loop:
    442 	mov	esi,eax
    443 	and	esi,255
    444 	mov	esi,DWORD [esi*8+ebp]
    445 	movzx	edi,bh
    446 	xor	esi,DWORD [3+edi*8+ebp]
    447 	mov	edi,ecx
    448 	shr	edi,16
    449 	and	edi,255
    450 	xor	esi,DWORD [2+edi*8+ebp]
    451 	mov	edi,edx
    452 	shr	edi,24
    453 	xor	esi,DWORD [1+edi*8+ebp]
    454 	mov	DWORD [4+esp],esi
    455 	mov	esi,ebx
    456 	and	esi,255
    457 	shr	ebx,16
    458 	mov	esi,DWORD [esi*8+ebp]
    459 	movzx	edi,ch
    460 	xor	esi,DWORD [3+edi*8+ebp]
    461 	mov	edi,edx
    462 	shr	edi,16
    463 	and	edi,255
    464 	xor	esi,DWORD [2+edi*8+ebp]
    465 	mov	edi,eax
    466 	shr	edi,24
    467 	xor	esi,DWORD [1+edi*8+ebp]
    468 	mov	DWORD [8+esp],esi
    469 	mov	esi,ecx
    470 	and	esi,255
    471 	shr	ecx,24
    472 	mov	esi,DWORD [esi*8+ebp]
    473 	movzx	edi,dh
    474 	xor	esi,DWORD [3+edi*8+ebp]
    475 	mov	edi,eax
    476 	shr	edi,16
    477 	and	edx,255
    478 	and	edi,255
    479 	xor	esi,DWORD [2+edi*8+ebp]
    480 	movzx	edi,bh
    481 	xor	esi,DWORD [1+edi*8+ebp]
    482 	mov	edi,DWORD [20+esp]
    483 	mov	edx,DWORD [edx*8+ebp]
    484 	movzx	eax,ah
    485 	xor	edx,DWORD [3+eax*8+ebp]
    486 	mov	eax,DWORD [4+esp]
    487 	and	ebx,255
    488 	xor	edx,DWORD [2+ebx*8+ebp]
    489 	mov	ebx,DWORD [8+esp]
    490 	xor	edx,DWORD [1+ecx*8+ebp]
    491 	mov	ecx,esi
    492 	add	edi,16
    493 	xor	eax,DWORD [edi]
    494 	xor	ebx,DWORD [4+edi]
    495 	xor	ecx,DWORD [8+edi]
    496 	xor	edx,DWORD [12+edi]
    497 	cmp	edi,DWORD [24+esp]
    498 	mov	DWORD [20+esp],edi
    499 	jb	NEAR L$003loop
    500 	mov	esi,eax
    501 	and	esi,255
    502 	mov	esi,DWORD [2+esi*8+ebp]
    503 	and	esi,255
    504 	movzx	edi,bh
    505 	mov	edi,DWORD [edi*8+ebp]
    506 	and	edi,65280
    507 	xor	esi,edi
    508 	mov	edi,ecx
    509 	shr	edi,16
    510 	and	edi,255
    511 	mov	edi,DWORD [edi*8+ebp]
    512 	and	edi,16711680
    513 	xor	esi,edi
    514 	mov	edi,edx
    515 	shr	edi,24
    516 	mov	edi,DWORD [2+edi*8+ebp]
    517 	and	edi,4278190080
    518 	xor	esi,edi
    519 	mov	DWORD [4+esp],esi
    520 	mov	esi,ebx
    521 	and	esi,255
    522 	shr	ebx,16
    523 	mov	esi,DWORD [2+esi*8+ebp]
    524 	and	esi,255
    525 	movzx	edi,ch
    526 	mov	edi,DWORD [edi*8+ebp]
    527 	and	edi,65280
    528 	xor	esi,edi
    529 	mov	edi,edx
    530 	shr	edi,16
    531 	and	edi,255
    532 	mov	edi,DWORD [edi*8+ebp]
    533 	and	edi,16711680
    534 	xor	esi,edi
    535 	mov	edi,eax
    536 	shr	edi,24
    537 	mov	edi,DWORD [2+edi*8+ebp]
    538 	and	edi,4278190080
    539 	xor	esi,edi
    540 	mov	DWORD [8+esp],esi
    541 	mov	esi,ecx
    542 	and	esi,255
    543 	shr	ecx,24
    544 	mov	esi,DWORD [2+esi*8+ebp]
    545 	and	esi,255
    546 	movzx	edi,dh
    547 	mov	edi,DWORD [edi*8+ebp]
    548 	and	edi,65280
    549 	xor	esi,edi
    550 	mov	edi,eax
    551 	shr	edi,16
    552 	and	edx,255
    553 	and	edi,255
    554 	mov	edi,DWORD [edi*8+ebp]
    555 	and	edi,16711680
    556 	xor	esi,edi
    557 	movzx	edi,bh
    558 	mov	edi,DWORD [2+edi*8+ebp]
    559 	and	edi,4278190080
    560 	xor	esi,edi
    561 	mov	edi,DWORD [20+esp]
    562 	and	edx,255
    563 	mov	edx,DWORD [2+edx*8+ebp]
    564 	and	edx,255
    565 	movzx	eax,ah
    566 	mov	eax,DWORD [eax*8+ebp]
    567 	and	eax,65280
    568 	xor	edx,eax
    569 	mov	eax,DWORD [4+esp]
    570 	and	ebx,255
    571 	mov	ebx,DWORD [ebx*8+ebp]
    572 	and	ebx,16711680
    573 	xor	edx,ebx
    574 	mov	ebx,DWORD [8+esp]
    575 	mov	ecx,DWORD [2+ecx*8+ebp]
    576 	and	ecx,4278190080
    577 	xor	edx,ecx
    578 	mov	ecx,esi
    579 	add	edi,16
    580 	xor	eax,DWORD [edi]
    581 	xor	ebx,DWORD [4+edi]
    582 	xor	ecx,DWORD [8+edi]
    583 	xor	edx,DWORD [12+edi]
    584 	ret
    585 align	64
    586 L$AES_Te:
    587 dd	2774754246,2774754246
    588 dd	2222750968,2222750968
    589 dd	2574743534,2574743534
    590 dd	2373680118,2373680118
    591 dd	234025727,234025727
    592 dd	3177933782,3177933782
    593 dd	2976870366,2976870366
    594 dd	1422247313,1422247313
    595 dd	1345335392,1345335392
    596 dd	50397442,50397442
    597 dd	2842126286,2842126286
    598 dd	2099981142,2099981142
    599 dd	436141799,436141799
    600 dd	1658312629,1658312629
    601 dd	3870010189,3870010189
    602 dd	2591454956,2591454956
    603 dd	1170918031,1170918031
    604 dd	2642575903,2642575903
    605 dd	1086966153,1086966153
    606 dd	2273148410,2273148410
    607 dd	368769775,368769775
    608 dd	3948501426,3948501426
    609 dd	3376891790,3376891790
    610 dd	200339707,200339707
    611 dd	3970805057,3970805057
    612 dd	1742001331,1742001331
    613 dd	4255294047,4255294047
    614 dd	3937382213,3937382213
    615 dd	3214711843,3214711843
    616 dd	4154762323,4154762323
    617 dd	2524082916,2524082916
    618 dd	1539358875,1539358875
    619 dd	3266819957,3266819957
    620 dd	486407649,486407649
    621 dd	2928907069,2928907069
    622 dd	1780885068,1780885068
    623 dd	1513502316,1513502316
    624 dd	1094664062,1094664062
    625 dd	49805301,49805301
    626 dd	1338821763,1338821763
    627 dd	1546925160,1546925160
    628 dd	4104496465,4104496465
    629 dd	887481809,887481809
    630 dd	150073849,150073849
    631 dd	2473685474,2473685474
    632 dd	1943591083,1943591083
    633 dd	1395732834,1395732834
    634 dd	1058346282,1058346282
    635 dd	201589768,201589768
    636 dd	1388824469,1388824469
    637 dd	1696801606,1696801606
    638 dd	1589887901,1589887901
    639 dd	672667696,672667696
    640 dd	2711000631,2711000631
    641 dd	251987210,251987210
    642 dd	3046808111,3046808111
    643 dd	151455502,151455502
    644 dd	907153956,907153956
    645 dd	2608889883,2608889883
    646 dd	1038279391,1038279391
    647 dd	652995533,652995533
    648 dd	1764173646,1764173646
    649 dd	3451040383,3451040383
    650 dd	2675275242,2675275242
    651 dd	453576978,453576978
    652 dd	2659418909,2659418909
    653 dd	1949051992,1949051992
    654 dd	773462580,773462580
    655 dd	756751158,756751158
    656 dd	2993581788,2993581788
    657 dd	3998898868,3998898868
    658 dd	4221608027,4221608027
    659 dd	4132590244,4132590244
    660 dd	1295727478,1295727478
    661 dd	1641469623,1641469623
    662 dd	3467883389,3467883389
    663 dd	2066295122,2066295122
    664 dd	1055122397,1055122397
    665 dd	1898917726,1898917726
    666 dd	2542044179,2542044179
    667 dd	4115878822,4115878822
    668 dd	1758581177,1758581177
    669 dd	0,0
    670 dd	753790401,753790401
    671 dd	1612718144,1612718144
    672 dd	536673507,536673507
    673 dd	3367088505,3367088505
    674 dd	3982187446,3982187446
    675 dd	3194645204,3194645204
    676 dd	1187761037,1187761037
    677 dd	3653156455,3653156455
    678 dd	1262041458,1262041458
    679 dd	3729410708,3729410708
    680 dd	3561770136,3561770136
    681 dd	3898103984,3898103984
    682 dd	1255133061,1255133061
    683 dd	1808847035,1808847035
    684 dd	720367557,720367557
    685 dd	3853167183,3853167183
    686 dd	385612781,385612781
    687 dd	3309519750,3309519750
    688 dd	3612167578,3612167578
    689 dd	1429418854,1429418854
    690 dd	2491778321,2491778321
    691 dd	3477423498,3477423498
    692 dd	284817897,284817897
    693 dd	100794884,100794884
    694 dd	2172616702,2172616702
    695 dd	4031795360,4031795360
    696 dd	1144798328,1144798328
    697 dd	3131023141,3131023141
    698 dd	3819481163,3819481163
    699 dd	4082192802,4082192802
    700 dd	4272137053,4272137053
    701 dd	3225436288,3225436288
    702 dd	2324664069,2324664069
    703 dd	2912064063,2912064063
    704 dd	3164445985,3164445985
    705 dd	1211644016,1211644016
    706 dd	83228145,83228145
    707 dd	3753688163,3753688163
    708 dd	3249976951,3249976951
    709 dd	1977277103,1977277103
    710 dd	1663115586,1663115586
    711 dd	806359072,806359072
    712 dd	452984805,452984805
    713 dd	250868733,250868733
    714 dd	1842533055,1842533055
    715 dd	1288555905,1288555905
    716 dd	336333848,336333848
    717 dd	890442534,890442534
    718 dd	804056259,804056259
    719 dd	3781124030,3781124030
    720 dd	2727843637,2727843637
    721 dd	3427026056,3427026056
    722 dd	957814574,957814574
    723 dd	1472513171,1472513171
    724 dd	4071073621,4071073621
    725 dd	2189328124,2189328124
    726 dd	1195195770,1195195770
    727 dd	2892260552,2892260552
    728 dd	3881655738,3881655738
    729 dd	723065138,723065138
    730 dd	2507371494,2507371494
    731 dd	2690670784,2690670784
    732 dd	2558624025,2558624025
    733 dd	3511635870,3511635870
    734 dd	2145180835,2145180835
    735 dd	1713513028,1713513028
    736 dd	2116692564,2116692564
    737 dd	2878378043,2878378043
    738 dd	2206763019,2206763019
    739 dd	3393603212,3393603212
    740 dd	703524551,703524551
    741 dd	3552098411,3552098411
    742 dd	1007948840,1007948840
    743 dd	2044649127,2044649127
    744 dd	3797835452,3797835452
    745 dd	487262998,487262998
    746 dd	1994120109,1994120109
    747 dd	1004593371,1004593371
    748 dd	1446130276,1446130276
    749 dd	1312438900,1312438900
    750 dd	503974420,503974420
    751 dd	3679013266,3679013266
    752 dd	168166924,168166924
    753 dd	1814307912,1814307912
    754 dd	3831258296,3831258296
    755 dd	1573044895,1573044895
    756 dd	1859376061,1859376061
    757 dd	4021070915,4021070915
    758 dd	2791465668,2791465668
    759 dd	2828112185,2828112185
    760 dd	2761266481,2761266481
    761 dd	937747667,937747667
    762 dd	2339994098,2339994098
    763 dd	854058965,854058965
    764 dd	1137232011,1137232011
    765 dd	1496790894,1496790894
    766 dd	3077402074,3077402074
    767 dd	2358086913,2358086913
    768 dd	1691735473,1691735473
    769 dd	3528347292,3528347292
    770 dd	3769215305,3769215305
    771 dd	3027004632,3027004632
    772 dd	4199962284,4199962284
    773 dd	133494003,133494003
    774 dd	636152527,636152527
    775 dd	2942657994,2942657994
    776 dd	2390391540,2390391540
    777 dd	3920539207,3920539207
    778 dd	403179536,403179536
    779 dd	3585784431,3585784431
    780 dd	2289596656,2289596656
    781 dd	1864705354,1864705354
    782 dd	1915629148,1915629148
    783 dd	605822008,605822008
    784 dd	4054230615,4054230615
    785 dd	3350508659,3350508659
    786 dd	1371981463,1371981463
    787 dd	602466507,602466507
    788 dd	2094914977,2094914977
    789 dd	2624877800,2624877800
    790 dd	555687742,555687742
    791 dd	3712699286,3712699286
    792 dd	3703422305,3703422305
    793 dd	2257292045,2257292045
    794 dd	2240449039,2240449039
    795 dd	2423288032,2423288032
    796 dd	1111375484,1111375484
    797 dd	3300242801,3300242801
    798 dd	2858837708,2858837708
    799 dd	3628615824,3628615824
    800 dd	84083462,84083462
    801 dd	32962295,32962295
    802 dd	302911004,302911004
    803 dd	2741068226,2741068226
    804 dd	1597322602,1597322602
    805 dd	4183250862,4183250862
    806 dd	3501832553,3501832553
    807 dd	2441512471,2441512471
    808 dd	1489093017,1489093017
    809 dd	656219450,656219450
    810 dd	3114180135,3114180135
    811 dd	954327513,954327513
    812 dd	335083755,335083755
    813 dd	3013122091,3013122091
    814 dd	856756514,856756514
    815 dd	3144247762,3144247762
    816 dd	1893325225,1893325225
    817 dd	2307821063,2307821063
    818 dd	2811532339,2811532339
    819 dd	3063651117,3063651117
    820 dd	572399164,572399164
    821 dd	2458355477,2458355477
    822 dd	552200649,552200649
    823 dd	1238290055,1238290055
    824 dd	4283782570,4283782570
    825 dd	2015897680,2015897680
    826 dd	2061492133,2061492133
    827 dd	2408352771,2408352771
    828 dd	4171342169,4171342169
    829 dd	2156497161,2156497161
    830 dd	386731290,386731290
    831 dd	3669999461,3669999461
    832 dd	837215959,837215959
    833 dd	3326231172,3326231172
    834 dd	3093850320,3093850320
    835 dd	3275833730,3275833730
    836 dd	2962856233,2962856233
    837 dd	1999449434,1999449434
    838 dd	286199582,286199582
    839 dd	3417354363,3417354363
    840 dd	4233385128,4233385128
    841 dd	3602627437,3602627437
    842 dd	974525996,974525996
    843 db	99,124,119,123,242,107,111,197
    844 db	48,1,103,43,254,215,171,118
    845 db	202,130,201,125,250,89,71,240
    846 db	173,212,162,175,156,164,114,192
    847 db	183,253,147,38,54,63,247,204
    848 db	52,165,229,241,113,216,49,21
    849 db	4,199,35,195,24,150,5,154
    850 db	7,18,128,226,235,39,178,117
    851 db	9,131,44,26,27,110,90,160
    852 db	82,59,214,179,41,227,47,132
    853 db	83,209,0,237,32,252,177,91
    854 db	106,203,190,57,74,76,88,207
    855 db	208,239,170,251,67,77,51,133
    856 db	69,249,2,127,80,60,159,168
    857 db	81,163,64,143,146,157,56,245
    858 db	188,182,218,33,16,255,243,210
    859 db	205,12,19,236,95,151,68,23
    860 db	196,167,126,61,100,93,25,115
    861 db	96,129,79,220,34,42,144,136
    862 db	70,238,184,20,222,94,11,219
    863 db	224,50,58,10,73,6,36,92
    864 db	194,211,172,98,145,149,228,121
    865 db	231,200,55,109,141,213,78,169
    866 db	108,86,244,234,101,122,174,8
    867 db	186,120,37,46,28,166,180,198
    868 db	232,221,116,31,75,189,139,138
    869 db	112,62,181,102,72,3,246,14
    870 db	97,53,87,185,134,193,29,158
    871 db	225,248,152,17,105,217,142,148
    872 db	155,30,135,233,206,85,40,223
    873 db	140,161,137,13,191,230,66,104
    874 db	65,153,45,15,176,84,187,22
    875 db	99,124,119,123,242,107,111,197
    876 db	48,1,103,43,254,215,171,118
    877 db	202,130,201,125,250,89,71,240
    878 db	173,212,162,175,156,164,114,192
    879 db	183,253,147,38,54,63,247,204
    880 db	52,165,229,241,113,216,49,21
    881 db	4,199,35,195,24,150,5,154
    882 db	7,18,128,226,235,39,178,117
    883 db	9,131,44,26,27,110,90,160
    884 db	82,59,214,179,41,227,47,132
    885 db	83,209,0,237,32,252,177,91
    886 db	106,203,190,57,74,76,88,207
    887 db	208,239,170,251,67,77,51,133
    888 db	69,249,2,127,80,60,159,168
    889 db	81,163,64,143,146,157,56,245
    890 db	188,182,218,33,16,255,243,210
    891 db	205,12,19,236,95,151,68,23
    892 db	196,167,126,61,100,93,25,115
    893 db	96,129,79,220,34,42,144,136
    894 db	70,238,184,20,222,94,11,219
    895 db	224,50,58,10,73,6,36,92
    896 db	194,211,172,98,145,149,228,121
    897 db	231,200,55,109,141,213,78,169
    898 db	108,86,244,234,101,122,174,8
    899 db	186,120,37,46,28,166,180,198
    900 db	232,221,116,31,75,189,139,138
    901 db	112,62,181,102,72,3,246,14
    902 db	97,53,87,185,134,193,29,158
    903 db	225,248,152,17,105,217,142,148
    904 db	155,30,135,233,206,85,40,223
    905 db	140,161,137,13,191,230,66,104
    906 db	65,153,45,15,176,84,187,22
    907 db	99,124,119,123,242,107,111,197
    908 db	48,1,103,43,254,215,171,118
    909 db	202,130,201,125,250,89,71,240
    910 db	173,212,162,175,156,164,114,192
    911 db	183,253,147,38,54,63,247,204
    912 db	52,165,229,241,113,216,49,21
    913 db	4,199,35,195,24,150,5,154
    914 db	7,18,128,226,235,39,178,117
    915 db	9,131,44,26,27,110,90,160
    916 db	82,59,214,179,41,227,47,132
    917 db	83,209,0,237,32,252,177,91
    918 db	106,203,190,57,74,76,88,207
    919 db	208,239,170,251,67,77,51,133
    920 db	69,249,2,127,80,60,159,168
    921 db	81,163,64,143,146,157,56,245
    922 db	188,182,218,33,16,255,243,210
    923 db	205,12,19,236,95,151,68,23
    924 db	196,167,126,61,100,93,25,115
    925 db	96,129,79,220,34,42,144,136
    926 db	70,238,184,20,222,94,11,219
    927 db	224,50,58,10,73,6,36,92
    928 db	194,211,172,98,145,149,228,121
    929 db	231,200,55,109,141,213,78,169
    930 db	108,86,244,234,101,122,174,8
    931 db	186,120,37,46,28,166,180,198
    932 db	232,221,116,31,75,189,139,138
    933 db	112,62,181,102,72,3,246,14
    934 db	97,53,87,185,134,193,29,158
    935 db	225,248,152,17,105,217,142,148
    936 db	155,30,135,233,206,85,40,223
    937 db	140,161,137,13,191,230,66,104
    938 db	65,153,45,15,176,84,187,22
    939 db	99,124,119,123,242,107,111,197
    940 db	48,1,103,43,254,215,171,118
    941 db	202,130,201,125,250,89,71,240
    942 db	173,212,162,175,156,164,114,192
    943 db	183,253,147,38,54,63,247,204
    944 db	52,165,229,241,113,216,49,21
    945 db	4,199,35,195,24,150,5,154
    946 db	7,18,128,226,235,39,178,117
    947 db	9,131,44,26,27,110,90,160
    948 db	82,59,214,179,41,227,47,132
    949 db	83,209,0,237,32,252,177,91
    950 db	106,203,190,57,74,76,88,207
    951 db	208,239,170,251,67,77,51,133
    952 db	69,249,2,127,80,60,159,168
    953 db	81,163,64,143,146,157,56,245
    954 db	188,182,218,33,16,255,243,210
    955 db	205,12,19,236,95,151,68,23
    956 db	196,167,126,61,100,93,25,115
    957 db	96,129,79,220,34,42,144,136
    958 db	70,238,184,20,222,94,11,219
    959 db	224,50,58,10,73,6,36,92
    960 db	194,211,172,98,145,149,228,121
    961 db	231,200,55,109,141,213,78,169
    962 db	108,86,244,234,101,122,174,8
    963 db	186,120,37,46,28,166,180,198
    964 db	232,221,116,31,75,189,139,138
    965 db	112,62,181,102,72,3,246,14
    966 db	97,53,87,185,134,193,29,158
    967 db	225,248,152,17,105,217,142,148
    968 db	155,30,135,233,206,85,40,223
    969 db	140,161,137,13,191,230,66,104
    970 db	65,153,45,15,176,84,187,22
    971 dd	1,2,4,8
    972 dd	16,32,64,128
    973 dd	27,54,0,0
    974 dd	0,0,0,0
    975 global	_asm_AES_encrypt
    976 align	16
    977 _asm_AES_encrypt:
    978 L$_asm_AES_encrypt_begin:
    979 	push	ebp
    980 	push	ebx
    981 	push	esi
    982 	push	edi
    983 	mov	esi,DWORD [20+esp]
    984 	mov	edi,DWORD [28+esp]
    985 	mov	eax,esp
    986 	sub	esp,36
    987 	and	esp,-64
    988 	lea	ebx,[edi-127]
    989 	sub	ebx,esp
    990 	neg	ebx
    991 	and	ebx,960
    992 	sub	esp,ebx
    993 	add	esp,4
    994 	mov	DWORD [28+esp],eax
    995 	call	L$004pic_point
    996 L$004pic_point:
    997 	pop	ebp
    998 	lea	eax,[_OPENSSL_ia32cap_P]
    999 	lea	ebp,[(L$AES_Te-L$004pic_point)+ebp]
   1000 	lea	ebx,[764+esp]
   1001 	sub	ebx,ebp
   1002 	and	ebx,768
   1003 	lea	ebp,[2176+ebx*1+ebp]
   1004 	bt	DWORD [eax],25
   1005 	jnc	NEAR L$005x86
   1006 	movq	mm0,[esi]
   1007 	movq	mm4,[8+esi]
   1008 	call	__sse_AES_encrypt_compact
   1009 	mov	esp,DWORD [28+esp]
   1010 	mov	esi,DWORD [24+esp]
   1011 	movq	[esi],mm0
   1012 	movq	[8+esi],mm4
   1013 	emms
   1014 	pop	edi
   1015 	pop	esi
   1016 	pop	ebx
   1017 	pop	ebp
   1018 	ret
   1019 align	16
   1020 L$005x86:
   1021 	mov	DWORD [24+esp],ebp
   1022 	mov	eax,DWORD [esi]
   1023 	mov	ebx,DWORD [4+esi]
   1024 	mov	ecx,DWORD [8+esi]
   1025 	mov	edx,DWORD [12+esi]
   1026 	call	__x86_AES_encrypt_compact
   1027 	mov	esp,DWORD [28+esp]
   1028 	mov	esi,DWORD [24+esp]
   1029 	mov	DWORD [esi],eax
   1030 	mov	DWORD [4+esi],ebx
   1031 	mov	DWORD [8+esi],ecx
   1032 	mov	DWORD [12+esi],edx
   1033 	pop	edi
   1034 	pop	esi
   1035 	pop	ebx
   1036 	pop	ebp
   1037 	ret
   1038 align	16
   1039 __x86_AES_decrypt_compact:
   1040 	mov	DWORD [20+esp],edi
   1041 	xor	eax,DWORD [edi]
   1042 	xor	ebx,DWORD [4+edi]
   1043 	xor	ecx,DWORD [8+edi]
   1044 	xor	edx,DWORD [12+edi]
   1045 	mov	esi,DWORD [240+edi]
   1046 	lea	esi,[esi*1+esi-2]
   1047 	lea	esi,[esi*8+edi]
   1048 	mov	DWORD [24+esp],esi
   1049 	mov	edi,DWORD [ebp-128]
   1050 	mov	esi,DWORD [ebp-96]
   1051 	mov	edi,DWORD [ebp-64]
   1052 	mov	esi,DWORD [ebp-32]
   1053 	mov	edi,DWORD [ebp]
   1054 	mov	esi,DWORD [32+ebp]
   1055 	mov	edi,DWORD [64+ebp]
   1056 	mov	esi,DWORD [96+ebp]
   1057 align	16
   1058 L$006loop:
   1059 	mov	esi,eax
   1060 	and	esi,255
   1061 	movzx	esi,BYTE [esi*1+ebp-128]
   1062 	movzx	edi,dh
   1063 	movzx	edi,BYTE [edi*1+ebp-128]
   1064 	shl	edi,8
   1065 	xor	esi,edi
   1066 	mov	edi,ecx
   1067 	shr	edi,16
   1068 	and	edi,255
   1069 	movzx	edi,BYTE [edi*1+ebp-128]
   1070 	shl	edi,16
   1071 	xor	esi,edi
   1072 	mov	edi,ebx
   1073 	shr	edi,24
   1074 	movzx	edi,BYTE [edi*1+ebp-128]
   1075 	shl	edi,24
   1076 	xor	esi,edi
   1077 	mov	DWORD [4+esp],esi
   1078 	mov	esi,ebx
   1079 	and	esi,255
   1080 	movzx	esi,BYTE [esi*1+ebp-128]
   1081 	movzx	edi,ah
   1082 	movzx	edi,BYTE [edi*1+ebp-128]
   1083 	shl	edi,8
   1084 	xor	esi,edi
   1085 	mov	edi,edx
   1086 	shr	edi,16
   1087 	and	edi,255
   1088 	movzx	edi,BYTE [edi*1+ebp-128]
   1089 	shl	edi,16
   1090 	xor	esi,edi
   1091 	mov	edi,ecx
   1092 	shr	edi,24
   1093 	movzx	edi,BYTE [edi*1+ebp-128]
   1094 	shl	edi,24
   1095 	xor	esi,edi
   1096 	mov	DWORD [8+esp],esi
   1097 	mov	esi,ecx
   1098 	and	esi,255
   1099 	movzx	esi,BYTE [esi*1+ebp-128]
   1100 	movzx	edi,bh
   1101 	movzx	edi,BYTE [edi*1+ebp-128]
   1102 	shl	edi,8
   1103 	xor	esi,edi
   1104 	mov	edi,eax
   1105 	shr	edi,16
   1106 	and	edi,255
   1107 	movzx	edi,BYTE [edi*1+ebp-128]
   1108 	shl	edi,16
   1109 	xor	esi,edi
   1110 	mov	edi,edx
   1111 	shr	edi,24
   1112 	movzx	edi,BYTE [edi*1+ebp-128]
   1113 	shl	edi,24
   1114 	xor	esi,edi
   1115 	and	edx,255
   1116 	movzx	edx,BYTE [edx*1+ebp-128]
   1117 	movzx	ecx,ch
   1118 	movzx	ecx,BYTE [ecx*1+ebp-128]
   1119 	shl	ecx,8
   1120 	xor	edx,ecx
   1121 	mov	ecx,esi
   1122 	shr	ebx,16
   1123 	and	ebx,255
   1124 	movzx	ebx,BYTE [ebx*1+ebp-128]
   1125 	shl	ebx,16
   1126 	xor	edx,ebx
   1127 	shr	eax,24
   1128 	movzx	eax,BYTE [eax*1+ebp-128]
   1129 	shl	eax,24
   1130 	xor	edx,eax
   1131 	mov	edi,2155905152
   1132 	and	edi,ecx
   1133 	mov	esi,edi
   1134 	shr	edi,7
   1135 	lea	eax,[ecx*1+ecx]
   1136 	sub	esi,edi
   1137 	and	eax,4278124286
   1138 	and	esi,454761243
   1139 	xor	eax,esi
   1140 	mov	edi,2155905152
   1141 	and	edi,eax
   1142 	mov	esi,edi
   1143 	shr	edi,7
   1144 	lea	ebx,[eax*1+eax]
   1145 	sub	esi,edi
   1146 	and	ebx,4278124286
   1147 	and	esi,454761243
   1148 	xor	eax,ecx
   1149 	xor	ebx,esi
   1150 	mov	edi,2155905152
   1151 	and	edi,ebx
   1152 	mov	esi,edi
   1153 	shr	edi,7
   1154 	lea	ebp,[ebx*1+ebx]
   1155 	sub	esi,edi
   1156 	and	ebp,4278124286
   1157 	and	esi,454761243
   1158 	xor	ebx,ecx
   1159 	rol	ecx,8
   1160 	xor	ebp,esi
   1161 	xor	ecx,eax
   1162 	xor	eax,ebp
   1163 	xor	ecx,ebx
   1164 	xor	ebx,ebp
   1165 	rol	eax,24
   1166 	xor	ecx,ebp
   1167 	rol	ebx,16
   1168 	xor	ecx,eax
   1169 	rol	ebp,8
   1170 	xor	ecx,ebx
   1171 	mov	eax,DWORD [4+esp]
   1172 	xor	ecx,ebp
   1173 	mov	DWORD [12+esp],ecx
   1174 	mov	edi,2155905152
   1175 	and	edi,edx
   1176 	mov	esi,edi
   1177 	shr	edi,7
   1178 	lea	ebx,[edx*1+edx]
   1179 	sub	esi,edi
   1180 	and	ebx,4278124286
   1181 	and	esi,454761243
   1182 	xor	ebx,esi
   1183 	mov	edi,2155905152
   1184 	and	edi,ebx
   1185 	mov	esi,edi
   1186 	shr	edi,7
   1187 	lea	ecx,[ebx*1+ebx]
   1188 	sub	esi,edi
   1189 	and	ecx,4278124286
   1190 	and	esi,454761243
   1191 	xor	ebx,edx
   1192 	xor	ecx,esi
   1193 	mov	edi,2155905152
   1194 	and	edi,ecx
   1195 	mov	esi,edi
   1196 	shr	edi,7
   1197 	lea	ebp,[ecx*1+ecx]
   1198 	sub	esi,edi
   1199 	and	ebp,4278124286
   1200 	and	esi,454761243
   1201 	xor	ecx,edx
   1202 	rol	edx,8
   1203 	xor	ebp,esi
   1204 	xor	edx,ebx
   1205 	xor	ebx,ebp
   1206 	xor	edx,ecx
   1207 	xor	ecx,ebp
   1208 	rol	ebx,24
   1209 	xor	edx,ebp
   1210 	rol	ecx,16
   1211 	xor	edx,ebx
   1212 	rol	ebp,8
   1213 	xor	edx,ecx
   1214 	mov	ebx,DWORD [8+esp]
   1215 	xor	edx,ebp
   1216 	mov	DWORD [16+esp],edx
   1217 	mov	edi,2155905152
   1218 	and	edi,eax
   1219 	mov	esi,edi
   1220 	shr	edi,7
   1221 	lea	ecx,[eax*1+eax]
   1222 	sub	esi,edi
   1223 	and	ecx,4278124286
   1224 	and	esi,454761243
   1225 	xor	ecx,esi
   1226 	mov	edi,2155905152
   1227 	and	edi,ecx
   1228 	mov	esi,edi
   1229 	shr	edi,7
   1230 	lea	edx,[ecx*1+ecx]
   1231 	sub	esi,edi
   1232 	and	edx,4278124286
   1233 	and	esi,454761243
   1234 	xor	ecx,eax
   1235 	xor	edx,esi
   1236 	mov	edi,2155905152
   1237 	and	edi,edx
   1238 	mov	esi,edi
   1239 	shr	edi,7
   1240 	lea	ebp,[edx*1+edx]
   1241 	sub	esi,edi
   1242 	and	ebp,4278124286
   1243 	and	esi,454761243
   1244 	xor	edx,eax
   1245 	rol	eax,8
   1246 	xor	ebp,esi
   1247 	xor	eax,ecx
   1248 	xor	ecx,ebp
   1249 	xor	eax,edx
   1250 	xor	edx,ebp
   1251 	rol	ecx,24
   1252 	xor	eax,ebp
   1253 	rol	edx,16
   1254 	xor	eax,ecx
   1255 	rol	ebp,8
   1256 	xor	eax,edx
   1257 	xor	eax,ebp
   1258 	mov	edi,2155905152
   1259 	and	edi,ebx
   1260 	mov	esi,edi
   1261 	shr	edi,7
   1262 	lea	ecx,[ebx*1+ebx]
   1263 	sub	esi,edi
   1264 	and	ecx,4278124286
   1265 	and	esi,454761243
   1266 	xor	ecx,esi
   1267 	mov	edi,2155905152
   1268 	and	edi,ecx
   1269 	mov	esi,edi
   1270 	shr	edi,7
   1271 	lea	edx,[ecx*1+ecx]
   1272 	sub	esi,edi
   1273 	and	edx,4278124286
   1274 	and	esi,454761243
   1275 	xor	ecx,ebx
   1276 	xor	edx,esi
   1277 	mov	edi,2155905152
   1278 	and	edi,edx
   1279 	mov	esi,edi
   1280 	shr	edi,7
   1281 	lea	ebp,[edx*1+edx]
   1282 	sub	esi,edi
   1283 	and	ebp,4278124286
   1284 	and	esi,454761243
   1285 	xor	edx,ebx
   1286 	rol	ebx,8
   1287 	xor	ebp,esi
   1288 	xor	ebx,ecx
   1289 	xor	ecx,ebp
   1290 	xor	ebx,edx
   1291 	xor	edx,ebp
   1292 	rol	ecx,24
   1293 	xor	ebx,ebp
   1294 	rol	edx,16
   1295 	xor	ebx,ecx
   1296 	rol	ebp,8
   1297 	xor	ebx,edx
   1298 	mov	ecx,DWORD [12+esp]
   1299 	xor	ebx,ebp
   1300 	mov	edx,DWORD [16+esp]
   1301 	mov	edi,DWORD [20+esp]
   1302 	mov	ebp,DWORD [28+esp]
   1303 	add	edi,16
   1304 	xor	eax,DWORD [edi]
   1305 	xor	ebx,DWORD [4+edi]
   1306 	xor	ecx,DWORD [8+edi]
   1307 	xor	edx,DWORD [12+edi]
   1308 	cmp	edi,DWORD [24+esp]
   1309 	mov	DWORD [20+esp],edi
   1310 	jb	NEAR L$006loop
   1311 	mov	esi,eax
   1312 	and	esi,255
   1313 	movzx	esi,BYTE [esi*1+ebp-128]
   1314 	movzx	edi,dh
   1315 	movzx	edi,BYTE [edi*1+ebp-128]
   1316 	shl	edi,8
   1317 	xor	esi,edi
   1318 	mov	edi,ecx
   1319 	shr	edi,16
   1320 	and	edi,255
   1321 	movzx	edi,BYTE [edi*1+ebp-128]
   1322 	shl	edi,16
   1323 	xor	esi,edi
   1324 	mov	edi,ebx
   1325 	shr	edi,24
   1326 	movzx	edi,BYTE [edi*1+ebp-128]
   1327 	shl	edi,24
   1328 	xor	esi,edi
   1329 	mov	DWORD [4+esp],esi
   1330 	mov	esi,ebx
   1331 	and	esi,255
   1332 	movzx	esi,BYTE [esi*1+ebp-128]
   1333 	movzx	edi,ah
   1334 	movzx	edi,BYTE [edi*1+ebp-128]
   1335 	shl	edi,8
   1336 	xor	esi,edi
   1337 	mov	edi,edx
   1338 	shr	edi,16
   1339 	and	edi,255
   1340 	movzx	edi,BYTE [edi*1+ebp-128]
   1341 	shl	edi,16
   1342 	xor	esi,edi
   1343 	mov	edi,ecx
   1344 	shr	edi,24
   1345 	movzx	edi,BYTE [edi*1+ebp-128]
   1346 	shl	edi,24
   1347 	xor	esi,edi
   1348 	mov	DWORD [8+esp],esi
   1349 	mov	esi,ecx
   1350 	and	esi,255
   1351 	movzx	esi,BYTE [esi*1+ebp-128]
   1352 	movzx	edi,bh
   1353 	movzx	edi,BYTE [edi*1+ebp-128]
   1354 	shl	edi,8
   1355 	xor	esi,edi
   1356 	mov	edi,eax
   1357 	shr	edi,16
   1358 	and	edi,255
   1359 	movzx	edi,BYTE [edi*1+ebp-128]
   1360 	shl	edi,16
   1361 	xor	esi,edi
   1362 	mov	edi,edx
   1363 	shr	edi,24
   1364 	movzx	edi,BYTE [edi*1+ebp-128]
   1365 	shl	edi,24
   1366 	xor	esi,edi
   1367 	mov	edi,DWORD [20+esp]
   1368 	and	edx,255
   1369 	movzx	edx,BYTE [edx*1+ebp-128]
   1370 	movzx	ecx,ch
   1371 	movzx	ecx,BYTE [ecx*1+ebp-128]
   1372 	shl	ecx,8
   1373 	xor	edx,ecx
   1374 	mov	ecx,esi
   1375 	shr	ebx,16
   1376 	and	ebx,255
   1377 	movzx	ebx,BYTE [ebx*1+ebp-128]
   1378 	shl	ebx,16
   1379 	xor	edx,ebx
   1380 	mov	ebx,DWORD [8+esp]
   1381 	shr	eax,24
   1382 	movzx	eax,BYTE [eax*1+ebp-128]
   1383 	shl	eax,24
   1384 	xor	edx,eax
   1385 	mov	eax,DWORD [4+esp]
   1386 	xor	eax,DWORD [16+edi]
   1387 	xor	ebx,DWORD [20+edi]
   1388 	xor	ecx,DWORD [24+edi]
   1389 	xor	edx,DWORD [28+edi]
   1390 	ret
   1391 align	16
   1392 __sse_AES_decrypt_compact:
   1393 	pxor	mm0,[edi]
   1394 	pxor	mm4,[8+edi]
   1395 	mov	esi,DWORD [240+edi]
   1396 	lea	esi,[esi*1+esi-2]
   1397 	lea	esi,[esi*8+edi]
   1398 	mov	DWORD [24+esp],esi
   1399 	mov	eax,454761243
   1400 	mov	DWORD [8+esp],eax
   1401 	mov	DWORD [12+esp],eax
   1402 	mov	eax,DWORD [ebp-128]
   1403 	mov	ebx,DWORD [ebp-96]
   1404 	mov	ecx,DWORD [ebp-64]
   1405 	mov	edx,DWORD [ebp-32]
   1406 	mov	eax,DWORD [ebp]
   1407 	mov	ebx,DWORD [32+ebp]
   1408 	mov	ecx,DWORD [64+ebp]
   1409 	mov	edx,DWORD [96+ebp]
   1410 align	16
   1411 L$007loop:
   1412 	pshufw	mm1,mm0,12
   1413 	pshufw	mm5,mm4,9
   1414 	movd	eax,mm1
   1415 	movd	ebx,mm5
   1416 	mov	DWORD [20+esp],edi
   1417 	movzx	esi,al
   1418 	movzx	edx,ah
   1419 	pshufw	mm2,mm0,6
   1420 	movzx	ecx,BYTE [esi*1+ebp-128]
   1421 	movzx	edi,bl
   1422 	movzx	edx,BYTE [edx*1+ebp-128]
   1423 	shr	eax,16
   1424 	shl	edx,8
   1425 	movzx	esi,BYTE [edi*1+ebp-128]
   1426 	movzx	edi,bh
   1427 	shl	esi,16
   1428 	pshufw	mm6,mm4,3
   1429 	or	ecx,esi
   1430 	movzx	esi,BYTE [edi*1+ebp-128]
   1431 	movzx	edi,ah
   1432 	shl	esi,24
   1433 	shr	ebx,16
   1434 	or	edx,esi
   1435 	movzx	esi,BYTE [edi*1+ebp-128]
   1436 	movzx	edi,bh
   1437 	shl	esi,24
   1438 	or	ecx,esi
   1439 	movzx	esi,BYTE [edi*1+ebp-128]
   1440 	movzx	edi,al
   1441 	shl	esi,8
   1442 	movd	eax,mm2
   1443 	or	ecx,esi
   1444 	movzx	esi,BYTE [edi*1+ebp-128]
   1445 	movzx	edi,bl
   1446 	shl	esi,16
   1447 	movd	ebx,mm6
   1448 	movd	mm0,ecx
   1449 	movzx	ecx,BYTE [edi*1+ebp-128]
   1450 	movzx	edi,al
   1451 	or	ecx,esi
   1452 	movzx	esi,BYTE [edi*1+ebp-128]
   1453 	movzx	edi,bl
   1454 	or	edx,esi
   1455 	movzx	esi,BYTE [edi*1+ebp-128]
   1456 	movzx	edi,ah
   1457 	shl	esi,16
   1458 	shr	eax,16
   1459 	or	edx,esi
   1460 	movzx	esi,BYTE [edi*1+ebp-128]
   1461 	movzx	edi,bh
   1462 	shr	ebx,16
   1463 	shl	esi,8
   1464 	movd	mm1,edx
   1465 	movzx	edx,BYTE [edi*1+ebp-128]
   1466 	movzx	edi,bh
   1467 	shl	edx,24
   1468 	and	ebx,255
   1469 	or	edx,esi
   1470 	punpckldq	mm0,mm1
   1471 	movzx	esi,BYTE [edi*1+ebp-128]
   1472 	movzx	edi,al
   1473 	shl	esi,8
   1474 	movzx	eax,ah
   1475 	movzx	ebx,BYTE [ebx*1+ebp-128]
   1476 	or	ecx,esi
   1477 	movzx	esi,BYTE [edi*1+ebp-128]
   1478 	or	edx,ebx
   1479 	shl	esi,16
   1480 	movzx	eax,BYTE [eax*1+ebp-128]
   1481 	or	edx,esi
   1482 	shl	eax,24
   1483 	or	ecx,eax
   1484 	mov	edi,DWORD [20+esp]
   1485 	movd	mm4,edx
   1486 	movd	mm5,ecx
   1487 	punpckldq	mm4,mm5
   1488 	add	edi,16
   1489 	cmp	edi,DWORD [24+esp]
   1490 	ja	NEAR L$008out
   1491 	movq	mm3,mm0
   1492 	movq	mm7,mm4
   1493 	pshufw	mm2,mm0,228
   1494 	pshufw	mm6,mm4,228
   1495 	movq	mm1,mm0
   1496 	movq	mm5,mm4
   1497 	pshufw	mm0,mm0,177
   1498 	pshufw	mm4,mm4,177
   1499 	pslld	mm2,8
   1500 	pslld	mm6,8
   1501 	psrld	mm3,8
   1502 	psrld	mm7,8
   1503 	pxor	mm0,mm2
   1504 	pxor	mm4,mm6
   1505 	pxor	mm0,mm3
   1506 	pxor	mm4,mm7
   1507 	pslld	mm2,16
   1508 	pslld	mm6,16
   1509 	psrld	mm3,16
   1510 	psrld	mm7,16
   1511 	pxor	mm0,mm2
   1512 	pxor	mm4,mm6
   1513 	pxor	mm0,mm3
   1514 	pxor	mm4,mm7
   1515 	movq	mm3,[8+esp]
   1516 	pxor	mm2,mm2
   1517 	pxor	mm6,mm6
   1518 	pcmpgtb	mm2,mm1
   1519 	pcmpgtb	mm6,mm5
   1520 	pand	mm2,mm3
   1521 	pand	mm6,mm3
   1522 	paddb	mm1,mm1
   1523 	paddb	mm5,mm5
   1524 	pxor	mm1,mm2
   1525 	pxor	mm5,mm6
   1526 	movq	mm3,mm1
   1527 	movq	mm7,mm5
   1528 	movq	mm2,mm1
   1529 	movq	mm6,mm5
   1530 	pxor	mm0,mm1
   1531 	pxor	mm4,mm5
   1532 	pslld	mm3,24
   1533 	pslld	mm7,24
   1534 	psrld	mm2,8
   1535 	psrld	mm6,8
   1536 	pxor	mm0,mm3
   1537 	pxor	mm4,mm7
   1538 	pxor	mm0,mm2
   1539 	pxor	mm4,mm6
   1540 	movq	mm2,[8+esp]
   1541 	pxor	mm3,mm3
   1542 	pxor	mm7,mm7
   1543 	pcmpgtb	mm3,mm1
   1544 	pcmpgtb	mm7,mm5
   1545 	pand	mm3,mm2
   1546 	pand	mm7,mm2
   1547 	paddb	mm1,mm1
   1548 	paddb	mm5,mm5
   1549 	pxor	mm1,mm3
   1550 	pxor	mm5,mm7
   1551 	pshufw	mm3,mm1,177
   1552 	pshufw	mm7,mm5,177
   1553 	pxor	mm0,mm1
   1554 	pxor	mm4,mm5
   1555 	pxor	mm0,mm3
   1556 	pxor	mm4,mm7
   1557 	pxor	mm3,mm3
   1558 	pxor	mm7,mm7
   1559 	pcmpgtb	mm3,mm1
   1560 	pcmpgtb	mm7,mm5
   1561 	pand	mm3,mm2
   1562 	pand	mm7,mm2
   1563 	paddb	mm1,mm1
   1564 	paddb	mm5,mm5
   1565 	pxor	mm1,mm3
   1566 	pxor	mm5,mm7
   1567 	pxor	mm0,mm1
   1568 	pxor	mm4,mm5
   1569 	movq	mm3,mm1
   1570 	movq	mm7,mm5
   1571 	pshufw	mm2,mm1,177
   1572 	pshufw	mm6,mm5,177
   1573 	pxor	mm0,mm2
   1574 	pxor	mm4,mm6
   1575 	pslld	mm1,8
   1576 	pslld	mm5,8
   1577 	psrld	mm3,8
   1578 	psrld	mm7,8
   1579 	movq	mm2,[edi]
   1580 	movq	mm6,[8+edi]
   1581 	pxor	mm0,mm1
   1582 	pxor	mm4,mm5
   1583 	pxor	mm0,mm3
   1584 	pxor	mm4,mm7
   1585 	mov	eax,DWORD [ebp-128]
   1586 	pslld	mm1,16
   1587 	pslld	mm5,16
   1588 	mov	ebx,DWORD [ebp-64]
   1589 	psrld	mm3,16
   1590 	psrld	mm7,16
   1591 	mov	ecx,DWORD [ebp]
   1592 	pxor	mm0,mm1
   1593 	pxor	mm4,mm5
   1594 	mov	edx,DWORD [64+ebp]
   1595 	pxor	mm0,mm3
   1596 	pxor	mm4,mm7
   1597 	pxor	mm0,mm2
   1598 	pxor	mm4,mm6
   1599 	jmp	NEAR L$007loop
   1600 align	16
   1601 L$008out:
   1602 	pxor	mm0,[edi]
   1603 	pxor	mm4,[8+edi]
   1604 	ret
   1605 align	16
   1606 __x86_AES_decrypt:
   1607 	mov	DWORD [20+esp],edi
   1608 	xor	eax,DWORD [edi]
   1609 	xor	ebx,DWORD [4+edi]
   1610 	xor	ecx,DWORD [8+edi]
   1611 	xor	edx,DWORD [12+edi]
   1612 	mov	esi,DWORD [240+edi]
   1613 	lea	esi,[esi*1+esi-2]
   1614 	lea	esi,[esi*8+edi]
   1615 	mov	DWORD [24+esp],esi
   1616 align	16
   1617 L$009loop:
   1618 	mov	esi,eax
   1619 	and	esi,255
   1620 	mov	esi,DWORD [esi*8+ebp]
   1621 	movzx	edi,dh
   1622 	xor	esi,DWORD [3+edi*8+ebp]
   1623 	mov	edi,ecx
   1624 	shr	edi,16
   1625 	and	edi,255
   1626 	xor	esi,DWORD [2+edi*8+ebp]
   1627 	mov	edi,ebx
   1628 	shr	edi,24
   1629 	xor	esi,DWORD [1+edi*8+ebp]
   1630 	mov	DWORD [4+esp],esi
   1631 	mov	esi,ebx
   1632 	and	esi,255
   1633 	mov	esi,DWORD [esi*8+ebp]
   1634 	movzx	edi,ah
   1635 	xor	esi,DWORD [3+edi*8+ebp]
   1636 	mov	edi,edx
   1637 	shr	edi,16
   1638 	and	edi,255
   1639 	xor	esi,DWORD [2+edi*8+ebp]
   1640 	mov	edi,ecx
   1641 	shr	edi,24
   1642 	xor	esi,DWORD [1+edi*8+ebp]
   1643 	mov	DWORD [8+esp],esi
   1644 	mov	esi,ecx
   1645 	and	esi,255
   1646 	mov	esi,DWORD [esi*8+ebp]
   1647 	movzx	edi,bh
   1648 	xor	esi,DWORD [3+edi*8+ebp]
   1649 	mov	edi,eax
   1650 	shr	edi,16
   1651 	and	edi,255
   1652 	xor	esi,DWORD [2+edi*8+ebp]
   1653 	mov	edi,edx
   1654 	shr	edi,24
   1655 	xor	esi,DWORD [1+edi*8+ebp]
   1656 	mov	edi,DWORD [20+esp]
   1657 	and	edx,255
   1658 	mov	edx,DWORD [edx*8+ebp]
   1659 	movzx	ecx,ch
   1660 	xor	edx,DWORD [3+ecx*8+ebp]
   1661 	mov	ecx,esi
   1662 	shr	ebx,16
   1663 	and	ebx,255
   1664 	xor	edx,DWORD [2+ebx*8+ebp]
   1665 	mov	ebx,DWORD [8+esp]
   1666 	shr	eax,24
   1667 	xor	edx,DWORD [1+eax*8+ebp]
   1668 	mov	eax,DWORD [4+esp]
   1669 	add	edi,16
   1670 	xor	eax,DWORD [edi]
   1671 	xor	ebx,DWORD [4+edi]
   1672 	xor	ecx,DWORD [8+edi]
   1673 	xor	edx,DWORD [12+edi]
   1674 	cmp	edi,DWORD [24+esp]
   1675 	mov	DWORD [20+esp],edi
   1676 	jb	NEAR L$009loop
   1677 	lea	ebp,[2176+ebp]
   1678 	mov	edi,DWORD [ebp-128]
   1679 	mov	esi,DWORD [ebp-96]
   1680 	mov	edi,DWORD [ebp-64]
   1681 	mov	esi,DWORD [ebp-32]
   1682 	mov	edi,DWORD [ebp]
   1683 	mov	esi,DWORD [32+ebp]
   1684 	mov	edi,DWORD [64+ebp]
   1685 	mov	esi,DWORD [96+ebp]
   1686 	lea	ebp,[ebp-128]
   1687 	mov	esi,eax
   1688 	and	esi,255
   1689 	movzx	esi,BYTE [esi*1+ebp]
   1690 	movzx	edi,dh
   1691 	movzx	edi,BYTE [edi*1+ebp]
   1692 	shl	edi,8
   1693 	xor	esi,edi
   1694 	mov	edi,ecx
   1695 	shr	edi,16
   1696 	and	edi,255
   1697 	movzx	edi,BYTE [edi*1+ebp]
   1698 	shl	edi,16
   1699 	xor	esi,edi
   1700 	mov	edi,ebx
   1701 	shr	edi,24
   1702 	movzx	edi,BYTE [edi*1+ebp]
   1703 	shl	edi,24
   1704 	xor	esi,edi
   1705 	mov	DWORD [4+esp],esi
   1706 	mov	esi,ebx
   1707 	and	esi,255
   1708 	movzx	esi,BYTE [esi*1+ebp]
   1709 	movzx	edi,ah
   1710 	movzx	edi,BYTE [edi*1+ebp]
   1711 	shl	edi,8
   1712 	xor	esi,edi
   1713 	mov	edi,edx
   1714 	shr	edi,16
   1715 	and	edi,255
   1716 	movzx	edi,BYTE [edi*1+ebp]
   1717 	shl	edi,16
   1718 	xor	esi,edi
   1719 	mov	edi,ecx
   1720 	shr	edi,24
   1721 	movzx	edi,BYTE [edi*1+ebp]
   1722 	shl	edi,24
   1723 	xor	esi,edi
   1724 	mov	DWORD [8+esp],esi
   1725 	mov	esi,ecx
   1726 	and	esi,255
   1727 	movzx	esi,BYTE [esi*1+ebp]
   1728 	movzx	edi,bh
   1729 	movzx	edi,BYTE [edi*1+ebp]
   1730 	shl	edi,8
   1731 	xor	esi,edi
   1732 	mov	edi,eax
   1733 	shr	edi,16
   1734 	and	edi,255
   1735 	movzx	edi,BYTE [edi*1+ebp]
   1736 	shl	edi,16
   1737 	xor	esi,edi
   1738 	mov	edi,edx
   1739 	shr	edi,24
   1740 	movzx	edi,BYTE [edi*1+ebp]
   1741 	shl	edi,24
   1742 	xor	esi,edi
   1743 	mov	edi,DWORD [20+esp]
   1744 	and	edx,255
   1745 	movzx	edx,BYTE [edx*1+ebp]
   1746 	movzx	ecx,ch
   1747 	movzx	ecx,BYTE [ecx*1+ebp]
   1748 	shl	ecx,8
   1749 	xor	edx,ecx
   1750 	mov	ecx,esi
   1751 	shr	ebx,16
   1752 	and	ebx,255
   1753 	movzx	ebx,BYTE [ebx*1+ebp]
   1754 	shl	ebx,16
   1755 	xor	edx,ebx
   1756 	mov	ebx,DWORD [8+esp]
   1757 	shr	eax,24
   1758 	movzx	eax,BYTE [eax*1+ebp]
   1759 	shl	eax,24
   1760 	xor	edx,eax
   1761 	mov	eax,DWORD [4+esp]
   1762 	lea	ebp,[ebp-2048]
   1763 	add	edi,16
   1764 	xor	eax,DWORD [edi]
   1765 	xor	ebx,DWORD [4+edi]
   1766 	xor	ecx,DWORD [8+edi]
   1767 	xor	edx,DWORD [12+edi]
   1768 	ret
   1769 align	64
   1770 L$AES_Td:
   1771 dd	1353184337,1353184337
   1772 dd	1399144830,1399144830
   1773 dd	3282310938,3282310938
   1774 dd	2522752826,2522752826
   1775 dd	3412831035,3412831035
   1776 dd	4047871263,4047871263
   1777 dd	2874735276,2874735276
   1778 dd	2466505547,2466505547
   1779 dd	1442459680,1442459680
   1780 dd	4134368941,4134368941
   1781 dd	2440481928,2440481928
   1782 dd	625738485,625738485
   1783 dd	4242007375,4242007375
   1784 dd	3620416197,3620416197
   1785 dd	2151953702,2151953702
   1786 dd	2409849525,2409849525
   1787 dd	1230680542,1230680542
   1788 dd	1729870373,1729870373
   1789 dd	2551114309,2551114309
   1790 dd	3787521629,3787521629
   1791 dd	41234371,41234371
   1792 dd	317738113,317738113
   1793 dd	2744600205,2744600205
   1794 dd	3338261355,3338261355
   1795 dd	3881799427,3881799427
   1796 dd	2510066197,2510066197
   1797 dd	3950669247,3950669247
   1798 dd	3663286933,3663286933
   1799 dd	763608788,763608788
   1800 dd	3542185048,3542185048
   1801 dd	694804553,694804553
   1802 dd	1154009486,1154009486
   1803 dd	1787413109,1787413109
   1804 dd	2021232372,2021232372
   1805 dd	1799248025,1799248025
   1806 dd	3715217703,3715217703
   1807 dd	3058688446,3058688446
   1808 dd	397248752,397248752
   1809 dd	1722556617,1722556617
   1810 dd	3023752829,3023752829
   1811 dd	407560035,407560035
   1812 dd	2184256229,2184256229
   1813 dd	1613975959,1613975959
   1814 dd	1165972322,1165972322
   1815 dd	3765920945,3765920945
   1816 dd	2226023355,2226023355
   1817 dd	480281086,480281086
   1818 dd	2485848313,2485848313
   1819 dd	1483229296,1483229296
   1820 dd	436028815,436028815
   1821 dd	2272059028,2272059028
   1822 dd	3086515026,3086515026
   1823 dd	601060267,601060267
   1824 dd	3791801202,3791801202
   1825 dd	1468997603,1468997603
   1826 dd	715871590,715871590
   1827 dd	120122290,120122290
   1828 dd	63092015,63092015
   1829 dd	2591802758,2591802758
   1830 dd	2768779219,2768779219
   1831 dd	4068943920,4068943920
   1832 dd	2997206819,2997206819
   1833 dd	3127509762,3127509762
   1834 dd	1552029421,1552029421
   1835 dd	723308426,723308426
   1836 dd	2461301159,2461301159
   1837 dd	4042393587,4042393587
   1838 dd	2715969870,2715969870
   1839 dd	3455375973,3455375973
   1840 dd	3586000134,3586000134
   1841 dd	526529745,526529745
   1842 dd	2331944644,2331944644
   1843 dd	2639474228,2639474228
   1844 dd	2689987490,2689987490
   1845 dd	853641733,853641733
   1846 dd	1978398372,1978398372
   1847 dd	971801355,971801355
   1848 dd	2867814464,2867814464
   1849 dd	111112542,111112542
   1850 dd	1360031421,1360031421
   1851 dd	4186579262,4186579262
   1852 dd	1023860118,1023860118
   1853 dd	2919579357,2919579357
   1854 dd	1186850381,1186850381
   1855 dd	3045938321,3045938321
   1856 dd	90031217,90031217
   1857 dd	1876166148,1876166148
   1858 dd	4279586912,4279586912
   1859 dd	620468249,620468249
   1860 dd	2548678102,2548678102
   1861 dd	3426959497,3426959497
   1862 dd	2006899047,2006899047
   1863 dd	3175278768,3175278768
   1864 dd	2290845959,2290845959
   1865 dd	945494503,945494503
   1866 dd	3689859193,3689859193
   1867 dd	1191869601,1191869601
   1868 dd	3910091388,3910091388
   1869 dd	3374220536,3374220536
   1870 dd	0,0
   1871 dd	2206629897,2206629897
   1872 dd	1223502642,1223502642
   1873 dd	2893025566,2893025566
   1874 dd	1316117100,1316117100
   1875 dd	4227796733,4227796733
   1876 dd	1446544655,1446544655
   1877 dd	517320253,517320253
   1878 dd	658058550,658058550
   1879 dd	1691946762,1691946762
   1880 dd	564550760,564550760
   1881 dd	3511966619,3511966619
   1882 dd	976107044,976107044
   1883 dd	2976320012,2976320012
   1884 dd	266819475,266819475
   1885 dd	3533106868,3533106868
   1886 dd	2660342555,2660342555
   1887 dd	1338359936,1338359936
   1888 dd	2720062561,2720062561
   1889 dd	1766553434,1766553434
   1890 dd	370807324,370807324
   1891 dd	179999714,179999714
   1892 dd	3844776128,3844776128
   1893 dd	1138762300,1138762300
   1894 dd	488053522,488053522
   1895 dd	185403662,185403662
   1896 dd	2915535858,2915535858
   1897 dd	3114841645,3114841645
   1898 dd	3366526484,3366526484
   1899 dd	2233069911,2233069911
   1900 dd	1275557295,1275557295
   1901 dd	3151862254,3151862254
   1902 dd	4250959779,4250959779
   1903 dd	2670068215,2670068215
   1904 dd	3170202204,3170202204
   1905 dd	3309004356,3309004356
   1906 dd	880737115,880737115
   1907 dd	1982415755,1982415755
   1908 dd	3703972811,3703972811
   1909 dd	1761406390,1761406390
   1910 dd	1676797112,1676797112
   1911 dd	3403428311,3403428311
   1912 dd	277177154,277177154
   1913 dd	1076008723,1076008723
   1914 dd	538035844,538035844
   1915 dd	2099530373,2099530373
   1916 dd	4164795346,4164795346
   1917 dd	288553390,288553390
   1918 dd	1839278535,1839278535
   1919 dd	1261411869,1261411869
   1920 dd	4080055004,4080055004
   1921 dd	3964831245,3964831245
   1922 dd	3504587127,3504587127
   1923 dd	1813426987,1813426987
   1924 dd	2579067049,2579067049
   1925 dd	4199060497,4199060497
   1926 dd	577038663,577038663
   1927 dd	3297574056,3297574056
   1928 dd	440397984,440397984
   1929 dd	3626794326,3626794326
   1930 dd	4019204898,4019204898
   1931 dd	3343796615,3343796615
   1932 dd	3251714265,3251714265
   1933 dd	4272081548,4272081548
   1934 dd	906744984,906744984
   1935 dd	3481400742,3481400742
   1936 dd	685669029,685669029
   1937 dd	646887386,646887386
   1938 dd	2764025151,2764025151
   1939 dd	3835509292,3835509292
   1940 dd	227702864,227702864
   1941 dd	2613862250,2613862250
   1942 dd	1648787028,1648787028
   1943 dd	3256061430,3256061430
   1944 dd	3904428176,3904428176
   1945 dd	1593260334,1593260334
   1946 dd	4121936770,4121936770
   1947 dd	3196083615,3196083615
   1948 dd	2090061929,2090061929
   1949 dd	2838353263,2838353263
   1950 dd	3004310991,3004310991
   1951 dd	999926984,999926984
   1952 dd	2809993232,2809993232
   1953 dd	1852021992,1852021992
   1954 dd	2075868123,2075868123
   1955 dd	158869197,158869197
   1956 dd	4095236462,4095236462
   1957 dd	28809964,28809964
   1958 dd	2828685187,2828685187
   1959 dd	1701746150,1701746150
   1960 dd	2129067946,2129067946
   1961 dd	147831841,147831841
   1962 dd	3873969647,3873969647
   1963 dd	3650873274,3650873274
   1964 dd	3459673930,3459673930
   1965 dd	3557400554,3557400554
   1966 dd	3598495785,3598495785
   1967 dd	2947720241,2947720241
   1968 dd	824393514,824393514
   1969 dd	815048134,815048134
   1970 dd	3227951669,3227951669
   1971 dd	935087732,935087732
   1972 dd	2798289660,2798289660
   1973 dd	2966458592,2966458592
   1974 dd	366520115,366520115
   1975 dd	1251476721,1251476721
   1976 dd	4158319681,4158319681
   1977 dd	240176511,240176511
   1978 dd	804688151,804688151
   1979 dd	2379631990,2379631990
   1980 dd	1303441219,1303441219
   1981 dd	1414376140,1414376140
   1982 dd	3741619940,3741619940
   1983 dd	3820343710,3820343710
   1984 dd	461924940,461924940
   1985 dd	3089050817,3089050817
   1986 dd	2136040774,2136040774
   1987 dd	82468509,82468509
   1988 dd	1563790337,1563790337
   1989 dd	1937016826,1937016826
   1990 dd	776014843,776014843
   1991 dd	1511876531,1511876531
   1992 dd	1389550482,1389550482
   1993 dd	861278441,861278441
   1994 dd	323475053,323475053
   1995 dd	2355222426,2355222426
   1996 dd	2047648055,2047648055
   1997 dd	2383738969,2383738969
   1998 dd	2302415851,2302415851
   1999 dd	3995576782,3995576782
   2000 dd	902390199,902390199
   2001 dd	3991215329,3991215329
   2002 dd	1018251130,1018251130
   2003 dd	1507840668,1507840668
   2004 dd	1064563285,1064563285
   2005 dd	2043548696,2043548696
   2006 dd	3208103795,3208103795
   2007 dd	3939366739,3939366739
   2008 dd	1537932639,1537932639
   2009 dd	342834655,342834655
   2010 dd	2262516856,2262516856
   2011 dd	2180231114,2180231114
   2012 dd	1053059257,1053059257
   2013 dd	741614648,741614648
   2014 dd	1598071746,1598071746
   2015 dd	1925389590,1925389590
   2016 dd	203809468,203809468
   2017 dd	2336832552,2336832552
   2018 dd	1100287487,1100287487
   2019 dd	1895934009,1895934009
   2020 dd	3736275976,3736275976
   2021 dd	2632234200,2632234200
   2022 dd	2428589668,2428589668
   2023 dd	1636092795,1636092795
   2024 dd	1890988757,1890988757
   2025 dd	1952214088,1952214088
   2026 dd	1113045200,1113045200
   2027 db	82,9,106,213,48,54,165,56
   2028 db	191,64,163,158,129,243,215,251
   2029 db	124,227,57,130,155,47,255,135
   2030 db	52,142,67,68,196,222,233,203
   2031 db	84,123,148,50,166,194,35,61
   2032 db	238,76,149,11,66,250,195,78
   2033 db	8,46,161,102,40,217,36,178
   2034 db	118,91,162,73,109,139,209,37
   2035 db	114,248,246,100,134,104,152,22
   2036 db	212,164,92,204,93,101,182,146
   2037 db	108,112,72,80,253,237,185,218
   2038 db	94,21,70,87,167,141,157,132
   2039 db	144,216,171,0,140,188,211,10
   2040 db	247,228,88,5,184,179,69,6
   2041 db	208,44,30,143,202,63,15,2
   2042 db	193,175,189,3,1,19,138,107
   2043 db	58,145,17,65,79,103,220,234
   2044 db	151,242,207,206,240,180,230,115
   2045 db	150,172,116,34,231,173,53,133
   2046 db	226,249,55,232,28,117,223,110
   2047 db	71,241,26,113,29,41,197,137
   2048 db	111,183,98,14,170,24,190,27
   2049 db	252,86,62,75,198,210,121,32
   2050 db	154,219,192,254,120,205,90,244
   2051 db	31,221,168,51,136,7,199,49
   2052 db	177,18,16,89,39,128,236,95
   2053 db	96,81,127,169,25,181,74,13
   2054 db	45,229,122,159,147,201,156,239
   2055 db	160,224,59,77,174,42,245,176
   2056 db	200,235,187,60,131,83,153,97
   2057 db	23,43,4,126,186,119,214,38
   2058 db	225,105,20,99,85,33,12,125
   2059 db	82,9,106,213,48,54,165,56
   2060 db	191,64,163,158,129,243,215,251
   2061 db	124,227,57,130,155,47,255,135
   2062 db	52,142,67,68,196,222,233,203
   2063 db	84,123,148,50,166,194,35,61
   2064 db	238,76,149,11,66,250,195,78
   2065 db	8,46,161,102,40,217,36,178
   2066 db	118,91,162,73,109,139,209,37
   2067 db	114,248,246,100,134,104,152,22
   2068 db	212,164,92,204,93,101,182,146
   2069 db	108,112,72,80,253,237,185,218
   2070 db	94,21,70,87,167,141,157,132
   2071 db	144,216,171,0,140,188,211,10
   2072 db	247,228,88,5,184,179,69,6
   2073 db	208,44,30,143,202,63,15,2
   2074 db	193,175,189,3,1,19,138,107
   2075 db	58,145,17,65,79,103,220,234
   2076 db	151,242,207,206,240,180,230,115
   2077 db	150,172,116,34,231,173,53,133
   2078 db	226,249,55,232,28,117,223,110
   2079 db	71,241,26,113,29,41,197,137
   2080 db	111,183,98,14,170,24,190,27
   2081 db	252,86,62,75,198,210,121,32
   2082 db	154,219,192,254,120,205,90,244
   2083 db	31,221,168,51,136,7,199,49
   2084 db	177,18,16,89,39,128,236,95
   2085 db	96,81,127,169,25,181,74,13
   2086 db	45,229,122,159,147,201,156,239
   2087 db	160,224,59,77,174,42,245,176
   2088 db	200,235,187,60,131,83,153,97
   2089 db	23,43,4,126,186,119,214,38
   2090 db	225,105,20,99,85,33,12,125
   2091 db	82,9,106,213,48,54,165,56
   2092 db	191,64,163,158,129,243,215,251
   2093 db	124,227,57,130,155,47,255,135
   2094 db	52,142,67,68,196,222,233,203
   2095 db	84,123,148,50,166,194,35,61
   2096 db	238,76,149,11,66,250,195,78
   2097 db	8,46,161,102,40,217,36,178
   2098 db	118,91,162,73,109,139,209,37
   2099 db	114,248,246,100,134,104,152,22
   2100 db	212,164,92,204,93,101,182,146
   2101 db	108,112,72,80,253,237,185,218
   2102 db	94,21,70,87,167,141,157,132
   2103 db	144,216,171,0,140,188,211,10
   2104 db	247,228,88,5,184,179,69,6
   2105 db	208,44,30,143,202,63,15,2
   2106 db	193,175,189,3,1,19,138,107
   2107 db	58,145,17,65,79,103,220,234
   2108 db	151,242,207,206,240,180,230,115
   2109 db	150,172,116,34,231,173,53,133
   2110 db	226,249,55,232,28,117,223,110
   2111 db	71,241,26,113,29,41,197,137
   2112 db	111,183,98,14,170,24,190,27
   2113 db	252,86,62,75,198,210,121,32
   2114 db	154,219,192,254,120,205,90,244
   2115 db	31,221,168,51,136,7,199,49
   2116 db	177,18,16,89,39,128,236,95
   2117 db	96,81,127,169,25,181,74,13
   2118 db	45,229,122,159,147,201,156,239
   2119 db	160,224,59,77,174,42,245,176
   2120 db	200,235,187,60,131,83,153,97
   2121 db	23,43,4,126,186,119,214,38
   2122 db	225,105,20,99,85,33,12,125
   2123 db	82,9,106,213,48,54,165,56
   2124 db	191,64,163,158,129,243,215,251
   2125 db	124,227,57,130,155,47,255,135
   2126 db	52,142,67,68,196,222,233,203
   2127 db	84,123,148,50,166,194,35,61
   2128 db	238,76,149,11,66,250,195,78
   2129 db	8,46,161,102,40,217,36,178
   2130 db	118,91,162,73,109,139,209,37
   2131 db	114,248,246,100,134,104,152,22
   2132 db	212,164,92,204,93,101,182,146
   2133 db	108,112,72,80,253,237,185,218
   2134 db	94,21,70,87,167,141,157,132
   2135 db	144,216,171,0,140,188,211,10
   2136 db	247,228,88,5,184,179,69,6
   2137 db	208,44,30,143,202,63,15,2
   2138 db	193,175,189,3,1,19,138,107
   2139 db	58,145,17,65,79,103,220,234
   2140 db	151,242,207,206,240,180,230,115
   2141 db	150,172,116,34,231,173,53,133
   2142 db	226,249,55,232,28,117,223,110
   2143 db	71,241,26,113,29,41,197,137
   2144 db	111,183,98,14,170,24,190,27
   2145 db	252,86,62,75,198,210,121,32
   2146 db	154,219,192,254,120,205,90,244
   2147 db	31,221,168,51,136,7,199,49
   2148 db	177,18,16,89,39,128,236,95
   2149 db	96,81,127,169,25,181,74,13
   2150 db	45,229,122,159,147,201,156,239
   2151 db	160,224,59,77,174,42,245,176
   2152 db	200,235,187,60,131,83,153,97
   2153 db	23,43,4,126,186,119,214,38
   2154 db	225,105,20,99,85,33,12,125
   2155 global	_asm_AES_decrypt
   2156 align	16
   2157 _asm_AES_decrypt:
   2158 L$_asm_AES_decrypt_begin:
   2159 	push	ebp
   2160 	push	ebx
   2161 	push	esi
   2162 	push	edi
   2163 	mov	esi,DWORD [20+esp]
   2164 	mov	edi,DWORD [28+esp]
   2165 	mov	eax,esp
   2166 	sub	esp,36
   2167 	and	esp,-64
   2168 	lea	ebx,[edi-127]
   2169 	sub	ebx,esp
   2170 	neg	ebx
   2171 	and	ebx,960
   2172 	sub	esp,ebx
   2173 	add	esp,4
   2174 	mov	DWORD [28+esp],eax
   2175 	call	L$010pic_point
   2176 L$010pic_point:
   2177 	pop	ebp
   2178 	lea	eax,[_OPENSSL_ia32cap_P]
   2179 	lea	ebp,[(L$AES_Td-L$010pic_point)+ebp]
   2180 	lea	ebx,[764+esp]
   2181 	sub	ebx,ebp
   2182 	and	ebx,768
   2183 	lea	ebp,[2176+ebx*1+ebp]
   2184 	bt	DWORD [eax],25
   2185 	jnc	NEAR L$011x86
   2186 	movq	mm0,[esi]
   2187 	movq	mm4,[8+esi]
   2188 	call	__sse_AES_decrypt_compact
   2189 	mov	esp,DWORD [28+esp]
   2190 	mov	esi,DWORD [24+esp]
   2191 	movq	[esi],mm0
   2192 	movq	[8+esi],mm4
   2193 	emms
   2194 	pop	edi
   2195 	pop	esi
   2196 	pop	ebx
   2197 	pop	ebp
   2198 	ret
   2199 align	16
   2200 L$011x86:
   2201 	mov	DWORD [24+esp],ebp
   2202 	mov	eax,DWORD [esi]
   2203 	mov	ebx,DWORD [4+esi]
   2204 	mov	ecx,DWORD [8+esi]
   2205 	mov	edx,DWORD [12+esi]
   2206 	call	__x86_AES_decrypt_compact
   2207 	mov	esp,DWORD [28+esp]
   2208 	mov	esi,DWORD [24+esp]
   2209 	mov	DWORD [esi],eax
   2210 	mov	DWORD [4+esi],ebx
   2211 	mov	DWORD [8+esi],ecx
   2212 	mov	DWORD [12+esi],edx
   2213 	pop	edi
   2214 	pop	esi
   2215 	pop	ebx
   2216 	pop	ebp
   2217 	ret
   2218 global	_asm_AES_cbc_encrypt
   2219 align	16
   2220 _asm_AES_cbc_encrypt:
   2221 L$_asm_AES_cbc_encrypt_begin:
   2222 	push	ebp
   2223 	push	ebx
   2224 	push	esi
   2225 	push	edi
   2226 	mov	ecx,DWORD [28+esp]
   2227 	cmp	ecx,0
   2228 	je	NEAR L$012drop_out
   2229 	call	L$013pic_point
   2230 L$013pic_point:
   2231 	pop	ebp
   2232 	lea	eax,[_OPENSSL_ia32cap_P]
   2233 	cmp	DWORD [40+esp],0
   2234 	lea	ebp,[(L$AES_Te-L$013pic_point)+ebp]
   2235 	jne	NEAR L$014picked_te
   2236 	lea	ebp,[(L$AES_Td-L$AES_Te)+ebp]
   2237 L$014picked_te:
   2238 	pushfd
   2239 	cld
   2240 	cmp	ecx,512
   2241 	jb	NEAR L$015slow_way
   2242 	test	ecx,15
   2243 	jnz	NEAR L$015slow_way
   2244 	bt	DWORD [eax],28
   2245 	jc	NEAR L$015slow_way
   2246 	lea	esi,[esp-324]
   2247 	and	esi,-64
   2248 	mov	eax,ebp
   2249 	lea	ebx,[2304+ebp]
   2250 	mov	edx,esi
   2251 	and	eax,4095
   2252 	and	ebx,4095
   2253 	and	edx,4095
   2254 	cmp	edx,ebx
   2255 	jb	NEAR L$016tbl_break_out
   2256 	sub	edx,ebx
   2257 	sub	esi,edx
   2258 	jmp	NEAR L$017tbl_ok
   2259 align	4
   2260 L$016tbl_break_out:
   2261 	sub	edx,eax
   2262 	and	edx,4095
   2263 	add	edx,384
   2264 	sub	esi,edx
   2265 align	4
   2266 L$017tbl_ok:
   2267 	lea	edx,[24+esp]
   2268 	xchg	esp,esi
   2269 	add	esp,4
   2270 	mov	DWORD [24+esp],ebp
   2271 	mov	DWORD [28+esp],esi
   2272 	mov	eax,DWORD [edx]
   2273 	mov	ebx,DWORD [4+edx]
   2274 	mov	edi,DWORD [12+edx]
   2275 	mov	esi,DWORD [16+edx]
   2276 	mov	edx,DWORD [20+edx]
   2277 	mov	DWORD [32+esp],eax
   2278 	mov	DWORD [36+esp],ebx
   2279 	mov	DWORD [40+esp],ecx
   2280 	mov	DWORD [44+esp],edi
   2281 	mov	DWORD [48+esp],esi
   2282 	mov	DWORD [316+esp],0
   2283 	mov	ebx,edi
   2284 	mov	ecx,61
   2285 	sub	ebx,ebp
   2286 	mov	esi,edi
   2287 	and	ebx,4095
   2288 	lea	edi,[76+esp]
   2289 	cmp	ebx,2304
   2290 	jb	NEAR L$018do_copy
   2291 	cmp	ebx,3852
   2292 	jb	NEAR L$019skip_copy
   2293 align	4
   2294 L$018do_copy:
   2295 	mov	DWORD [44+esp],edi
   2296 dd	2784229001
   2297 L$019skip_copy:
   2298 	mov	edi,16
   2299 align	4
   2300 L$020prefetch_tbl:
   2301 	mov	eax,DWORD [ebp]
   2302 	mov	ebx,DWORD [32+ebp]
   2303 	mov	ecx,DWORD [64+ebp]
   2304 	mov	esi,DWORD [96+ebp]
   2305 	lea	ebp,[128+ebp]
   2306 	sub	edi,1
   2307 	jnz	NEAR L$020prefetch_tbl
   2308 	sub	ebp,2048
   2309 	mov	esi,DWORD [32+esp]
   2310 	mov	edi,DWORD [48+esp]
   2311 	cmp	edx,0
   2312 	je	NEAR L$021fast_decrypt
   2313 	mov	eax,DWORD [edi]
   2314 	mov	ebx,DWORD [4+edi]
   2315 align	16
   2316 L$022fast_enc_loop:
   2317 	mov	ecx,DWORD [8+edi]
   2318 	mov	edx,DWORD [12+edi]
   2319 	xor	eax,DWORD [esi]
   2320 	xor	ebx,DWORD [4+esi]
   2321 	xor	ecx,DWORD [8+esi]
   2322 	xor	edx,DWORD [12+esi]
   2323 	mov	edi,DWORD [44+esp]
   2324 	call	__x86_AES_encrypt
   2325 	mov	esi,DWORD [32+esp]
   2326 	mov	edi,DWORD [36+esp]
   2327 	mov	DWORD [edi],eax
   2328 	mov	DWORD [4+edi],ebx
   2329 	mov	DWORD [8+edi],ecx
   2330 	mov	DWORD [12+edi],edx
   2331 	lea	esi,[16+esi]
   2332 	mov	ecx,DWORD [40+esp]
   2333 	mov	DWORD [32+esp],esi
   2334 	lea	edx,[16+edi]
   2335 	mov	DWORD [36+esp],edx
   2336 	sub	ecx,16
   2337 	mov	DWORD [40+esp],ecx
   2338 	jnz	NEAR L$022fast_enc_loop
   2339 	mov	esi,DWORD [48+esp]
   2340 	mov	ecx,DWORD [8+edi]
   2341 	mov	edx,DWORD [12+edi]
   2342 	mov	DWORD [esi],eax
   2343 	mov	DWORD [4+esi],ebx
   2344 	mov	DWORD [8+esi],ecx
   2345 	mov	DWORD [12+esi],edx
   2346 	cmp	DWORD [316+esp],0
   2347 	mov	edi,DWORD [44+esp]
   2348 	je	NEAR L$023skip_ezero
   2349 	mov	ecx,60
   2350 	xor	eax,eax
   2351 align	4
   2352 dd	2884892297
   2353 L$023skip_ezero:
   2354 	mov	esp,DWORD [28+esp]
   2355 	popfd
   2356 L$012drop_out:
   2357 	pop	edi
   2358 	pop	esi
   2359 	pop	ebx
   2360 	pop	ebp
   2361 	ret
   2362 	pushfd
   2363 align	16
   2364 L$021fast_decrypt:
   2365 	cmp	esi,DWORD [36+esp]
   2366 	je	NEAR L$024fast_dec_in_place
   2367 	mov	DWORD [52+esp],edi
   2368 align	4
   2369 align	16
   2370 L$025fast_dec_loop:
   2371 	mov	eax,DWORD [esi]
   2372 	mov	ebx,DWORD [4+esi]
   2373 	mov	ecx,DWORD [8+esi]
   2374 	mov	edx,DWORD [12+esi]
   2375 	mov	edi,DWORD [44+esp]
   2376 	call	__x86_AES_decrypt
   2377 	mov	edi,DWORD [52+esp]
   2378 	mov	esi,DWORD [40+esp]
   2379 	xor	eax,DWORD [edi]
   2380 	xor	ebx,DWORD [4+edi]
   2381 	xor	ecx,DWORD [8+edi]
   2382 	xor	edx,DWORD [12+edi]
   2383 	mov	edi,DWORD [36+esp]
   2384 	mov	esi,DWORD [32+esp]
   2385 	mov	DWORD [edi],eax
   2386 	mov	DWORD [4+edi],ebx
   2387 	mov	DWORD [8+edi],ecx
   2388 	mov	DWORD [12+edi],edx
   2389 	mov	ecx,DWORD [40+esp]
   2390 	mov	DWORD [52+esp],esi
   2391 	lea	esi,[16+esi]
   2392 	mov	DWORD [32+esp],esi
   2393 	lea	edi,[16+edi]
   2394 	mov	DWORD [36+esp],edi
   2395 	sub	ecx,16
   2396 	mov	DWORD [40+esp],ecx
   2397 	jnz	NEAR L$025fast_dec_loop
   2398 	mov	edi,DWORD [52+esp]
   2399 	mov	esi,DWORD [48+esp]
   2400 	mov	eax,DWORD [edi]
   2401 	mov	ebx,DWORD [4+edi]
   2402 	mov	ecx,DWORD [8+edi]
   2403 	mov	edx,DWORD [12+edi]
   2404 	mov	DWORD [esi],eax
   2405 	mov	DWORD [4+esi],ebx
   2406 	mov	DWORD [8+esi],ecx
   2407 	mov	DWORD [12+esi],edx
   2408 	jmp	NEAR L$026fast_dec_out
   2409 align	16
   2410 L$024fast_dec_in_place:
   2411 L$027fast_dec_in_place_loop:
   2412 	mov	eax,DWORD [esi]
   2413 	mov	ebx,DWORD [4+esi]
   2414 	mov	ecx,DWORD [8+esi]
   2415 	mov	edx,DWORD [12+esi]
   2416 	lea	edi,[60+esp]
   2417 	mov	DWORD [edi],eax
   2418 	mov	DWORD [4+edi],ebx
   2419 	mov	DWORD [8+edi],ecx
   2420 	mov	DWORD [12+edi],edx
   2421 	mov	edi,DWORD [44+esp]
   2422 	call	__x86_AES_decrypt
   2423 	mov	edi,DWORD [48+esp]
   2424 	mov	esi,DWORD [36+esp]
   2425 	xor	eax,DWORD [edi]
   2426 	xor	ebx,DWORD [4+edi]
   2427 	xor	ecx,DWORD [8+edi]
   2428 	xor	edx,DWORD [12+edi]
   2429 	mov	DWORD [esi],eax
   2430 	mov	DWORD [4+esi],ebx
   2431 	mov	DWORD [8+esi],ecx
   2432 	mov	DWORD [12+esi],edx
   2433 	lea	esi,[16+esi]
   2434 	mov	DWORD [36+esp],esi
   2435 	lea	esi,[60+esp]
   2436 	mov	eax,DWORD [esi]
   2437 	mov	ebx,DWORD [4+esi]
   2438 	mov	ecx,DWORD [8+esi]
   2439 	mov	edx,DWORD [12+esi]
   2440 	mov	DWORD [edi],eax
   2441 	mov	DWORD [4+edi],ebx
   2442 	mov	DWORD [8+edi],ecx
   2443 	mov	DWORD [12+edi],edx
   2444 	mov	esi,DWORD [32+esp]
   2445 	mov	ecx,DWORD [40+esp]
   2446 	lea	esi,[16+esi]
   2447 	mov	DWORD [32+esp],esi
   2448 	sub	ecx,16
   2449 	mov	DWORD [40+esp],ecx
   2450 	jnz	NEAR L$027fast_dec_in_place_loop
   2451 align	4
   2452 L$026fast_dec_out:
   2453 	cmp	DWORD [316+esp],0
   2454 	mov	edi,DWORD [44+esp]
   2455 	je	NEAR L$028skip_dzero
   2456 	mov	ecx,60
   2457 	xor	eax,eax
   2458 align	4
   2459 dd	2884892297
   2460 L$028skip_dzero:
   2461 	mov	esp,DWORD [28+esp]
   2462 	popfd
   2463 	pop	edi
   2464 	pop	esi
   2465 	pop	ebx
   2466 	pop	ebp
   2467 	ret
   2468 	pushfd
   2469 align	16
   2470 L$015slow_way:
   2471 	mov	eax,DWORD [eax]
   2472 	mov	edi,DWORD [36+esp]
   2473 	lea	esi,[esp-80]
   2474 	and	esi,-64
   2475 	lea	ebx,[edi-143]
   2476 	sub	ebx,esi
   2477 	neg	ebx
   2478 	and	ebx,960
   2479 	sub	esi,ebx
   2480 	lea	ebx,[768+esi]
   2481 	sub	ebx,ebp
   2482 	and	ebx,768
   2483 	lea	ebp,[2176+ebx*1+ebp]
   2484 	lea	edx,[24+esp]
   2485 	xchg	esp,esi
   2486 	add	esp,4
   2487 	mov	DWORD [24+esp],ebp
   2488 	mov	DWORD [28+esp],esi
   2489 	mov	DWORD [52+esp],eax
   2490 	mov	eax,DWORD [edx]
   2491 	mov	ebx,DWORD [4+edx]
   2492 	mov	esi,DWORD [16+edx]
   2493 	mov	edx,DWORD [20+edx]
   2494 	mov	DWORD [32+esp],eax
   2495 	mov	DWORD [36+esp],ebx
   2496 	mov	DWORD [40+esp],ecx
   2497 	mov	DWORD [44+esp],edi
   2498 	mov	DWORD [48+esp],esi
   2499 	mov	edi,esi
   2500 	mov	esi,eax
   2501 	cmp	edx,0
   2502 	je	NEAR L$029slow_decrypt
   2503 	cmp	ecx,16
   2504 	mov	edx,ebx
   2505 	jb	NEAR L$030slow_enc_tail
   2506 	bt	DWORD [52+esp],25
   2507 	jnc	NEAR L$031slow_enc_x86
   2508 	movq	mm0,[edi]
   2509 	movq	mm4,[8+edi]
   2510 align	16
   2511 L$032slow_enc_loop_sse:
   2512 	pxor	mm0,[esi]
   2513 	pxor	mm4,[8+esi]
   2514 	mov	edi,DWORD [44+esp]
   2515 	call	__sse_AES_encrypt_compact
   2516 	mov	esi,DWORD [32+esp]
   2517 	mov	edi,DWORD [36+esp]
   2518 	mov	ecx,DWORD [40+esp]
   2519 	movq	[edi],mm0
   2520 	movq	[8+edi],mm4
   2521 	lea	esi,[16+esi]
   2522 	mov	DWORD [32+esp],esi
   2523 	lea	edx,[16+edi]
   2524 	mov	DWORD [36+esp],edx
   2525 	sub	ecx,16
   2526 	cmp	ecx,16
   2527 	mov	DWORD [40+esp],ecx
   2528 	jae	NEAR L$032slow_enc_loop_sse
   2529 	test	ecx,15
   2530 	jnz	NEAR L$030slow_enc_tail
   2531 	mov	esi,DWORD [48+esp]
   2532 	movq	[esi],mm0
   2533 	movq	[8+esi],mm4
   2534 	emms
   2535 	mov	esp,DWORD [28+esp]
   2536 	popfd
   2537 	pop	edi
   2538 	pop	esi
   2539 	pop	ebx
   2540 	pop	ebp
   2541 	ret
   2542 	pushfd
   2543 align	16
   2544 L$031slow_enc_x86:
   2545 	mov	eax,DWORD [edi]
   2546 	mov	ebx,DWORD [4+edi]
   2547 align	4
   2548 L$033slow_enc_loop_x86:
   2549 	mov	ecx,DWORD [8+edi]
   2550 	mov	edx,DWORD [12+edi]
   2551 	xor	eax,DWORD [esi]
   2552 	xor	ebx,DWORD [4+esi]
   2553 	xor	ecx,DWORD [8+esi]
   2554 	xor	edx,DWORD [12+esi]
   2555 	mov	edi,DWORD [44+esp]
   2556 	call	__x86_AES_encrypt_compact
   2557 	mov	esi,DWORD [32+esp]
   2558 	mov	edi,DWORD [36+esp]
   2559 	mov	DWORD [edi],eax
   2560 	mov	DWORD [4+edi],ebx
   2561 	mov	DWORD [8+edi],ecx
   2562 	mov	DWORD [12+edi],edx
   2563 	mov	ecx,DWORD [40+esp]
   2564 	lea	esi,[16+esi]
   2565 	mov	DWORD [32+esp],esi
   2566 	lea	edx,[16+edi]
   2567 	mov	DWORD [36+esp],edx
   2568 	sub	ecx,16
   2569 	cmp	ecx,16
   2570 	mov	DWORD [40+esp],ecx
   2571 	jae	NEAR L$033slow_enc_loop_x86
   2572 	test	ecx,15
   2573 	jnz	NEAR L$030slow_enc_tail
   2574 	mov	esi,DWORD [48+esp]
   2575 	mov	ecx,DWORD [8+edi]
   2576 	mov	edx,DWORD [12+edi]
   2577 	mov	DWORD [esi],eax
   2578 	mov	DWORD [4+esi],ebx
   2579 	mov	DWORD [8+esi],ecx
   2580 	mov	DWORD [12+esi],edx
   2581 	mov	esp,DWORD [28+esp]
   2582 	popfd
   2583 	pop	edi
   2584 	pop	esi
   2585 	pop	ebx
   2586 	pop	ebp
   2587 	ret
   2588 	pushfd
   2589 align	16
   2590 L$030slow_enc_tail:
   2591 	emms
   2592 	mov	edi,edx
   2593 	mov	ebx,16
   2594 	sub	ebx,ecx
   2595 	cmp	edi,esi
   2596 	je	NEAR L$034enc_in_place
   2597 align	4
   2598 dd	2767451785
   2599 	jmp	NEAR L$035enc_skip_in_place
   2600 L$034enc_in_place:
   2601 	lea	edi,[ecx*1+edi]
   2602 L$035enc_skip_in_place:
   2603 	mov	ecx,ebx
   2604 	xor	eax,eax
   2605 align	4
   2606 dd	2868115081
   2607 	mov	edi,DWORD [48+esp]
   2608 	mov	esi,edx
   2609 	mov	eax,DWORD [edi]
   2610 	mov	ebx,DWORD [4+edi]
   2611 	mov	DWORD [40+esp],16
   2612 	jmp	NEAR L$033slow_enc_loop_x86
   2613 align	16
   2614 L$029slow_decrypt:
   2615 	bt	DWORD [52+esp],25
   2616 	jnc	NEAR L$036slow_dec_loop_x86
   2617 align	4
   2618 L$037slow_dec_loop_sse:
   2619 	movq	mm0,[esi]
   2620 	movq	mm4,[8+esi]
   2621 	mov	edi,DWORD [44+esp]
   2622 	call	__sse_AES_decrypt_compact
   2623 	mov	esi,DWORD [32+esp]
   2624 	lea	eax,[60+esp]
   2625 	mov	ebx,DWORD [36+esp]
   2626 	mov	ecx,DWORD [40+esp]
   2627 	mov	edi,DWORD [48+esp]
   2628 	movq	mm1,[esi]
   2629 	movq	mm5,[8+esi]
   2630 	pxor	mm0,[edi]
   2631 	pxor	mm4,[8+edi]
   2632 	movq	[edi],mm1
   2633 	movq	[8+edi],mm5
   2634 	sub	ecx,16
   2635 	jc	NEAR L$038slow_dec_partial_sse
   2636 	movq	[ebx],mm0
   2637 	movq	[8+ebx],mm4
   2638 	lea	ebx,[16+ebx]
   2639 	mov	DWORD [36+esp],ebx
   2640 	lea	esi,[16+esi]
   2641 	mov	DWORD [32+esp],esi
   2642 	mov	DWORD [40+esp],ecx
   2643 	jnz	NEAR L$037slow_dec_loop_sse
   2644 	emms
   2645 	mov	esp,DWORD [28+esp]
   2646 	popfd
   2647 	pop	edi
   2648 	pop	esi
   2649 	pop	ebx
   2650 	pop	ebp
   2651 	ret
   2652 	pushfd
   2653 align	16
   2654 L$038slow_dec_partial_sse:
   2655 	movq	[eax],mm0
   2656 	movq	[8+eax],mm4
   2657 	emms
   2658 	add	ecx,16
   2659 	mov	edi,ebx
   2660 	mov	esi,eax
   2661 align	4
   2662 dd	2767451785
   2663 	mov	esp,DWORD [28+esp]
   2664 	popfd
   2665 	pop	edi
   2666 	pop	esi
   2667 	pop	ebx
   2668 	pop	ebp
   2669 	ret
   2670 	pushfd
   2671 align	16
   2672 L$036slow_dec_loop_x86:
   2673 	mov	eax,DWORD [esi]
   2674 	mov	ebx,DWORD [4+esi]
   2675 	mov	ecx,DWORD [8+esi]
   2676 	mov	edx,DWORD [12+esi]
   2677 	lea	edi,[60+esp]
   2678 	mov	DWORD [edi],eax
   2679 	mov	DWORD [4+edi],ebx
   2680 	mov	DWORD [8+edi],ecx
   2681 	mov	DWORD [12+edi],edx
   2682 	mov	edi,DWORD [44+esp]
   2683 	call	__x86_AES_decrypt_compact
   2684 	mov	edi,DWORD [48+esp]
   2685 	mov	esi,DWORD [40+esp]
   2686 	xor	eax,DWORD [edi]
   2687 	xor	ebx,DWORD [4+edi]
   2688 	xor	ecx,DWORD [8+edi]
   2689 	xor	edx,DWORD [12+edi]
   2690 	sub	esi,16
   2691 	jc	NEAR L$039slow_dec_partial_x86
   2692 	mov	DWORD [40+esp],esi
   2693 	mov	esi,DWORD [36+esp]
   2694 	mov	DWORD [esi],eax
   2695 	mov	DWORD [4+esi],ebx
   2696 	mov	DWORD [8+esi],ecx
   2697 	mov	DWORD [12+esi],edx
   2698 	lea	esi,[16+esi]
   2699 	mov	DWORD [36+esp],esi
   2700 	lea	esi,[60+esp]
   2701 	mov	eax,DWORD [esi]
   2702 	mov	ebx,DWORD [4+esi]
   2703 	mov	ecx,DWORD [8+esi]
   2704 	mov	edx,DWORD [12+esi]
   2705 	mov	DWORD [edi],eax
   2706 	mov	DWORD [4+edi],ebx
   2707 	mov	DWORD [8+edi],ecx
   2708 	mov	DWORD [12+edi],edx
   2709 	mov	esi,DWORD [32+esp]
   2710 	lea	esi,[16+esi]
   2711 	mov	DWORD [32+esp],esi
   2712 	jnz	NEAR L$036slow_dec_loop_x86
   2713 	mov	esp,DWORD [28+esp]
   2714 	popfd
   2715 	pop	edi
   2716 	pop	esi
   2717 	pop	ebx
   2718 	pop	ebp
   2719 	ret
   2720 	pushfd
   2721 align	16
   2722 L$039slow_dec_partial_x86:
   2723 	lea	esi,[60+esp]
   2724 	mov	DWORD [esi],eax
   2725 	mov	DWORD [4+esi],ebx
   2726 	mov	DWORD [8+esi],ecx
   2727 	mov	DWORD [12+esi],edx
   2728 	mov	esi,DWORD [32+esp]
   2729 	mov	eax,DWORD [esi]
   2730 	mov	ebx,DWORD [4+esi]
   2731 	mov	ecx,DWORD [8+esi]
   2732 	mov	edx,DWORD [12+esi]
   2733 	mov	DWORD [edi],eax
   2734 	mov	DWORD [4+edi],ebx
   2735 	mov	DWORD [8+edi],ecx
   2736 	mov	DWORD [12+edi],edx
   2737 	mov	ecx,DWORD [40+esp]
   2738 	mov	edi,DWORD [36+esp]
   2739 	lea	esi,[60+esp]
   2740 align	4
   2741 dd	2767451785
   2742 	mov	esp,DWORD [28+esp]
   2743 	popfd
   2744 	pop	edi
   2745 	pop	esi
   2746 	pop	ebx
   2747 	pop	ebp
   2748 	ret
   2749 align	16
   2750 __x86_AES_set_encrypt_key:
   2751 	push	ebp
   2752 	push	ebx
   2753 	push	esi
   2754 	push	edi
   2755 	mov	esi,DWORD [24+esp]
   2756 	mov	edi,DWORD [32+esp]
   2757 	test	esi,-1
   2758 	jz	NEAR L$040badpointer
   2759 	test	edi,-1
   2760 	jz	NEAR L$040badpointer
   2761 	call	L$041pic_point
   2762 L$041pic_point:
   2763 	pop	ebp
   2764 	lea	ebp,[(L$AES_Te-L$041pic_point)+ebp]
   2765 	lea	ebp,[2176+ebp]
   2766 	mov	eax,DWORD [ebp-128]
   2767 	mov	ebx,DWORD [ebp-96]
   2768 	mov	ecx,DWORD [ebp-64]
   2769 	mov	edx,DWORD [ebp-32]
   2770 	mov	eax,DWORD [ebp]
   2771 	mov	ebx,DWORD [32+ebp]
   2772 	mov	ecx,DWORD [64+ebp]
   2773 	mov	edx,DWORD [96+ebp]
   2774 	mov	ecx,DWORD [28+esp]
   2775 	cmp	ecx,128
   2776 	je	NEAR L$04210rounds
   2777 	cmp	ecx,192
   2778 	je	NEAR L$04312rounds
   2779 	cmp	ecx,256
   2780 	je	NEAR L$04414rounds
   2781 	mov	eax,-2
   2782 	jmp	NEAR L$045exit
   2783 L$04210rounds:
   2784 	mov	eax,DWORD [esi]
   2785 	mov	ebx,DWORD [4+esi]
   2786 	mov	ecx,DWORD [8+esi]
   2787 	mov	edx,DWORD [12+esi]
   2788 	mov	DWORD [edi],eax
   2789 	mov	DWORD [4+edi],ebx
   2790 	mov	DWORD [8+edi],ecx
   2791 	mov	DWORD [12+edi],edx
   2792 	xor	ecx,ecx
   2793 	jmp	NEAR L$04610shortcut
   2794 align	4
   2795 L$04710loop:
   2796 	mov	eax,DWORD [edi]
   2797 	mov	edx,DWORD [12+edi]
   2798 L$04610shortcut:
   2799 	movzx	esi,dl
   2800 	movzx	ebx,BYTE [esi*1+ebp-128]
   2801 	movzx	esi,dh
   2802 	shl	ebx,24
   2803 	xor	eax,ebx
   2804 	movzx	ebx,BYTE [esi*1+ebp-128]
   2805 	shr	edx,16
   2806 	movzx	esi,dl
   2807 	xor	eax,ebx
   2808 	movzx	ebx,BYTE [esi*1+ebp-128]
   2809 	movzx	esi,dh
   2810 	shl	ebx,8
   2811 	xor	eax,ebx
   2812 	movzx	ebx,BYTE [esi*1+ebp-128]
   2813 	shl	ebx,16
   2814 	xor	eax,ebx
   2815 	xor	eax,DWORD [896+ecx*4+ebp]
   2816 	mov	DWORD [16+edi],eax
   2817 	xor	eax,DWORD [4+edi]
   2818 	mov	DWORD [20+edi],eax
   2819 	xor	eax,DWORD [8+edi]
   2820 	mov	DWORD [24+edi],eax
   2821 	xor	eax,DWORD [12+edi]
   2822 	mov	DWORD [28+edi],eax
   2823 	inc	ecx
   2824 	add	edi,16
   2825 	cmp	ecx,10
   2826 	jl	NEAR L$04710loop
   2827 	mov	DWORD [80+edi],10
   2828 	xor	eax,eax
   2829 	jmp	NEAR L$045exit
   2830 L$04312rounds:
   2831 	mov	eax,DWORD [esi]
   2832 	mov	ebx,DWORD [4+esi]
   2833 	mov	ecx,DWORD [8+esi]
   2834 	mov	edx,DWORD [12+esi]
   2835 	mov	DWORD [edi],eax
   2836 	mov	DWORD [4+edi],ebx
   2837 	mov	DWORD [8+edi],ecx
   2838 	mov	DWORD [12+edi],edx
   2839 	mov	ecx,DWORD [16+esi]
   2840 	mov	edx,DWORD [20+esi]
   2841 	mov	DWORD [16+edi],ecx
   2842 	mov	DWORD [20+edi],edx
   2843 	xor	ecx,ecx
   2844 	jmp	NEAR L$04812shortcut
   2845 align	4
   2846 L$04912loop:
   2847 	mov	eax,DWORD [edi]
   2848 	mov	edx,DWORD [20+edi]
   2849 L$04812shortcut:
   2850 	movzx	esi,dl
   2851 	movzx	ebx,BYTE [esi*1+ebp-128]
   2852 	movzx	esi,dh
   2853 	shl	ebx,24
   2854 	xor	eax,ebx
   2855 	movzx	ebx,BYTE [esi*1+ebp-128]
   2856 	shr	edx,16
   2857 	movzx	esi,dl
   2858 	xor	eax,ebx
   2859 	movzx	ebx,BYTE [esi*1+ebp-128]
   2860 	movzx	esi,dh
   2861 	shl	ebx,8
   2862 	xor	eax,ebx
   2863 	movzx	ebx,BYTE [esi*1+ebp-128]
   2864 	shl	ebx,16
   2865 	xor	eax,ebx
   2866 	xor	eax,DWORD [896+ecx*4+ebp]
   2867 	mov	DWORD [24+edi],eax
   2868 	xor	eax,DWORD [4+edi]
   2869 	mov	DWORD [28+edi],eax
   2870 	xor	eax,DWORD [8+edi]
   2871 	mov	DWORD [32+edi],eax
   2872 	xor	eax,DWORD [12+edi]
   2873 	mov	DWORD [36+edi],eax
   2874 	cmp	ecx,7
   2875 	je	NEAR L$05012break
   2876 	inc	ecx
   2877 	xor	eax,DWORD [16+edi]
   2878 	mov	DWORD [40+edi],eax
   2879 	xor	eax,DWORD [20+edi]
   2880 	mov	DWORD [44+edi],eax
   2881 	add	edi,24
   2882 	jmp	NEAR L$04912loop
   2883 L$05012break:
   2884 	mov	DWORD [72+edi],12
   2885 	xor	eax,eax
   2886 	jmp	NEAR L$045exit
   2887 L$04414rounds:
   2888 	mov	eax,DWORD [esi]
   2889 	mov	ebx,DWORD [4+esi]
   2890 	mov	ecx,DWORD [8+esi]
   2891 	mov	edx,DWORD [12+esi]
   2892 	mov	DWORD [edi],eax
   2893 	mov	DWORD [4+edi],ebx
   2894 	mov	DWORD [8+edi],ecx
   2895 	mov	DWORD [12+edi],edx
   2896 	mov	eax,DWORD [16+esi]
   2897 	mov	ebx,DWORD [20+esi]
   2898 	mov	ecx,DWORD [24+esi]
   2899 	mov	edx,DWORD [28+esi]
   2900 	mov	DWORD [16+edi],eax
   2901 	mov	DWORD [20+edi],ebx
   2902 	mov	DWORD [24+edi],ecx
   2903 	mov	DWORD [28+edi],edx
   2904 	xor	ecx,ecx
   2905 	jmp	NEAR L$05114shortcut
   2906 align	4
   2907 L$05214loop:
   2908 	mov	edx,DWORD [28+edi]
   2909 L$05114shortcut:
   2910 	mov	eax,DWORD [edi]
   2911 	movzx	esi,dl
   2912 	movzx	ebx,BYTE [esi*1+ebp-128]
   2913 	movzx	esi,dh
   2914 	shl	ebx,24
   2915 	xor	eax,ebx
   2916 	movzx	ebx,BYTE [esi*1+ebp-128]
   2917 	shr	edx,16
   2918 	movzx	esi,dl
   2919 	xor	eax,ebx
   2920 	movzx	ebx,BYTE [esi*1+ebp-128]
   2921 	movzx	esi,dh
   2922 	shl	ebx,8
   2923 	xor	eax,ebx
   2924 	movzx	ebx,BYTE [esi*1+ebp-128]
   2925 	shl	ebx,16
   2926 	xor	eax,ebx
   2927 	xor	eax,DWORD [896+ecx*4+ebp]
   2928 	mov	DWORD [32+edi],eax
   2929 	xor	eax,DWORD [4+edi]
   2930 	mov	DWORD [36+edi],eax
   2931 	xor	eax,DWORD [8+edi]
   2932 	mov	DWORD [40+edi],eax
   2933 	xor	eax,DWORD [12+edi]
   2934 	mov	DWORD [44+edi],eax
   2935 	cmp	ecx,6
   2936 	je	NEAR L$05314break
   2937 	inc	ecx
   2938 	mov	edx,eax
   2939 	mov	eax,DWORD [16+edi]
   2940 	movzx	esi,dl
   2941 	movzx	ebx,BYTE [esi*1+ebp-128]
   2942 	movzx	esi,dh
   2943 	xor	eax,ebx
   2944 	movzx	ebx,BYTE [esi*1+ebp-128]
   2945 	shr	edx,16
   2946 	shl	ebx,8
   2947 	movzx	esi,dl
   2948 	xor	eax,ebx
   2949 	movzx	ebx,BYTE [esi*1+ebp-128]
   2950 	movzx	esi,dh
   2951 	shl	ebx,16
   2952 	xor	eax,ebx
   2953 	movzx	ebx,BYTE [esi*1+ebp-128]
   2954 	shl	ebx,24
   2955 	xor	eax,ebx
   2956 	mov	DWORD [48+edi],eax
   2957 	xor	eax,DWORD [20+edi]
   2958 	mov	DWORD [52+edi],eax
   2959 	xor	eax,DWORD [24+edi]
   2960 	mov	DWORD [56+edi],eax
   2961 	xor	eax,DWORD [28+edi]
   2962 	mov	DWORD [60+edi],eax
   2963 	add	edi,32
   2964 	jmp	NEAR L$05214loop
   2965 L$05314break:
   2966 	mov	DWORD [48+edi],14
   2967 	xor	eax,eax
   2968 	jmp	NEAR L$045exit
   2969 L$040badpointer:
   2970 	mov	eax,-1
   2971 L$045exit:
   2972 	pop	edi
   2973 	pop	esi
   2974 	pop	ebx
   2975 	pop	ebp
   2976 	ret
   2977 global	_asm_AES_set_encrypt_key
   2978 align	16
   2979 _asm_AES_set_encrypt_key:
   2980 L$_asm_AES_set_encrypt_key_begin:
   2981 	call	__x86_AES_set_encrypt_key
   2982 	ret
   2983 global	_asm_AES_set_decrypt_key
   2984 align	16
   2985 _asm_AES_set_decrypt_key:
   2986 L$_asm_AES_set_decrypt_key_begin:
   2987 	call	__x86_AES_set_encrypt_key
   2988 	cmp	eax,0
   2989 	je	NEAR L$054proceed
   2990 	ret
   2991 L$054proceed:
   2992 	push	ebp
   2993 	push	ebx
   2994 	push	esi
   2995 	push	edi
   2996 	mov	esi,DWORD [28+esp]
   2997 	mov	ecx,DWORD [240+esi]
   2998 	lea	ecx,[ecx*4]
   2999 	lea	edi,[ecx*4+esi]
   3000 align	4
   3001 L$055invert:
   3002 	mov	eax,DWORD [esi]
   3003 	mov	ebx,DWORD [4+esi]
   3004 	mov	ecx,DWORD [edi]
   3005 	mov	edx,DWORD [4+edi]
   3006 	mov	DWORD [edi],eax
   3007 	mov	DWORD [4+edi],ebx
   3008 	mov	DWORD [esi],ecx
   3009 	mov	DWORD [4+esi],edx
   3010 	mov	eax,DWORD [8+esi]
   3011 	mov	ebx,DWORD [12+esi]
   3012 	mov	ecx,DWORD [8+edi]
   3013 	mov	edx,DWORD [12+edi]
   3014 	mov	DWORD [8+edi],eax
   3015 	mov	DWORD [12+edi],ebx
   3016 	mov	DWORD [8+esi],ecx
   3017 	mov	DWORD [12+esi],edx
   3018 	add	esi,16
   3019 	sub	edi,16
   3020 	cmp	esi,edi
   3021 	jne	NEAR L$055invert
   3022 	mov	edi,DWORD [28+esp]
   3023 	mov	esi,DWORD [240+edi]
   3024 	lea	esi,[esi*1+esi-2]
   3025 	lea	esi,[esi*8+edi]
   3026 	mov	DWORD [28+esp],esi
   3027 	mov	eax,DWORD [16+edi]
   3028 align	4
   3029 L$056permute:
   3030 	add	edi,16
   3031 	mov	ebp,2155905152
   3032 	and	ebp,eax
   3033 	lea	ebx,[eax*1+eax]
   3034 	mov	esi,ebp
   3035 	shr	ebp,7
   3036 	sub	esi,ebp
   3037 	and	ebx,4278124286
   3038 	and	esi,454761243
   3039 	xor	ebx,esi
   3040 	mov	ebp,2155905152
   3041 	and	ebp,ebx
   3042 	lea	ecx,[ebx*1+ebx]
   3043 	mov	esi,ebp
   3044 	shr	ebp,7
   3045 	sub	esi,ebp
   3046 	and	ecx,4278124286
   3047 	and	esi,454761243
   3048 	xor	ebx,eax
   3049 	xor	ecx,esi
   3050 	mov	ebp,2155905152
   3051 	and	ebp,ecx
   3052 	lea	edx,[ecx*1+ecx]
   3053 	mov	esi,ebp
   3054 	shr	ebp,7
   3055 	xor	ecx,eax
   3056 	sub	esi,ebp
   3057 	and	edx,4278124286
   3058 	and	esi,454761243
   3059 	rol	eax,8
   3060 	xor	edx,esi
   3061 	mov	ebp,DWORD [4+edi]
   3062 	xor	eax,ebx
   3063 	xor	ebx,edx
   3064 	xor	eax,ecx
   3065 	rol	ebx,24
   3066 	xor	ecx,edx
   3067 	xor	eax,edx
   3068 	rol	ecx,16
   3069 	xor	eax,ebx
   3070 	rol	edx,8
   3071 	xor	eax,ecx
   3072 	mov	ebx,ebp
   3073 	xor	eax,edx
   3074 	mov	DWORD [edi],eax
   3075 	mov	ebp,2155905152
   3076 	and	ebp,ebx
   3077 	lea	ecx,[ebx*1+ebx]
   3078 	mov	esi,ebp
   3079 	shr	ebp,7
   3080 	sub	esi,ebp
   3081 	and	ecx,4278124286
   3082 	and	esi,454761243
   3083 	xor	ecx,esi
   3084 	mov	ebp,2155905152
   3085 	and	ebp,ecx
   3086 	lea	edx,[ecx*1+ecx]
   3087 	mov	esi,ebp
   3088 	shr	ebp,7
   3089 	sub	esi,ebp
   3090 	and	edx,4278124286
   3091 	and	esi,454761243
   3092 	xor	ecx,ebx
   3093 	xor	edx,esi
   3094 	mov	ebp,2155905152
   3095 	and	ebp,edx
   3096 	lea	eax,[edx*1+edx]
   3097 	mov	esi,ebp
   3098 	shr	ebp,7
   3099 	xor	edx,ebx
   3100 	sub	esi,ebp
   3101 	and	eax,4278124286
   3102 	and	esi,454761243
   3103 	rol	ebx,8
   3104 	xor	eax,esi
   3105 	mov	ebp,DWORD [8+edi]
   3106 	xor	ebx,ecx
   3107 	xor	ecx,eax
   3108 	xor	ebx,edx
   3109 	rol	ecx,24
   3110 	xor	edx,eax
   3111 	xor	ebx,eax
   3112 	rol	edx,16
   3113 	xor	ebx,ecx
   3114 	rol	eax,8
   3115 	xor	ebx,edx
   3116 	mov	ecx,ebp
   3117 	xor	ebx,eax
   3118 	mov	DWORD [4+edi],ebx
   3119 	mov	ebp,2155905152
   3120 	and	ebp,ecx
   3121 	lea	edx,[ecx*1+ecx]
   3122 	mov	esi,ebp
   3123 	shr	ebp,7
   3124 	sub	esi,ebp
   3125 	and	edx,4278124286
   3126 	and	esi,454761243
   3127 	xor	edx,esi
   3128 	mov	ebp,2155905152
   3129 	and	ebp,edx
   3130 	lea	eax,[edx*1+edx]
   3131 	mov	esi,ebp
   3132 	shr	ebp,7
   3133 	sub	esi,ebp
   3134 	and	eax,4278124286
   3135 	and	esi,454761243
   3136 	xor	edx,ecx
   3137 	xor	eax,esi
   3138 	mov	ebp,2155905152
   3139 	and	ebp,eax
   3140 	lea	ebx,[eax*1+eax]
   3141 	mov	esi,ebp
   3142 	shr	ebp,7
   3143 	xor	eax,ecx
   3144 	sub	esi,ebp
   3145 	and	ebx,4278124286
   3146 	and	esi,454761243
   3147 	rol	ecx,8
   3148 	xor	ebx,esi
   3149 	mov	ebp,DWORD [12+edi]
   3150 	xor	ecx,edx
   3151 	xor	edx,ebx
   3152 	xor	ecx,eax
   3153 	rol	edx,24
   3154 	xor	eax,ebx
   3155 	xor	ecx,ebx
   3156 	rol	eax,16
   3157 	xor	ecx,edx
   3158 	rol	ebx,8
   3159 	xor	ecx,eax
   3160 	mov	edx,ebp
   3161 	xor	ecx,ebx
   3162 	mov	DWORD [8+edi],ecx
   3163 	mov	ebp,2155905152
   3164 	and	ebp,edx
   3165 	lea	eax,[edx*1+edx]
   3166 	mov	esi,ebp
   3167 	shr	ebp,7
   3168 	sub	esi,ebp
   3169 	and	eax,4278124286
   3170 	and	esi,454761243
   3171 	xor	eax,esi
   3172 	mov	ebp,2155905152
   3173 	and	ebp,eax
   3174 	lea	ebx,[eax*1+eax]
   3175 	mov	esi,ebp
   3176 	shr	ebp,7
   3177 	sub	esi,ebp
   3178 	and	ebx,4278124286
   3179 	and	esi,454761243
   3180 	xor	eax,edx
   3181 	xor	ebx,esi
   3182 	mov	ebp,2155905152
   3183 	and	ebp,ebx
   3184 	lea	ecx,[ebx*1+ebx]
   3185 	mov	esi,ebp
   3186 	shr	ebp,7
   3187 	xor	ebx,edx
   3188 	sub	esi,ebp
   3189 	and	ecx,4278124286
   3190 	and	esi,454761243
   3191 	rol	edx,8
   3192 	xor	ecx,esi
   3193 	mov	ebp,DWORD [16+edi]
   3194 	xor	edx,eax
   3195 	xor	eax,ecx
   3196 	xor	edx,ebx
   3197 	rol	eax,24
   3198 	xor	ebx,ecx
   3199 	xor	edx,ecx
   3200 	rol	ebx,16
   3201 	xor	edx,eax
   3202 	rol	ecx,8
   3203 	xor	edx,ebx
   3204 	mov	eax,ebp
   3205 	xor	edx,ecx
   3206 	mov	DWORD [12+edi],edx
   3207 	cmp	edi,DWORD [28+esp]
   3208 	jb	NEAR L$056permute
   3209 	xor	eax,eax
   3210 	pop	edi
   3211 	pop	esi
   3212 	pop	ebx
   3213 	pop	ebp
   3214 	ret
   3215 db	65,69,83,32,102,111,114,32,120,56,54,44,32,67,82,89
   3216 db	80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114
   3217 db	111,64,111,112,101,110,115,115,108,46,111,114,103,62,0
   3218 segment	.bss
   3219 common	_OPENSSL_ia32cap_P 16
   3220