"Fossies" - the Fresh Open Source Software Archive

Member "incubator-pagespeed-mod-1.14.36.1/third_party/serf/win-x86/crypto/aes/aes-586.asm" (28 Feb 2020, 64102 Bytes) of package /linux/www/apache_httpd_modules/incubator-pagespeed-mod-1.14.36.1.tar.gz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) Generic Assembler source code syntax highlighting (style: standard) with prefixed line numbers. Alternatively you can here view or download the uninterpreted source code file.

    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