The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/crypto/openssl/i386/aesni-x86.S

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /* $FreeBSD$ */
    2 /* Do not modify. This file is auto-generated from aesni-x86.pl. */
    3 #ifdef PIC
    4 .text
    5 .globl  aesni_encrypt
    6 .type   aesni_encrypt,@function
    7 .align  16
    8 aesni_encrypt:
    9 .L_aesni_encrypt_begin:
   10         movl    4(%esp),%eax
   11         movl    12(%esp),%edx
   12         movups  (%eax),%xmm2
   13         movl    240(%edx),%ecx
   14         movl    8(%esp),%eax
   15         movups  (%edx),%xmm0
   16         movups  16(%edx),%xmm1
   17         leal    32(%edx),%edx
   18         xorps   %xmm0,%xmm2
   19 .L000enc1_loop_1:
   20 .byte   102,15,56,220,209
   21         decl    %ecx
   22         movups  (%edx),%xmm1
   23         leal    16(%edx),%edx
   24         jnz     .L000enc1_loop_1
   25 .byte   102,15,56,221,209
   26         pxor    %xmm0,%xmm0
   27         pxor    %xmm1,%xmm1
   28         movups  %xmm2,(%eax)
   29         pxor    %xmm2,%xmm2
   30         ret
   31 .size   aesni_encrypt,.-.L_aesni_encrypt_begin
   32 .globl  aesni_decrypt
   33 .type   aesni_decrypt,@function
   34 .align  16
   35 aesni_decrypt:
   36 .L_aesni_decrypt_begin:
   37         movl    4(%esp),%eax
   38         movl    12(%esp),%edx
   39         movups  (%eax),%xmm2
   40         movl    240(%edx),%ecx
   41         movl    8(%esp),%eax
   42         movups  (%edx),%xmm0
   43         movups  16(%edx),%xmm1
   44         leal    32(%edx),%edx
   45         xorps   %xmm0,%xmm2
   46 .L001dec1_loop_2:
   47 .byte   102,15,56,222,209
   48         decl    %ecx
   49         movups  (%edx),%xmm1
   50         leal    16(%edx),%edx
   51         jnz     .L001dec1_loop_2
   52 .byte   102,15,56,223,209
   53         pxor    %xmm0,%xmm0
   54         pxor    %xmm1,%xmm1
   55         movups  %xmm2,(%eax)
   56         pxor    %xmm2,%xmm2
   57         ret
   58 .size   aesni_decrypt,.-.L_aesni_decrypt_begin
   59 .type   _aesni_encrypt2,@function
   60 .align  16
   61 _aesni_encrypt2:
   62         movups  (%edx),%xmm0
   63         shll    $4,%ecx
   64         movups  16(%edx),%xmm1
   65         xorps   %xmm0,%xmm2
   66         pxor    %xmm0,%xmm3
   67         movups  32(%edx),%xmm0
   68         leal    32(%edx,%ecx,1),%edx
   69         negl    %ecx
   70         addl    $16,%ecx
   71 .L002enc2_loop:
   72 .byte   102,15,56,220,209
   73 .byte   102,15,56,220,217
   74         movups  (%edx,%ecx,1),%xmm1
   75         addl    $32,%ecx
   76 .byte   102,15,56,220,208
   77 .byte   102,15,56,220,216
   78         movups  -16(%edx,%ecx,1),%xmm0
   79         jnz     .L002enc2_loop
   80 .byte   102,15,56,220,209
   81 .byte   102,15,56,220,217
   82 .byte   102,15,56,221,208
   83 .byte   102,15,56,221,216
   84         ret
   85 .size   _aesni_encrypt2,.-_aesni_encrypt2
   86 .type   _aesni_decrypt2,@function
   87 .align  16
   88 _aesni_decrypt2:
   89         movups  (%edx),%xmm0
   90         shll    $4,%ecx
   91         movups  16(%edx),%xmm1
   92         xorps   %xmm0,%xmm2
   93         pxor    %xmm0,%xmm3
   94         movups  32(%edx),%xmm0
   95         leal    32(%edx,%ecx,1),%edx
   96         negl    %ecx
   97         addl    $16,%ecx
   98 .L003dec2_loop:
   99 .byte   102,15,56,222,209
  100 .byte   102,15,56,222,217
  101         movups  (%edx,%ecx,1),%xmm1
  102         addl    $32,%ecx
  103 .byte   102,15,56,222,208
  104 .byte   102,15,56,222,216
  105         movups  -16(%edx,%ecx,1),%xmm0
  106         jnz     .L003dec2_loop
  107 .byte   102,15,56,222,209
  108 .byte   102,15,56,222,217
  109 .byte   102,15,56,223,208
  110 .byte   102,15,56,223,216
  111         ret
  112 .size   _aesni_decrypt2,.-_aesni_decrypt2
  113 .type   _aesni_encrypt3,@function
  114 .align  16
  115 _aesni_encrypt3:
  116         movups  (%edx),%xmm0
  117         shll    $4,%ecx
  118         movups  16(%edx),%xmm1
  119         xorps   %xmm0,%xmm2
  120         pxor    %xmm0,%xmm3
  121         pxor    %xmm0,%xmm4
  122         movups  32(%edx),%xmm0
  123         leal    32(%edx,%ecx,1),%edx
  124         negl    %ecx
  125         addl    $16,%ecx
  126 .L004enc3_loop:
  127 .byte   102,15,56,220,209
  128 .byte   102,15,56,220,217
  129 .byte   102,15,56,220,225
  130         movups  (%edx,%ecx,1),%xmm1
  131         addl    $32,%ecx
  132 .byte   102,15,56,220,208
  133 .byte   102,15,56,220,216
  134 .byte   102,15,56,220,224
  135         movups  -16(%edx,%ecx,1),%xmm0
  136         jnz     .L004enc3_loop
  137 .byte   102,15,56,220,209
  138 .byte   102,15,56,220,217
  139 .byte   102,15,56,220,225
  140 .byte   102,15,56,221,208
  141 .byte   102,15,56,221,216
  142 .byte   102,15,56,221,224
  143         ret
  144 .size   _aesni_encrypt3,.-_aesni_encrypt3
  145 .type   _aesni_decrypt3,@function
  146 .align  16
  147 _aesni_decrypt3:
  148         movups  (%edx),%xmm0
  149         shll    $4,%ecx
  150         movups  16(%edx),%xmm1
  151         xorps   %xmm0,%xmm2
  152         pxor    %xmm0,%xmm3
  153         pxor    %xmm0,%xmm4
  154         movups  32(%edx),%xmm0
  155         leal    32(%edx,%ecx,1),%edx
  156         negl    %ecx
  157         addl    $16,%ecx
  158 .L005dec3_loop:
  159 .byte   102,15,56,222,209
  160 .byte   102,15,56,222,217
  161 .byte   102,15,56,222,225
  162         movups  (%edx,%ecx,1),%xmm1
  163         addl    $32,%ecx
  164 .byte   102,15,56,222,208
  165 .byte   102,15,56,222,216
  166 .byte   102,15,56,222,224
  167         movups  -16(%edx,%ecx,1),%xmm0
  168         jnz     .L005dec3_loop
  169 .byte   102,15,56,222,209
  170 .byte   102,15,56,222,217
  171 .byte   102,15,56,222,225
  172 .byte   102,15,56,223,208
  173 .byte   102,15,56,223,216
  174 .byte   102,15,56,223,224
  175         ret
  176 .size   _aesni_decrypt3,.-_aesni_decrypt3
  177 .type   _aesni_encrypt4,@function
  178 .align  16
  179 _aesni_encrypt4:
  180         movups  (%edx),%xmm0
  181         movups  16(%edx),%xmm1
  182         shll    $4,%ecx
  183         xorps   %xmm0,%xmm2
  184         pxor    %xmm0,%xmm3
  185         pxor    %xmm0,%xmm4
  186         pxor    %xmm0,%xmm5
  187         movups  32(%edx),%xmm0
  188         leal    32(%edx,%ecx,1),%edx
  189         negl    %ecx
  190 .byte   15,31,64,0
  191         addl    $16,%ecx
  192 .L006enc4_loop:
  193 .byte   102,15,56,220,209
  194 .byte   102,15,56,220,217
  195 .byte   102,15,56,220,225
  196 .byte   102,15,56,220,233
  197         movups  (%edx,%ecx,1),%xmm1
  198         addl    $32,%ecx
  199 .byte   102,15,56,220,208
  200 .byte   102,15,56,220,216
  201 .byte   102,15,56,220,224
  202 .byte   102,15,56,220,232
  203         movups  -16(%edx,%ecx,1),%xmm0
  204         jnz     .L006enc4_loop
  205 .byte   102,15,56,220,209
  206 .byte   102,15,56,220,217
  207 .byte   102,15,56,220,225
  208 .byte   102,15,56,220,233
  209 .byte   102,15,56,221,208
  210 .byte   102,15,56,221,216
  211 .byte   102,15,56,221,224
  212 .byte   102,15,56,221,232
  213         ret
  214 .size   _aesni_encrypt4,.-_aesni_encrypt4
  215 .type   _aesni_decrypt4,@function
  216 .align  16
  217 _aesni_decrypt4:
  218         movups  (%edx),%xmm0
  219         movups  16(%edx),%xmm1
  220         shll    $4,%ecx
  221         xorps   %xmm0,%xmm2
  222         pxor    %xmm0,%xmm3
  223         pxor    %xmm0,%xmm4
  224         pxor    %xmm0,%xmm5
  225         movups  32(%edx),%xmm0
  226         leal    32(%edx,%ecx,1),%edx
  227         negl    %ecx
  228 .byte   15,31,64,0
  229         addl    $16,%ecx
  230 .L007dec4_loop:
  231 .byte   102,15,56,222,209
  232 .byte   102,15,56,222,217
  233 .byte   102,15,56,222,225
  234 .byte   102,15,56,222,233
  235         movups  (%edx,%ecx,1),%xmm1
  236         addl    $32,%ecx
  237 .byte   102,15,56,222,208
  238 .byte   102,15,56,222,216
  239 .byte   102,15,56,222,224
  240 .byte   102,15,56,222,232
  241         movups  -16(%edx,%ecx,1),%xmm0
  242         jnz     .L007dec4_loop
  243 .byte   102,15,56,222,209
  244 .byte   102,15,56,222,217
  245 .byte   102,15,56,222,225
  246 .byte   102,15,56,222,233
  247 .byte   102,15,56,223,208
  248 .byte   102,15,56,223,216
  249 .byte   102,15,56,223,224
  250 .byte   102,15,56,223,232
  251         ret
  252 .size   _aesni_decrypt4,.-_aesni_decrypt4
  253 .type   _aesni_encrypt6,@function
  254 .align  16
  255 _aesni_encrypt6:
  256         movups  (%edx),%xmm0
  257         shll    $4,%ecx
  258         movups  16(%edx),%xmm1
  259         xorps   %xmm0,%xmm2
  260         pxor    %xmm0,%xmm3
  261         pxor    %xmm0,%xmm4
  262 .byte   102,15,56,220,209
  263         pxor    %xmm0,%xmm5
  264         pxor    %xmm0,%xmm6
  265 .byte   102,15,56,220,217
  266         leal    32(%edx,%ecx,1),%edx
  267         negl    %ecx
  268 .byte   102,15,56,220,225
  269         pxor    %xmm0,%xmm7
  270         movups  (%edx,%ecx,1),%xmm0
  271         addl    $16,%ecx
  272         jmp     .L008_aesni_encrypt6_inner
  273 .align  16
  274 .L009enc6_loop:
  275 .byte   102,15,56,220,209
  276 .byte   102,15,56,220,217
  277 .byte   102,15,56,220,225
  278 .L008_aesni_encrypt6_inner:
  279 .byte   102,15,56,220,233
  280 .byte   102,15,56,220,241
  281 .byte   102,15,56,220,249
  282 .L_aesni_encrypt6_enter:
  283         movups  (%edx,%ecx,1),%xmm1
  284         addl    $32,%ecx
  285 .byte   102,15,56,220,208
  286 .byte   102,15,56,220,216
  287 .byte   102,15,56,220,224
  288 .byte   102,15,56,220,232
  289 .byte   102,15,56,220,240
  290 .byte   102,15,56,220,248
  291         movups  -16(%edx,%ecx,1),%xmm0
  292         jnz     .L009enc6_loop
  293 .byte   102,15,56,220,209
  294 .byte   102,15,56,220,217
  295 .byte   102,15,56,220,225
  296 .byte   102,15,56,220,233
  297 .byte   102,15,56,220,241
  298 .byte   102,15,56,220,249
  299 .byte   102,15,56,221,208
  300 .byte   102,15,56,221,216
  301 .byte   102,15,56,221,224
  302 .byte   102,15,56,221,232
  303 .byte   102,15,56,221,240
  304 .byte   102,15,56,221,248
  305         ret
  306 .size   _aesni_encrypt6,.-_aesni_encrypt6
  307 .type   _aesni_decrypt6,@function
  308 .align  16
  309 _aesni_decrypt6:
  310         movups  (%edx),%xmm0
  311         shll    $4,%ecx
  312         movups  16(%edx),%xmm1
  313         xorps   %xmm0,%xmm2
  314         pxor    %xmm0,%xmm3
  315         pxor    %xmm0,%xmm4
  316 .byte   102,15,56,222,209
  317         pxor    %xmm0,%xmm5
  318         pxor    %xmm0,%xmm6
  319 .byte   102,15,56,222,217
  320         leal    32(%edx,%ecx,1),%edx
  321         negl    %ecx
  322 .byte   102,15,56,222,225
  323         pxor    %xmm0,%xmm7
  324         movups  (%edx,%ecx,1),%xmm0
  325         addl    $16,%ecx
  326         jmp     .L010_aesni_decrypt6_inner
  327 .align  16
  328 .L011dec6_loop:
  329 .byte   102,15,56,222,209
  330 .byte   102,15,56,222,217
  331 .byte   102,15,56,222,225
  332 .L010_aesni_decrypt6_inner:
  333 .byte   102,15,56,222,233
  334 .byte   102,15,56,222,241
  335 .byte   102,15,56,222,249
  336 .L_aesni_decrypt6_enter:
  337         movups  (%edx,%ecx,1),%xmm1
  338         addl    $32,%ecx
  339 .byte   102,15,56,222,208
  340 .byte   102,15,56,222,216
  341 .byte   102,15,56,222,224
  342 .byte   102,15,56,222,232
  343 .byte   102,15,56,222,240
  344 .byte   102,15,56,222,248
  345         movups  -16(%edx,%ecx,1),%xmm0
  346         jnz     .L011dec6_loop
  347 .byte   102,15,56,222,209
  348 .byte   102,15,56,222,217
  349 .byte   102,15,56,222,225
  350 .byte   102,15,56,222,233
  351 .byte   102,15,56,222,241
  352 .byte   102,15,56,222,249
  353 .byte   102,15,56,223,208
  354 .byte   102,15,56,223,216
  355 .byte   102,15,56,223,224
  356 .byte   102,15,56,223,232
  357 .byte   102,15,56,223,240
  358 .byte   102,15,56,223,248
  359         ret
  360 .size   _aesni_decrypt6,.-_aesni_decrypt6
  361 .globl  aesni_ecb_encrypt
  362 .type   aesni_ecb_encrypt,@function
  363 .align  16
  364 aesni_ecb_encrypt:
  365 .L_aesni_ecb_encrypt_begin:
  366         pushl   %ebp
  367         pushl   %ebx
  368         pushl   %esi
  369         pushl   %edi
  370         movl    20(%esp),%esi
  371         movl    24(%esp),%edi
  372         movl    28(%esp),%eax
  373         movl    32(%esp),%edx
  374         movl    36(%esp),%ebx
  375         andl    $-16,%eax
  376         jz      .L012ecb_ret
  377         movl    240(%edx),%ecx
  378         testl   %ebx,%ebx
  379         jz      .L013ecb_decrypt
  380         movl    %edx,%ebp
  381         movl    %ecx,%ebx
  382         cmpl    $96,%eax
  383         jb      .L014ecb_enc_tail
  384         movdqu  (%esi),%xmm2
  385         movdqu  16(%esi),%xmm3
  386         movdqu  32(%esi),%xmm4
  387         movdqu  48(%esi),%xmm5
  388         movdqu  64(%esi),%xmm6
  389         movdqu  80(%esi),%xmm7
  390         leal    96(%esi),%esi
  391         subl    $96,%eax
  392         jmp     .L015ecb_enc_loop6_enter
  393 .align  16
  394 .L016ecb_enc_loop6:
  395         movups  %xmm2,(%edi)
  396         movdqu  (%esi),%xmm2
  397         movups  %xmm3,16(%edi)
  398         movdqu  16(%esi),%xmm3
  399         movups  %xmm4,32(%edi)
  400         movdqu  32(%esi),%xmm4
  401         movups  %xmm5,48(%edi)
  402         movdqu  48(%esi),%xmm5
  403         movups  %xmm6,64(%edi)
  404         movdqu  64(%esi),%xmm6
  405         movups  %xmm7,80(%edi)
  406         leal    96(%edi),%edi
  407         movdqu  80(%esi),%xmm7
  408         leal    96(%esi),%esi
  409 .L015ecb_enc_loop6_enter:
  410         call    _aesni_encrypt6
  411         movl    %ebp,%edx
  412         movl    %ebx,%ecx
  413         subl    $96,%eax
  414         jnc     .L016ecb_enc_loop6
  415         movups  %xmm2,(%edi)
  416         movups  %xmm3,16(%edi)
  417         movups  %xmm4,32(%edi)
  418         movups  %xmm5,48(%edi)
  419         movups  %xmm6,64(%edi)
  420         movups  %xmm7,80(%edi)
  421         leal    96(%edi),%edi
  422         addl    $96,%eax
  423         jz      .L012ecb_ret
  424 .L014ecb_enc_tail:
  425         movups  (%esi),%xmm2
  426         cmpl    $32,%eax
  427         jb      .L017ecb_enc_one
  428         movups  16(%esi),%xmm3
  429         je      .L018ecb_enc_two
  430         movups  32(%esi),%xmm4
  431         cmpl    $64,%eax
  432         jb      .L019ecb_enc_three
  433         movups  48(%esi),%xmm5
  434         je      .L020ecb_enc_four
  435         movups  64(%esi),%xmm6
  436         xorps   %xmm7,%xmm7
  437         call    _aesni_encrypt6
  438         movups  %xmm2,(%edi)
  439         movups  %xmm3,16(%edi)
  440         movups  %xmm4,32(%edi)
  441         movups  %xmm5,48(%edi)
  442         movups  %xmm6,64(%edi)
  443         jmp     .L012ecb_ret
  444 .align  16
  445 .L017ecb_enc_one:
  446         movups  (%edx),%xmm0
  447         movups  16(%edx),%xmm1
  448         leal    32(%edx),%edx
  449         xorps   %xmm0,%xmm2
  450 .L021enc1_loop_3:
  451 .byte   102,15,56,220,209
  452         decl    %ecx
  453         movups  (%edx),%xmm1
  454         leal    16(%edx),%edx
  455         jnz     .L021enc1_loop_3
  456 .byte   102,15,56,221,209
  457         movups  %xmm2,(%edi)
  458         jmp     .L012ecb_ret
  459 .align  16
  460 .L018ecb_enc_two:
  461         call    _aesni_encrypt2
  462         movups  %xmm2,(%edi)
  463         movups  %xmm3,16(%edi)
  464         jmp     .L012ecb_ret
  465 .align  16
  466 .L019ecb_enc_three:
  467         call    _aesni_encrypt3
  468         movups  %xmm2,(%edi)
  469         movups  %xmm3,16(%edi)
  470         movups  %xmm4,32(%edi)
  471         jmp     .L012ecb_ret
  472 .align  16
  473 .L020ecb_enc_four:
  474         call    _aesni_encrypt4
  475         movups  %xmm2,(%edi)
  476         movups  %xmm3,16(%edi)
  477         movups  %xmm4,32(%edi)
  478         movups  %xmm5,48(%edi)
  479         jmp     .L012ecb_ret
  480 .align  16
  481 .L013ecb_decrypt:
  482         movl    %edx,%ebp
  483         movl    %ecx,%ebx
  484         cmpl    $96,%eax
  485         jb      .L022ecb_dec_tail
  486         movdqu  (%esi),%xmm2
  487         movdqu  16(%esi),%xmm3
  488         movdqu  32(%esi),%xmm4
  489         movdqu  48(%esi),%xmm5
  490         movdqu  64(%esi),%xmm6
  491         movdqu  80(%esi),%xmm7
  492         leal    96(%esi),%esi
  493         subl    $96,%eax
  494         jmp     .L023ecb_dec_loop6_enter
  495 .align  16
  496 .L024ecb_dec_loop6:
  497         movups  %xmm2,(%edi)
  498         movdqu  (%esi),%xmm2
  499         movups  %xmm3,16(%edi)
  500         movdqu  16(%esi),%xmm3
  501         movups  %xmm4,32(%edi)
  502         movdqu  32(%esi),%xmm4
  503         movups  %xmm5,48(%edi)
  504         movdqu  48(%esi),%xmm5
  505         movups  %xmm6,64(%edi)
  506         movdqu  64(%esi),%xmm6
  507         movups  %xmm7,80(%edi)
  508         leal    96(%edi),%edi
  509         movdqu  80(%esi),%xmm7
  510         leal    96(%esi),%esi
  511 .L023ecb_dec_loop6_enter:
  512         call    _aesni_decrypt6
  513         movl    %ebp,%edx
  514         movl    %ebx,%ecx
  515         subl    $96,%eax
  516         jnc     .L024ecb_dec_loop6
  517         movups  %xmm2,(%edi)
  518         movups  %xmm3,16(%edi)
  519         movups  %xmm4,32(%edi)
  520         movups  %xmm5,48(%edi)
  521         movups  %xmm6,64(%edi)
  522         movups  %xmm7,80(%edi)
  523         leal    96(%edi),%edi
  524         addl    $96,%eax
  525         jz      .L012ecb_ret
  526 .L022ecb_dec_tail:
  527         movups  (%esi),%xmm2
  528         cmpl    $32,%eax
  529         jb      .L025ecb_dec_one
  530         movups  16(%esi),%xmm3
  531         je      .L026ecb_dec_two
  532         movups  32(%esi),%xmm4
  533         cmpl    $64,%eax
  534         jb      .L027ecb_dec_three
  535         movups  48(%esi),%xmm5
  536         je      .L028ecb_dec_four
  537         movups  64(%esi),%xmm6
  538         xorps   %xmm7,%xmm7
  539         call    _aesni_decrypt6
  540         movups  %xmm2,(%edi)
  541         movups  %xmm3,16(%edi)
  542         movups  %xmm4,32(%edi)
  543         movups  %xmm5,48(%edi)
  544         movups  %xmm6,64(%edi)
  545         jmp     .L012ecb_ret
  546 .align  16
  547 .L025ecb_dec_one:
  548         movups  (%edx),%xmm0
  549         movups  16(%edx),%xmm1
  550         leal    32(%edx),%edx
  551         xorps   %xmm0,%xmm2
  552 .L029dec1_loop_4:
  553 .byte   102,15,56,222,209
  554         decl    %ecx
  555         movups  (%edx),%xmm1
  556         leal    16(%edx),%edx
  557         jnz     .L029dec1_loop_4
  558 .byte   102,15,56,223,209
  559         movups  %xmm2,(%edi)
  560         jmp     .L012ecb_ret
  561 .align  16
  562 .L026ecb_dec_two:
  563         call    _aesni_decrypt2
  564         movups  %xmm2,(%edi)
  565         movups  %xmm3,16(%edi)
  566         jmp     .L012ecb_ret
  567 .align  16
  568 .L027ecb_dec_three:
  569         call    _aesni_decrypt3
  570         movups  %xmm2,(%edi)
  571         movups  %xmm3,16(%edi)
  572         movups  %xmm4,32(%edi)
  573         jmp     .L012ecb_ret
  574 .align  16
  575 .L028ecb_dec_four:
  576         call    _aesni_decrypt4
  577         movups  %xmm2,(%edi)
  578         movups  %xmm3,16(%edi)
  579         movups  %xmm4,32(%edi)
  580         movups  %xmm5,48(%edi)
  581 .L012ecb_ret:
  582         pxor    %xmm0,%xmm0
  583         pxor    %xmm1,%xmm1
  584         pxor    %xmm2,%xmm2
  585         pxor    %xmm3,%xmm3
  586         pxor    %xmm4,%xmm4
  587         pxor    %xmm5,%xmm5
  588         pxor    %xmm6,%xmm6
  589         pxor    %xmm7,%xmm7
  590         popl    %edi
  591         popl    %esi
  592         popl    %ebx
  593         popl    %ebp
  594         ret
  595 .size   aesni_ecb_encrypt,.-.L_aesni_ecb_encrypt_begin
  596 .globl  aesni_ccm64_encrypt_blocks
  597 .type   aesni_ccm64_encrypt_blocks,@function
  598 .align  16
  599 aesni_ccm64_encrypt_blocks:
  600 .L_aesni_ccm64_encrypt_blocks_begin:
  601         pushl   %ebp
  602         pushl   %ebx
  603         pushl   %esi
  604         pushl   %edi
  605         movl    20(%esp),%esi
  606         movl    24(%esp),%edi
  607         movl    28(%esp),%eax
  608         movl    32(%esp),%edx
  609         movl    36(%esp),%ebx
  610         movl    40(%esp),%ecx
  611         movl    %esp,%ebp
  612         subl    $60,%esp
  613         andl    $-16,%esp
  614         movl    %ebp,48(%esp)
  615         movdqu  (%ebx),%xmm7
  616         movdqu  (%ecx),%xmm3
  617         movl    240(%edx),%ecx
  618         movl    $202182159,(%esp)
  619         movl    $134810123,4(%esp)
  620         movl    $67438087,8(%esp)
  621         movl    $66051,12(%esp)
  622         movl    $1,%ebx
  623         xorl    %ebp,%ebp
  624         movl    %ebx,16(%esp)
  625         movl    %ebp,20(%esp)
  626         movl    %ebp,24(%esp)
  627         movl    %ebp,28(%esp)
  628         shll    $4,%ecx
  629         movl    $16,%ebx
  630         leal    (%edx),%ebp
  631         movdqa  (%esp),%xmm5
  632         movdqa  %xmm7,%xmm2
  633         leal    32(%edx,%ecx,1),%edx
  634         subl    %ecx,%ebx
  635 .byte   102,15,56,0,253
  636 .L030ccm64_enc_outer:
  637         movups  (%ebp),%xmm0
  638         movl    %ebx,%ecx
  639         movups  (%esi),%xmm6
  640         xorps   %xmm0,%xmm2
  641         movups  16(%ebp),%xmm1
  642         xorps   %xmm6,%xmm0
  643         xorps   %xmm0,%xmm3
  644         movups  32(%ebp),%xmm0
  645 .L031ccm64_enc2_loop:
  646 .byte   102,15,56,220,209
  647 .byte   102,15,56,220,217
  648         movups  (%edx,%ecx,1),%xmm1
  649         addl    $32,%ecx
  650 .byte   102,15,56,220,208
  651 .byte   102,15,56,220,216
  652         movups  -16(%edx,%ecx,1),%xmm0
  653         jnz     .L031ccm64_enc2_loop
  654 .byte   102,15,56,220,209
  655 .byte   102,15,56,220,217
  656         paddq   16(%esp),%xmm7
  657         decl    %eax
  658 .byte   102,15,56,221,208
  659 .byte   102,15,56,221,216
  660         leal    16(%esi),%esi
  661         xorps   %xmm2,%xmm6
  662         movdqa  %xmm7,%xmm2
  663         movups  %xmm6,(%edi)
  664 .byte   102,15,56,0,213
  665         leal    16(%edi),%edi
  666         jnz     .L030ccm64_enc_outer
  667         movl    48(%esp),%esp
  668         movl    40(%esp),%edi
  669         movups  %xmm3,(%edi)
  670         pxor    %xmm0,%xmm0
  671         pxor    %xmm1,%xmm1
  672         pxor    %xmm2,%xmm2
  673         pxor    %xmm3,%xmm3
  674         pxor    %xmm4,%xmm4
  675         pxor    %xmm5,%xmm5
  676         pxor    %xmm6,%xmm6
  677         pxor    %xmm7,%xmm7
  678         popl    %edi
  679         popl    %esi
  680         popl    %ebx
  681         popl    %ebp
  682         ret
  683 .size   aesni_ccm64_encrypt_blocks,.-.L_aesni_ccm64_encrypt_blocks_begin
  684 .globl  aesni_ccm64_decrypt_blocks
  685 .type   aesni_ccm64_decrypt_blocks,@function
  686 .align  16
  687 aesni_ccm64_decrypt_blocks:
  688 .L_aesni_ccm64_decrypt_blocks_begin:
  689         pushl   %ebp
  690         pushl   %ebx
  691         pushl   %esi
  692         pushl   %edi
  693         movl    20(%esp),%esi
  694         movl    24(%esp),%edi
  695         movl    28(%esp),%eax
  696         movl    32(%esp),%edx
  697         movl    36(%esp),%ebx
  698         movl    40(%esp),%ecx
  699         movl    %esp,%ebp
  700         subl    $60,%esp
  701         andl    $-16,%esp
  702         movl    %ebp,48(%esp)
  703         movdqu  (%ebx),%xmm7
  704         movdqu  (%ecx),%xmm3
  705         movl    240(%edx),%ecx
  706         movl    $202182159,(%esp)
  707         movl    $134810123,4(%esp)
  708         movl    $67438087,8(%esp)
  709         movl    $66051,12(%esp)
  710         movl    $1,%ebx
  711         xorl    %ebp,%ebp
  712         movl    %ebx,16(%esp)
  713         movl    %ebp,20(%esp)
  714         movl    %ebp,24(%esp)
  715         movl    %ebp,28(%esp)
  716         movdqa  (%esp),%xmm5
  717         movdqa  %xmm7,%xmm2
  718         movl    %edx,%ebp
  719         movl    %ecx,%ebx
  720 .byte   102,15,56,0,253
  721         movups  (%edx),%xmm0
  722         movups  16(%edx),%xmm1
  723         leal    32(%edx),%edx
  724         xorps   %xmm0,%xmm2
  725 .L032enc1_loop_5:
  726 .byte   102,15,56,220,209
  727         decl    %ecx
  728         movups  (%edx),%xmm1
  729         leal    16(%edx),%edx
  730         jnz     .L032enc1_loop_5
  731 .byte   102,15,56,221,209
  732         shll    $4,%ebx
  733         movl    $16,%ecx
  734         movups  (%esi),%xmm6
  735         paddq   16(%esp),%xmm7
  736         leal    16(%esi),%esi
  737         subl    %ebx,%ecx
  738         leal    32(%ebp,%ebx,1),%edx
  739         movl    %ecx,%ebx
  740         jmp     .L033ccm64_dec_outer
  741 .align  16
  742 .L033ccm64_dec_outer:
  743         xorps   %xmm2,%xmm6
  744         movdqa  %xmm7,%xmm2
  745         movups  %xmm6,(%edi)
  746         leal    16(%edi),%edi
  747 .byte   102,15,56,0,213
  748         subl    $1,%eax
  749         jz      .L034ccm64_dec_break
  750         movups  (%ebp),%xmm0
  751         movl    %ebx,%ecx
  752         movups  16(%ebp),%xmm1
  753         xorps   %xmm0,%xmm6
  754         xorps   %xmm0,%xmm2
  755         xorps   %xmm6,%xmm3
  756         movups  32(%ebp),%xmm0
  757 .L035ccm64_dec2_loop:
  758 .byte   102,15,56,220,209
  759 .byte   102,15,56,220,217
  760         movups  (%edx,%ecx,1),%xmm1
  761         addl    $32,%ecx
  762 .byte   102,15,56,220,208
  763 .byte   102,15,56,220,216
  764         movups  -16(%edx,%ecx,1),%xmm0
  765         jnz     .L035ccm64_dec2_loop
  766         movups  (%esi),%xmm6
  767         paddq   16(%esp),%xmm7
  768 .byte   102,15,56,220,209
  769 .byte   102,15,56,220,217
  770 .byte   102,15,56,221,208
  771 .byte   102,15,56,221,216
  772         leal    16(%esi),%esi
  773         jmp     .L033ccm64_dec_outer
  774 .align  16
  775 .L034ccm64_dec_break:
  776         movl    240(%ebp),%ecx
  777         movl    %ebp,%edx
  778         movups  (%edx),%xmm0
  779         movups  16(%edx),%xmm1
  780         xorps   %xmm0,%xmm6
  781         leal    32(%edx),%edx
  782         xorps   %xmm6,%xmm3
  783 .L036enc1_loop_6:
  784 .byte   102,15,56,220,217
  785         decl    %ecx
  786         movups  (%edx),%xmm1
  787         leal    16(%edx),%edx
  788         jnz     .L036enc1_loop_6
  789 .byte   102,15,56,221,217
  790         movl    48(%esp),%esp
  791         movl    40(%esp),%edi
  792         movups  %xmm3,(%edi)
  793         pxor    %xmm0,%xmm0
  794         pxor    %xmm1,%xmm1
  795         pxor    %xmm2,%xmm2
  796         pxor    %xmm3,%xmm3
  797         pxor    %xmm4,%xmm4
  798         pxor    %xmm5,%xmm5
  799         pxor    %xmm6,%xmm6
  800         pxor    %xmm7,%xmm7
  801         popl    %edi
  802         popl    %esi
  803         popl    %ebx
  804         popl    %ebp
  805         ret
  806 .size   aesni_ccm64_decrypt_blocks,.-.L_aesni_ccm64_decrypt_blocks_begin
  807 .globl  aesni_ctr32_encrypt_blocks
  808 .type   aesni_ctr32_encrypt_blocks,@function
  809 .align  16
  810 aesni_ctr32_encrypt_blocks:
  811 .L_aesni_ctr32_encrypt_blocks_begin:
  812         pushl   %ebp
  813         pushl   %ebx
  814         pushl   %esi
  815         pushl   %edi
  816         movl    20(%esp),%esi
  817         movl    24(%esp),%edi
  818         movl    28(%esp),%eax
  819         movl    32(%esp),%edx
  820         movl    36(%esp),%ebx
  821         movl    %esp,%ebp
  822         subl    $88,%esp
  823         andl    $-16,%esp
  824         movl    %ebp,80(%esp)
  825         cmpl    $1,%eax
  826         je      .L037ctr32_one_shortcut
  827         movdqu  (%ebx),%xmm7
  828         movl    $202182159,(%esp)
  829         movl    $134810123,4(%esp)
  830         movl    $67438087,8(%esp)
  831         movl    $66051,12(%esp)
  832         movl    $6,%ecx
  833         xorl    %ebp,%ebp
  834         movl    %ecx,16(%esp)
  835         movl    %ecx,20(%esp)
  836         movl    %ecx,24(%esp)
  837         movl    %ebp,28(%esp)
  838 .byte   102,15,58,22,251,3
  839 .byte   102,15,58,34,253,3
  840         movl    240(%edx),%ecx
  841         bswap   %ebx
  842         pxor    %xmm0,%xmm0
  843         pxor    %xmm1,%xmm1
  844         movdqa  (%esp),%xmm2
  845 .byte   102,15,58,34,195,0
  846         leal    3(%ebx),%ebp
  847 .byte   102,15,58,34,205,0
  848         incl    %ebx
  849 .byte   102,15,58,34,195,1
  850         incl    %ebp
  851 .byte   102,15,58,34,205,1
  852         incl    %ebx
  853 .byte   102,15,58,34,195,2
  854         incl    %ebp
  855 .byte   102,15,58,34,205,2
  856         movdqa  %xmm0,48(%esp)
  857 .byte   102,15,56,0,194
  858         movdqu  (%edx),%xmm6
  859         movdqa  %xmm1,64(%esp)
  860 .byte   102,15,56,0,202
  861         pshufd  $192,%xmm0,%xmm2
  862         pshufd  $128,%xmm0,%xmm3
  863         cmpl    $6,%eax
  864         jb      .L038ctr32_tail
  865         pxor    %xmm6,%xmm7
  866         shll    $4,%ecx
  867         movl    $16,%ebx
  868         movdqa  %xmm7,32(%esp)
  869         movl    %edx,%ebp
  870         subl    %ecx,%ebx
  871         leal    32(%edx,%ecx,1),%edx
  872         subl    $6,%eax
  873         jmp     .L039ctr32_loop6
  874 .align  16
  875 .L039ctr32_loop6:
  876         pshufd  $64,%xmm0,%xmm4
  877         movdqa  32(%esp),%xmm0
  878         pshufd  $192,%xmm1,%xmm5
  879         pxor    %xmm0,%xmm2
  880         pshufd  $128,%xmm1,%xmm6
  881         pxor    %xmm0,%xmm3
  882         pshufd  $64,%xmm1,%xmm7
  883         movups  16(%ebp),%xmm1
  884         pxor    %xmm0,%xmm4
  885         pxor    %xmm0,%xmm5
  886 .byte   102,15,56,220,209
  887         pxor    %xmm0,%xmm6
  888         pxor    %xmm0,%xmm7
  889 .byte   102,15,56,220,217
  890         movups  32(%ebp),%xmm0
  891         movl    %ebx,%ecx
  892 .byte   102,15,56,220,225
  893 .byte   102,15,56,220,233
  894 .byte   102,15,56,220,241
  895 .byte   102,15,56,220,249
  896         call    .L_aesni_encrypt6_enter
  897         movups  (%esi),%xmm1
  898         movups  16(%esi),%xmm0
  899         xorps   %xmm1,%xmm2
  900         movups  32(%esi),%xmm1
  901         xorps   %xmm0,%xmm3
  902         movups  %xmm2,(%edi)
  903         movdqa  16(%esp),%xmm0
  904         xorps   %xmm1,%xmm4
  905         movdqa  64(%esp),%xmm1
  906         movups  %xmm3,16(%edi)
  907         movups  %xmm4,32(%edi)
  908         paddd   %xmm0,%xmm1
  909         paddd   48(%esp),%xmm0
  910         movdqa  (%esp),%xmm2
  911         movups  48(%esi),%xmm3
  912         movups  64(%esi),%xmm4
  913         xorps   %xmm3,%xmm5
  914         movups  80(%esi),%xmm3
  915         leal    96(%esi),%esi
  916         movdqa  %xmm0,48(%esp)
  917 .byte   102,15,56,0,194
  918         xorps   %xmm4,%xmm6
  919         movups  %xmm5,48(%edi)
  920         xorps   %xmm3,%xmm7
  921         movdqa  %xmm1,64(%esp)
  922 .byte   102,15,56,0,202
  923         movups  %xmm6,64(%edi)
  924         pshufd  $192,%xmm0,%xmm2
  925         movups  %xmm7,80(%edi)
  926         leal    96(%edi),%edi
  927         pshufd  $128,%xmm0,%xmm3
  928         subl    $6,%eax
  929         jnc     .L039ctr32_loop6
  930         addl    $6,%eax
  931         jz      .L040ctr32_ret
  932         movdqu  (%ebp),%xmm7
  933         movl    %ebp,%edx
  934         pxor    32(%esp),%xmm7
  935         movl    240(%ebp),%ecx
  936 .L038ctr32_tail:
  937         por     %xmm7,%xmm2
  938         cmpl    $2,%eax
  939         jb      .L041ctr32_one
  940         pshufd  $64,%xmm0,%xmm4
  941         por     %xmm7,%xmm3
  942         je      .L042ctr32_two
  943         pshufd  $192,%xmm1,%xmm5
  944         por     %xmm7,%xmm4
  945         cmpl    $4,%eax
  946         jb      .L043ctr32_three
  947         pshufd  $128,%xmm1,%xmm6
  948         por     %xmm7,%xmm5
  949         je      .L044ctr32_four
  950         por     %xmm7,%xmm6
  951         call    _aesni_encrypt6
  952         movups  (%esi),%xmm1
  953         movups  16(%esi),%xmm0
  954         xorps   %xmm1,%xmm2
  955         movups  32(%esi),%xmm1
  956         xorps   %xmm0,%xmm3
  957         movups  48(%esi),%xmm0
  958         xorps   %xmm1,%xmm4
  959         movups  64(%esi),%xmm1
  960         xorps   %xmm0,%xmm5
  961         movups  %xmm2,(%edi)
  962         xorps   %xmm1,%xmm6
  963         movups  %xmm3,16(%edi)
  964         movups  %xmm4,32(%edi)
  965         movups  %xmm5,48(%edi)
  966         movups  %xmm6,64(%edi)
  967         jmp     .L040ctr32_ret
  968 .align  16
  969 .L037ctr32_one_shortcut:
  970         movups  (%ebx),%xmm2
  971         movl    240(%edx),%ecx
  972 .L041ctr32_one:
  973         movups  (%edx),%xmm0
  974         movups  16(%edx),%xmm1
  975         leal    32(%edx),%edx
  976         xorps   %xmm0,%xmm2
  977 .L045enc1_loop_7:
  978 .byte   102,15,56,220,209
  979         decl    %ecx
  980         movups  (%edx),%xmm1
  981         leal    16(%edx),%edx
  982         jnz     .L045enc1_loop_7
  983 .byte   102,15,56,221,209
  984         movups  (%esi),%xmm6
  985         xorps   %xmm2,%xmm6
  986         movups  %xmm6,(%edi)
  987         jmp     .L040ctr32_ret
  988 .align  16
  989 .L042ctr32_two:
  990         call    _aesni_encrypt2
  991         movups  (%esi),%xmm5
  992         movups  16(%esi),%xmm6
  993         xorps   %xmm5,%xmm2
  994         xorps   %xmm6,%xmm3
  995         movups  %xmm2,(%edi)
  996         movups  %xmm3,16(%edi)
  997         jmp     .L040ctr32_ret
  998 .align  16
  999 .L043ctr32_three:
 1000         call    _aesni_encrypt3
 1001         movups  (%esi),%xmm5
 1002         movups  16(%esi),%xmm6
 1003         xorps   %xmm5,%xmm2
 1004         movups  32(%esi),%xmm7
 1005         xorps   %xmm6,%xmm3
 1006         movups  %xmm2,(%edi)
 1007         xorps   %xmm7,%xmm4
 1008         movups  %xmm3,16(%edi)
 1009         movups  %xmm4,32(%edi)
 1010         jmp     .L040ctr32_ret
 1011 .align  16
 1012 .L044ctr32_four:
 1013         call    _aesni_encrypt4
 1014         movups  (%esi),%xmm6
 1015         movups  16(%esi),%xmm7
 1016         movups  32(%esi),%xmm1
 1017         xorps   %xmm6,%xmm2
 1018         movups  48(%esi),%xmm0
 1019         xorps   %xmm7,%xmm3
 1020         movups  %xmm2,(%edi)
 1021         xorps   %xmm1,%xmm4
 1022         movups  %xmm3,16(%edi)
 1023         xorps   %xmm0,%xmm5
 1024         movups  %xmm4,32(%edi)
 1025         movups  %xmm5,48(%edi)
 1026 .L040ctr32_ret:
 1027         pxor    %xmm0,%xmm0
 1028         pxor    %xmm1,%xmm1
 1029         pxor    %xmm2,%xmm2
 1030         pxor    %xmm3,%xmm3
 1031         pxor    %xmm4,%xmm4
 1032         movdqa  %xmm0,32(%esp)
 1033         pxor    %xmm5,%xmm5
 1034         movdqa  %xmm0,48(%esp)
 1035         pxor    %xmm6,%xmm6
 1036         movdqa  %xmm0,64(%esp)
 1037         pxor    %xmm7,%xmm7
 1038         movl    80(%esp),%esp
 1039         popl    %edi
 1040         popl    %esi
 1041         popl    %ebx
 1042         popl    %ebp
 1043         ret
 1044 .size   aesni_ctr32_encrypt_blocks,.-.L_aesni_ctr32_encrypt_blocks_begin
 1045 .globl  aesni_xts_encrypt
 1046 .type   aesni_xts_encrypt,@function
 1047 .align  16
 1048 aesni_xts_encrypt:
 1049 .L_aesni_xts_encrypt_begin:
 1050         pushl   %ebp
 1051         pushl   %ebx
 1052         pushl   %esi
 1053         pushl   %edi
 1054         movl    36(%esp),%edx
 1055         movl    40(%esp),%esi
 1056         movl    240(%edx),%ecx
 1057         movups  (%esi),%xmm2
 1058         movups  (%edx),%xmm0
 1059         movups  16(%edx),%xmm1
 1060         leal    32(%edx),%edx
 1061         xorps   %xmm0,%xmm2
 1062 .L046enc1_loop_8:
 1063 .byte   102,15,56,220,209
 1064         decl    %ecx
 1065         movups  (%edx),%xmm1
 1066         leal    16(%edx),%edx
 1067         jnz     .L046enc1_loop_8
 1068 .byte   102,15,56,221,209
 1069         movl    20(%esp),%esi
 1070         movl    24(%esp),%edi
 1071         movl    28(%esp),%eax
 1072         movl    32(%esp),%edx
 1073         movl    %esp,%ebp
 1074         subl    $120,%esp
 1075         movl    240(%edx),%ecx
 1076         andl    $-16,%esp
 1077         movl    $135,96(%esp)
 1078         movl    $0,100(%esp)
 1079         movl    $1,104(%esp)
 1080         movl    $0,108(%esp)
 1081         movl    %eax,112(%esp)
 1082         movl    %ebp,116(%esp)
 1083         movdqa  %xmm2,%xmm1
 1084         pxor    %xmm0,%xmm0
 1085         movdqa  96(%esp),%xmm3
 1086         pcmpgtd %xmm1,%xmm0
 1087         andl    $-16,%eax
 1088         movl    %edx,%ebp
 1089         movl    %ecx,%ebx
 1090         subl    $96,%eax
 1091         jc      .L047xts_enc_short
 1092         shll    $4,%ecx
 1093         movl    $16,%ebx
 1094         subl    %ecx,%ebx
 1095         leal    32(%edx,%ecx,1),%edx
 1096         jmp     .L048xts_enc_loop6
 1097 .align  16
 1098 .L048xts_enc_loop6:
 1099         pshufd  $19,%xmm0,%xmm2
 1100         pxor    %xmm0,%xmm0
 1101         movdqa  %xmm1,(%esp)
 1102         paddq   %xmm1,%xmm1
 1103         pand    %xmm3,%xmm2
 1104         pcmpgtd %xmm1,%xmm0
 1105         pxor    %xmm2,%xmm1
 1106         pshufd  $19,%xmm0,%xmm2
 1107         pxor    %xmm0,%xmm0
 1108         movdqa  %xmm1,16(%esp)
 1109         paddq   %xmm1,%xmm1
 1110         pand    %xmm3,%xmm2
 1111         pcmpgtd %xmm1,%xmm0
 1112         pxor    %xmm2,%xmm1
 1113         pshufd  $19,%xmm0,%xmm2
 1114         pxor    %xmm0,%xmm0
 1115         movdqa  %xmm1,32(%esp)
 1116         paddq   %xmm1,%xmm1
 1117         pand    %xmm3,%xmm2
 1118         pcmpgtd %xmm1,%xmm0
 1119         pxor    %xmm2,%xmm1
 1120         pshufd  $19,%xmm0,%xmm2
 1121         pxor    %xmm0,%xmm0
 1122         movdqa  %xmm1,48(%esp)
 1123         paddq   %xmm1,%xmm1
 1124         pand    %xmm3,%xmm2
 1125         pcmpgtd %xmm1,%xmm0
 1126         pxor    %xmm2,%xmm1
 1127         pshufd  $19,%xmm0,%xmm7
 1128         movdqa  %xmm1,64(%esp)
 1129         paddq   %xmm1,%xmm1
 1130         movups  (%ebp),%xmm0
 1131         pand    %xmm3,%xmm7
 1132         movups  (%esi),%xmm2
 1133         pxor    %xmm1,%xmm7
 1134         movl    %ebx,%ecx
 1135         movdqu  16(%esi),%xmm3
 1136         xorps   %xmm0,%xmm2
 1137         movdqu  32(%esi),%xmm4
 1138         pxor    %xmm0,%xmm3
 1139         movdqu  48(%esi),%xmm5
 1140         pxor    %xmm0,%xmm4
 1141         movdqu  64(%esi),%xmm6
 1142         pxor    %xmm0,%xmm5
 1143         movdqu  80(%esi),%xmm1
 1144         pxor    %xmm0,%xmm6
 1145         leal    96(%esi),%esi
 1146         pxor    (%esp),%xmm2
 1147         movdqa  %xmm7,80(%esp)
 1148         pxor    %xmm1,%xmm7
 1149         movups  16(%ebp),%xmm1
 1150         pxor    16(%esp),%xmm3
 1151         pxor    32(%esp),%xmm4
 1152 .byte   102,15,56,220,209
 1153         pxor    48(%esp),%xmm5
 1154         pxor    64(%esp),%xmm6
 1155 .byte   102,15,56,220,217
 1156         pxor    %xmm0,%xmm7
 1157         movups  32(%ebp),%xmm0
 1158 .byte   102,15,56,220,225
 1159 .byte   102,15,56,220,233
 1160 .byte   102,15,56,220,241
 1161 .byte   102,15,56,220,249
 1162         call    .L_aesni_encrypt6_enter
 1163         movdqa  80(%esp),%xmm1
 1164         pxor    %xmm0,%xmm0
 1165         xorps   (%esp),%xmm2
 1166         pcmpgtd %xmm1,%xmm0
 1167         xorps   16(%esp),%xmm3
 1168         movups  %xmm2,(%edi)
 1169         xorps   32(%esp),%xmm4
 1170         movups  %xmm3,16(%edi)
 1171         xorps   48(%esp),%xmm5
 1172         movups  %xmm4,32(%edi)
 1173         xorps   64(%esp),%xmm6
 1174         movups  %xmm5,48(%edi)
 1175         xorps   %xmm1,%xmm7
 1176         movups  %xmm6,64(%edi)
 1177         pshufd  $19,%xmm0,%xmm2
 1178         movups  %xmm7,80(%edi)
 1179         leal    96(%edi),%edi
 1180         movdqa  96(%esp),%xmm3
 1181         pxor    %xmm0,%xmm0
 1182         paddq   %xmm1,%xmm1
 1183         pand    %xmm3,%xmm2
 1184         pcmpgtd %xmm1,%xmm0
 1185         pxor    %xmm2,%xmm1
 1186         subl    $96,%eax
 1187         jnc     .L048xts_enc_loop6
 1188         movl    240(%ebp),%ecx
 1189         movl    %ebp,%edx
 1190         movl    %ecx,%ebx
 1191 .L047xts_enc_short:
 1192         addl    $96,%eax
 1193         jz      .L049xts_enc_done6x
 1194         movdqa  %xmm1,%xmm5
 1195         cmpl    $32,%eax
 1196         jb      .L050xts_enc_one
 1197         pshufd  $19,%xmm0,%xmm2
 1198         pxor    %xmm0,%xmm0
 1199         paddq   %xmm1,%xmm1
 1200         pand    %xmm3,%xmm2
 1201         pcmpgtd %xmm1,%xmm0
 1202         pxor    %xmm2,%xmm1
 1203         je      .L051xts_enc_two
 1204         pshufd  $19,%xmm0,%xmm2
 1205         pxor    %xmm0,%xmm0
 1206         movdqa  %xmm1,%xmm6
 1207         paddq   %xmm1,%xmm1
 1208         pand    %xmm3,%xmm2
 1209         pcmpgtd %xmm1,%xmm0
 1210         pxor    %xmm2,%xmm1
 1211         cmpl    $64,%eax
 1212         jb      .L052xts_enc_three
 1213         pshufd  $19,%xmm0,%xmm2
 1214         pxor    %xmm0,%xmm0
 1215         movdqa  %xmm1,%xmm7
 1216         paddq   %xmm1,%xmm1
 1217         pand    %xmm3,%xmm2
 1218         pcmpgtd %xmm1,%xmm0
 1219         pxor    %xmm2,%xmm1
 1220         movdqa  %xmm5,(%esp)
 1221         movdqa  %xmm6,16(%esp)
 1222         je      .L053xts_enc_four
 1223         movdqa  %xmm7,32(%esp)
 1224         pshufd  $19,%xmm0,%xmm7
 1225         movdqa  %xmm1,48(%esp)
 1226         paddq   %xmm1,%xmm1
 1227         pand    %xmm3,%xmm7
 1228         pxor    %xmm1,%xmm7
 1229         movdqu  (%esi),%xmm2
 1230         movdqu  16(%esi),%xmm3
 1231         movdqu  32(%esi),%xmm4
 1232         pxor    (%esp),%xmm2
 1233         movdqu  48(%esi),%xmm5
 1234         pxor    16(%esp),%xmm3
 1235         movdqu  64(%esi),%xmm6
 1236         pxor    32(%esp),%xmm4
 1237         leal    80(%esi),%esi
 1238         pxor    48(%esp),%xmm5
 1239         movdqa  %xmm7,64(%esp)
 1240         pxor    %xmm7,%xmm6
 1241         call    _aesni_encrypt6
 1242         movaps  64(%esp),%xmm1
 1243         xorps   (%esp),%xmm2
 1244         xorps   16(%esp),%xmm3
 1245         xorps   32(%esp),%xmm4
 1246         movups  %xmm2,(%edi)
 1247         xorps   48(%esp),%xmm5
 1248         movups  %xmm3,16(%edi)
 1249         xorps   %xmm1,%xmm6
 1250         movups  %xmm4,32(%edi)
 1251         movups  %xmm5,48(%edi)
 1252         movups  %xmm6,64(%edi)
 1253         leal    80(%edi),%edi
 1254         jmp     .L054xts_enc_done
 1255 .align  16
 1256 .L050xts_enc_one:
 1257         movups  (%esi),%xmm2
 1258         leal    16(%esi),%esi
 1259         xorps   %xmm5,%xmm2
 1260         movups  (%edx),%xmm0
 1261         movups  16(%edx),%xmm1
 1262         leal    32(%edx),%edx
 1263         xorps   %xmm0,%xmm2
 1264 .L055enc1_loop_9:
 1265 .byte   102,15,56,220,209
 1266         decl    %ecx
 1267         movups  (%edx),%xmm1
 1268         leal    16(%edx),%edx
 1269         jnz     .L055enc1_loop_9
 1270 .byte   102,15,56,221,209
 1271         xorps   %xmm5,%xmm2
 1272         movups  %xmm2,(%edi)
 1273         leal    16(%edi),%edi
 1274         movdqa  %xmm5,%xmm1
 1275         jmp     .L054xts_enc_done
 1276 .align  16
 1277 .L051xts_enc_two:
 1278         movaps  %xmm1,%xmm6
 1279         movups  (%esi),%xmm2
 1280         movups  16(%esi),%xmm3
 1281         leal    32(%esi),%esi
 1282         xorps   %xmm5,%xmm2
 1283         xorps   %xmm6,%xmm3
 1284         call    _aesni_encrypt2
 1285         xorps   %xmm5,%xmm2
 1286         xorps   %xmm6,%xmm3
 1287         movups  %xmm2,(%edi)
 1288         movups  %xmm3,16(%edi)
 1289         leal    32(%edi),%edi
 1290         movdqa  %xmm6,%xmm1
 1291         jmp     .L054xts_enc_done
 1292 .align  16
 1293 .L052xts_enc_three:
 1294         movaps  %xmm1,%xmm7
 1295         movups  (%esi),%xmm2
 1296         movups  16(%esi),%xmm3
 1297         movups  32(%esi),%xmm4
 1298         leal    48(%esi),%esi
 1299         xorps   %xmm5,%xmm2
 1300         xorps   %xmm6,%xmm3
 1301         xorps   %xmm7,%xmm4
 1302         call    _aesni_encrypt3
 1303         xorps   %xmm5,%xmm2
 1304         xorps   %xmm6,%xmm3
 1305         xorps   %xmm7,%xmm4
 1306         movups  %xmm2,(%edi)
 1307         movups  %xmm3,16(%edi)
 1308         movups  %xmm4,32(%edi)
 1309         leal    48(%edi),%edi
 1310         movdqa  %xmm7,%xmm1
 1311         jmp     .L054xts_enc_done
 1312 .align  16
 1313 .L053xts_enc_four:
 1314         movaps  %xmm1,%xmm6
 1315         movups  (%esi),%xmm2
 1316         movups  16(%esi),%xmm3
 1317         movups  32(%esi),%xmm4
 1318         xorps   (%esp),%xmm2
 1319         movups  48(%esi),%xmm5
 1320         leal    64(%esi),%esi
 1321         xorps   16(%esp),%xmm3
 1322         xorps   %xmm7,%xmm4
 1323         xorps   %xmm6,%xmm5
 1324         call    _aesni_encrypt4
 1325         xorps   (%esp),%xmm2
 1326         xorps   16(%esp),%xmm3
 1327         xorps   %xmm7,%xmm4
 1328         movups  %xmm2,(%edi)
 1329         xorps   %xmm6,%xmm5
 1330         movups  %xmm3,16(%edi)
 1331         movups  %xmm4,32(%edi)
 1332         movups  %xmm5,48(%edi)
 1333         leal    64(%edi),%edi
 1334         movdqa  %xmm6,%xmm1
 1335         jmp     .L054xts_enc_done
 1336 .align  16
 1337 .L049xts_enc_done6x:
 1338         movl    112(%esp),%eax
 1339         andl    $15,%eax
 1340         jz      .L056xts_enc_ret
 1341         movdqa  %xmm1,%xmm5
 1342         movl    %eax,112(%esp)
 1343         jmp     .L057xts_enc_steal
 1344 .align  16
 1345 .L054xts_enc_done:
 1346         movl    112(%esp),%eax
 1347         pxor    %xmm0,%xmm0
 1348         andl    $15,%eax
 1349         jz      .L056xts_enc_ret
 1350         pcmpgtd %xmm1,%xmm0
 1351         movl    %eax,112(%esp)
 1352         pshufd  $19,%xmm0,%xmm5
 1353         paddq   %xmm1,%xmm1
 1354         pand    96(%esp),%xmm5
 1355         pxor    %xmm1,%xmm5
 1356 .L057xts_enc_steal:
 1357         movzbl  (%esi),%ecx
 1358         movzbl  -16(%edi),%edx
 1359         leal    1(%esi),%esi
 1360         movb    %cl,-16(%edi)
 1361         movb    %dl,(%edi)
 1362         leal    1(%edi),%edi
 1363         subl    $1,%eax
 1364         jnz     .L057xts_enc_steal
 1365         subl    112(%esp),%edi
 1366         movl    %ebp,%edx
 1367         movl    %ebx,%ecx
 1368         movups  -16(%edi),%xmm2
 1369         xorps   %xmm5,%xmm2
 1370         movups  (%edx),%xmm0
 1371         movups  16(%edx),%xmm1
 1372         leal    32(%edx),%edx
 1373         xorps   %xmm0,%xmm2
 1374 .L058enc1_loop_10:
 1375 .byte   102,15,56,220,209
 1376         decl    %ecx
 1377         movups  (%edx),%xmm1
 1378         leal    16(%edx),%edx
 1379         jnz     .L058enc1_loop_10
 1380 .byte   102,15,56,221,209
 1381         xorps   %xmm5,%xmm2
 1382         movups  %xmm2,-16(%edi)
 1383 .L056xts_enc_ret:
 1384         pxor    %xmm0,%xmm0
 1385         pxor    %xmm1,%xmm1
 1386         pxor    %xmm2,%xmm2
 1387         movdqa  %xmm0,(%esp)
 1388         pxor    %xmm3,%xmm3
 1389         movdqa  %xmm0,16(%esp)
 1390         pxor    %xmm4,%xmm4
 1391         movdqa  %xmm0,32(%esp)
 1392         pxor    %xmm5,%xmm5
 1393         movdqa  %xmm0,48(%esp)
 1394         pxor    %xmm6,%xmm6
 1395         movdqa  %xmm0,64(%esp)
 1396         pxor    %xmm7,%xmm7
 1397         movdqa  %xmm0,80(%esp)
 1398         movl    116(%esp),%esp
 1399         popl    %edi
 1400         popl    %esi
 1401         popl    %ebx
 1402         popl    %ebp
 1403         ret
 1404 .size   aesni_xts_encrypt,.-.L_aesni_xts_encrypt_begin
 1405 .globl  aesni_xts_decrypt
 1406 .type   aesni_xts_decrypt,@function
 1407 .align  16
 1408 aesni_xts_decrypt:
 1409 .L_aesni_xts_decrypt_begin:
 1410         pushl   %ebp
 1411         pushl   %ebx
 1412         pushl   %esi
 1413         pushl   %edi
 1414         movl    36(%esp),%edx
 1415         movl    40(%esp),%esi
 1416         movl    240(%edx),%ecx
 1417         movups  (%esi),%xmm2
 1418         movups  (%edx),%xmm0
 1419         movups  16(%edx),%xmm1
 1420         leal    32(%edx),%edx
 1421         xorps   %xmm0,%xmm2
 1422 .L059enc1_loop_11:
 1423 .byte   102,15,56,220,209
 1424         decl    %ecx
 1425         movups  (%edx),%xmm1
 1426         leal    16(%edx),%edx
 1427         jnz     .L059enc1_loop_11
 1428 .byte   102,15,56,221,209
 1429         movl    20(%esp),%esi
 1430         movl    24(%esp),%edi
 1431         movl    28(%esp),%eax
 1432         movl    32(%esp),%edx
 1433         movl    %esp,%ebp
 1434         subl    $120,%esp
 1435         andl    $-16,%esp
 1436         xorl    %ebx,%ebx
 1437         testl   $15,%eax
 1438         setnz   %bl
 1439         shll    $4,%ebx
 1440         subl    %ebx,%eax
 1441         movl    $135,96(%esp)
 1442         movl    $0,100(%esp)
 1443         movl    $1,104(%esp)
 1444         movl    $0,108(%esp)
 1445         movl    %eax,112(%esp)
 1446         movl    %ebp,116(%esp)
 1447         movl    240(%edx),%ecx
 1448         movl    %edx,%ebp
 1449         movl    %ecx,%ebx
 1450         movdqa  %xmm2,%xmm1
 1451         pxor    %xmm0,%xmm0
 1452         movdqa  96(%esp),%xmm3
 1453         pcmpgtd %xmm1,%xmm0
 1454         andl    $-16,%eax
 1455         subl    $96,%eax
 1456         jc      .L060xts_dec_short
 1457         shll    $4,%ecx
 1458         movl    $16,%ebx
 1459         subl    %ecx,%ebx
 1460         leal    32(%edx,%ecx,1),%edx
 1461         jmp     .L061xts_dec_loop6
 1462 .align  16
 1463 .L061xts_dec_loop6:
 1464         pshufd  $19,%xmm0,%xmm2
 1465         pxor    %xmm0,%xmm0
 1466         movdqa  %xmm1,(%esp)
 1467         paddq   %xmm1,%xmm1
 1468         pand    %xmm3,%xmm2
 1469         pcmpgtd %xmm1,%xmm0
 1470         pxor    %xmm2,%xmm1
 1471         pshufd  $19,%xmm0,%xmm2
 1472         pxor    %xmm0,%xmm0
 1473         movdqa  %xmm1,16(%esp)
 1474         paddq   %xmm1,%xmm1
 1475         pand    %xmm3,%xmm2
 1476         pcmpgtd %xmm1,%xmm0
 1477         pxor    %xmm2,%xmm1
 1478         pshufd  $19,%xmm0,%xmm2
 1479         pxor    %xmm0,%xmm0
 1480         movdqa  %xmm1,32(%esp)
 1481         paddq   %xmm1,%xmm1
 1482         pand    %xmm3,%xmm2
 1483         pcmpgtd %xmm1,%xmm0
 1484         pxor    %xmm2,%xmm1
 1485         pshufd  $19,%xmm0,%xmm2
 1486         pxor    %xmm0,%xmm0
 1487         movdqa  %xmm1,48(%esp)
 1488         paddq   %xmm1,%xmm1
 1489         pand    %xmm3,%xmm2
 1490         pcmpgtd %xmm1,%xmm0
 1491         pxor    %xmm2,%xmm1
 1492         pshufd  $19,%xmm0,%xmm7
 1493         movdqa  %xmm1,64(%esp)
 1494         paddq   %xmm1,%xmm1
 1495         movups  (%ebp),%xmm0
 1496         pand    %xmm3,%xmm7
 1497         movups  (%esi),%xmm2
 1498         pxor    %xmm1,%xmm7
 1499         movl    %ebx,%ecx
 1500         movdqu  16(%esi),%xmm3
 1501         xorps   %xmm0,%xmm2
 1502         movdqu  32(%esi),%xmm4
 1503         pxor    %xmm0,%xmm3
 1504         movdqu  48(%esi),%xmm5
 1505         pxor    %xmm0,%xmm4
 1506         movdqu  64(%esi),%xmm6
 1507         pxor    %xmm0,%xmm5
 1508         movdqu  80(%esi),%xmm1
 1509         pxor    %xmm0,%xmm6
 1510         leal    96(%esi),%esi
 1511         pxor    (%esp),%xmm2
 1512         movdqa  %xmm7,80(%esp)
 1513         pxor    %xmm1,%xmm7
 1514         movups  16(%ebp),%xmm1
 1515         pxor    16(%esp),%xmm3
 1516         pxor    32(%esp),%xmm4
 1517 .byte   102,15,56,222,209
 1518         pxor    48(%esp),%xmm5
 1519         pxor    64(%esp),%xmm6
 1520 .byte   102,15,56,222,217
 1521         pxor    %xmm0,%xmm7
 1522         movups  32(%ebp),%xmm0
 1523 .byte   102,15,56,222,225
 1524 .byte   102,15,56,222,233
 1525 .byte   102,15,56,222,241
 1526 .byte   102,15,56,222,249
 1527         call    .L_aesni_decrypt6_enter
 1528         movdqa  80(%esp),%xmm1
 1529         pxor    %xmm0,%xmm0
 1530         xorps   (%esp),%xmm2
 1531         pcmpgtd %xmm1,%xmm0
 1532         xorps   16(%esp),%xmm3
 1533         movups  %xmm2,(%edi)
 1534         xorps   32(%esp),%xmm4
 1535         movups  %xmm3,16(%edi)
 1536         xorps   48(%esp),%xmm5
 1537         movups  %xmm4,32(%edi)
 1538         xorps   64(%esp),%xmm6
 1539         movups  %xmm5,48(%edi)
 1540         xorps   %xmm1,%xmm7
 1541         movups  %xmm6,64(%edi)
 1542         pshufd  $19,%xmm0,%xmm2
 1543         movups  %xmm7,80(%edi)
 1544         leal    96(%edi),%edi
 1545         movdqa  96(%esp),%xmm3
 1546         pxor    %xmm0,%xmm0
 1547         paddq   %xmm1,%xmm1
 1548         pand    %xmm3,%xmm2
 1549         pcmpgtd %xmm1,%xmm0
 1550         pxor    %xmm2,%xmm1
 1551         subl    $96,%eax
 1552         jnc     .L061xts_dec_loop6
 1553         movl    240(%ebp),%ecx
 1554         movl    %ebp,%edx
 1555         movl    %ecx,%ebx
 1556 .L060xts_dec_short:
 1557         addl    $96,%eax
 1558         jz      .L062xts_dec_done6x
 1559         movdqa  %xmm1,%xmm5
 1560         cmpl    $32,%eax
 1561         jb      .L063xts_dec_one
 1562         pshufd  $19,%xmm0,%xmm2
 1563         pxor    %xmm0,%xmm0
 1564         paddq   %xmm1,%xmm1
 1565         pand    %xmm3,%xmm2
 1566         pcmpgtd %xmm1,%xmm0
 1567         pxor    %xmm2,%xmm1
 1568         je      .L064xts_dec_two
 1569         pshufd  $19,%xmm0,%xmm2
 1570         pxor    %xmm0,%xmm0
 1571         movdqa  %xmm1,%xmm6
 1572         paddq   %xmm1,%xmm1
 1573         pand    %xmm3,%xmm2
 1574         pcmpgtd %xmm1,%xmm0
 1575         pxor    %xmm2,%xmm1
 1576         cmpl    $64,%eax
 1577         jb      .L065xts_dec_three
 1578         pshufd  $19,%xmm0,%xmm2
 1579         pxor    %xmm0,%xmm0
 1580         movdqa  %xmm1,%xmm7
 1581         paddq   %xmm1,%xmm1
 1582         pand    %xmm3,%xmm2
 1583         pcmpgtd %xmm1,%xmm0
 1584         pxor    %xmm2,%xmm1
 1585         movdqa  %xmm5,(%esp)
 1586         movdqa  %xmm6,16(%esp)
 1587         je      .L066xts_dec_four
 1588         movdqa  %xmm7,32(%esp)
 1589         pshufd  $19,%xmm0,%xmm7
 1590         movdqa  %xmm1,48(%esp)
 1591         paddq   %xmm1,%xmm1
 1592         pand    %xmm3,%xmm7
 1593         pxor    %xmm1,%xmm7
 1594         movdqu  (%esi),%xmm2
 1595         movdqu  16(%esi),%xmm3
 1596         movdqu  32(%esi),%xmm4
 1597         pxor    (%esp),%xmm2
 1598         movdqu  48(%esi),%xmm5
 1599         pxor    16(%esp),%xmm3
 1600         movdqu  64(%esi),%xmm6
 1601         pxor    32(%esp),%xmm4
 1602         leal    80(%esi),%esi
 1603         pxor    48(%esp),%xmm5
 1604         movdqa  %xmm7,64(%esp)
 1605         pxor    %xmm7,%xmm6
 1606         call    _aesni_decrypt6
 1607         movaps  64(%esp),%xmm1
 1608         xorps   (%esp),%xmm2
 1609         xorps   16(%esp),%xmm3
 1610         xorps   32(%esp),%xmm4
 1611         movups  %xmm2,(%edi)
 1612         xorps   48(%esp),%xmm5
 1613         movups  %xmm3,16(%edi)
 1614         xorps   %xmm1,%xmm6
 1615         movups  %xmm4,32(%edi)
 1616         movups  %xmm5,48(%edi)
 1617         movups  %xmm6,64(%edi)
 1618         leal    80(%edi),%edi
 1619         jmp     .L067xts_dec_done
 1620 .align  16
 1621 .L063xts_dec_one:
 1622         movups  (%esi),%xmm2
 1623         leal    16(%esi),%esi
 1624         xorps   %xmm5,%xmm2
 1625         movups  (%edx),%xmm0
 1626         movups  16(%edx),%xmm1
 1627         leal    32(%edx),%edx
 1628         xorps   %xmm0,%xmm2
 1629 .L068dec1_loop_12:
 1630 .byte   102,15,56,222,209
 1631         decl    %ecx
 1632         movups  (%edx),%xmm1
 1633         leal    16(%edx),%edx
 1634         jnz     .L068dec1_loop_12
 1635 .byte   102,15,56,223,209
 1636         xorps   %xmm5,%xmm2
 1637         movups  %xmm2,(%edi)
 1638         leal    16(%edi),%edi
 1639         movdqa  %xmm5,%xmm1
 1640         jmp     .L067xts_dec_done
 1641 .align  16
 1642 .L064xts_dec_two:
 1643         movaps  %xmm1,%xmm6
 1644         movups  (%esi),%xmm2
 1645         movups  16(%esi),%xmm3
 1646         leal    32(%esi),%esi
 1647         xorps   %xmm5,%xmm2
 1648         xorps   %xmm6,%xmm3
 1649         call    _aesni_decrypt2
 1650         xorps   %xmm5,%xmm2
 1651         xorps   %xmm6,%xmm3
 1652         movups  %xmm2,(%edi)
 1653         movups  %xmm3,16(%edi)
 1654         leal    32(%edi),%edi
 1655         movdqa  %xmm6,%xmm1
 1656         jmp     .L067xts_dec_done
 1657 .align  16
 1658 .L065xts_dec_three:
 1659         movaps  %xmm1,%xmm7
 1660         movups  (%esi),%xmm2
 1661         movups  16(%esi),%xmm3
 1662         movups  32(%esi),%xmm4
 1663         leal    48(%esi),%esi
 1664         xorps   %xmm5,%xmm2
 1665         xorps   %xmm6,%xmm3
 1666         xorps   %xmm7,%xmm4
 1667         call    _aesni_decrypt3
 1668         xorps   %xmm5,%xmm2
 1669         xorps   %xmm6,%xmm3
 1670         xorps   %xmm7,%xmm4
 1671         movups  %xmm2,(%edi)
 1672         movups  %xmm3,16(%edi)
 1673         movups  %xmm4,32(%edi)
 1674         leal    48(%edi),%edi
 1675         movdqa  %xmm7,%xmm1
 1676         jmp     .L067xts_dec_done
 1677 .align  16
 1678 .L066xts_dec_four:
 1679         movaps  %xmm1,%xmm6
 1680         movups  (%esi),%xmm2
 1681         movups  16(%esi),%xmm3
 1682         movups  32(%esi),%xmm4
 1683         xorps   (%esp),%xmm2
 1684         movups  48(%esi),%xmm5
 1685         leal    64(%esi),%esi
 1686         xorps   16(%esp),%xmm3
 1687         xorps   %xmm7,%xmm4
 1688         xorps   %xmm6,%xmm5
 1689         call    _aesni_decrypt4
 1690         xorps   (%esp),%xmm2
 1691         xorps   16(%esp),%xmm3
 1692         xorps   %xmm7,%xmm4
 1693         movups  %xmm2,(%edi)
 1694         xorps   %xmm6,%xmm5
 1695         movups  %xmm3,16(%edi)
 1696         movups  %xmm4,32(%edi)
 1697         movups  %xmm5,48(%edi)
 1698         leal    64(%edi),%edi
 1699         movdqa  %xmm6,%xmm1
 1700         jmp     .L067xts_dec_done
 1701 .align  16
 1702 .L062xts_dec_done6x:
 1703         movl    112(%esp),%eax
 1704         andl    $15,%eax
 1705         jz      .L069xts_dec_ret
 1706         movl    %eax,112(%esp)
 1707         jmp     .L070xts_dec_only_one_more
 1708 .align  16
 1709 .L067xts_dec_done:
 1710         movl    112(%esp),%eax
 1711         pxor    %xmm0,%xmm0
 1712         andl    $15,%eax
 1713         jz      .L069xts_dec_ret
 1714         pcmpgtd %xmm1,%xmm0
 1715         movl    %eax,112(%esp)
 1716         pshufd  $19,%xmm0,%xmm2
 1717         pxor    %xmm0,%xmm0
 1718         movdqa  96(%esp),%xmm3
 1719         paddq   %xmm1,%xmm1
 1720         pand    %xmm3,%xmm2
 1721         pcmpgtd %xmm1,%xmm0
 1722         pxor    %xmm2,%xmm1
 1723 .L070xts_dec_only_one_more:
 1724         pshufd  $19,%xmm0,%xmm5
 1725         movdqa  %xmm1,%xmm6
 1726         paddq   %xmm1,%xmm1
 1727         pand    %xmm3,%xmm5
 1728         pxor    %xmm1,%xmm5
 1729         movl    %ebp,%edx
 1730         movl    %ebx,%ecx
 1731         movups  (%esi),%xmm2
 1732         xorps   %xmm5,%xmm2
 1733         movups  (%edx),%xmm0
 1734         movups  16(%edx),%xmm1
 1735         leal    32(%edx),%edx
 1736         xorps   %xmm0,%xmm2
 1737 .L071dec1_loop_13:
 1738 .byte   102,15,56,222,209
 1739         decl    %ecx
 1740         movups  (%edx),%xmm1
 1741         leal    16(%edx),%edx
 1742         jnz     .L071dec1_loop_13
 1743 .byte   102,15,56,223,209
 1744         xorps   %xmm5,%xmm2
 1745         movups  %xmm2,(%edi)
 1746 .L072xts_dec_steal:
 1747         movzbl  16(%esi),%ecx
 1748         movzbl  (%edi),%edx
 1749         leal    1(%esi),%esi
 1750         movb    %cl,(%edi)
 1751         movb    %dl,16(%edi)
 1752         leal    1(%edi),%edi
 1753         subl    $1,%eax
 1754         jnz     .L072xts_dec_steal
 1755         subl    112(%esp),%edi
 1756         movl    %ebp,%edx
 1757         movl    %ebx,%ecx
 1758         movups  (%edi),%xmm2
 1759         xorps   %xmm6,%xmm2
 1760         movups  (%edx),%xmm0
 1761         movups  16(%edx),%xmm1
 1762         leal    32(%edx),%edx
 1763         xorps   %xmm0,%xmm2
 1764 .L073dec1_loop_14:
 1765 .byte   102,15,56,222,209
 1766         decl    %ecx
 1767         movups  (%edx),%xmm1
 1768         leal    16(%edx),%edx
 1769         jnz     .L073dec1_loop_14
 1770 .byte   102,15,56,223,209
 1771         xorps   %xmm6,%xmm2
 1772         movups  %xmm2,(%edi)
 1773 .L069xts_dec_ret:
 1774         pxor    %xmm0,%xmm0
 1775         pxor    %xmm1,%xmm1
 1776         pxor    %xmm2,%xmm2
 1777         movdqa  %xmm0,(%esp)
 1778         pxor    %xmm3,%xmm3
 1779         movdqa  %xmm0,16(%esp)
 1780         pxor    %xmm4,%xmm4
 1781         movdqa  %xmm0,32(%esp)
 1782         pxor    %xmm5,%xmm5
 1783         movdqa  %xmm0,48(%esp)
 1784         pxor    %xmm6,%xmm6
 1785         movdqa  %xmm0,64(%esp)
 1786         pxor    %xmm7,%xmm7
 1787         movdqa  %xmm0,80(%esp)
 1788         movl    116(%esp),%esp
 1789         popl    %edi
 1790         popl    %esi
 1791         popl    %ebx
 1792         popl    %ebp
 1793         ret
 1794 .size   aesni_xts_decrypt,.-.L_aesni_xts_decrypt_begin
 1795 .globl  aesni_ocb_encrypt
 1796 .type   aesni_ocb_encrypt,@function
 1797 .align  16
 1798 aesni_ocb_encrypt:
 1799 .L_aesni_ocb_encrypt_begin:
 1800         pushl   %ebp
 1801         pushl   %ebx
 1802         pushl   %esi
 1803         pushl   %edi
 1804         movl    40(%esp),%ecx
 1805         movl    48(%esp),%ebx
 1806         movl    20(%esp),%esi
 1807         movl    24(%esp),%edi
 1808         movl    28(%esp),%eax
 1809         movl    32(%esp),%edx
 1810         movdqu  (%ecx),%xmm0
 1811         movl    36(%esp),%ebp
 1812         movdqu  (%ebx),%xmm1
 1813         movl    44(%esp),%ebx
 1814         movl    %esp,%ecx
 1815         subl    $132,%esp
 1816         andl    $-16,%esp
 1817         subl    %esi,%edi
 1818         shll    $4,%eax
 1819         leal    -96(%esi,%eax,1),%eax
 1820         movl    %edi,120(%esp)
 1821         movl    %eax,124(%esp)
 1822         movl    %ecx,128(%esp)
 1823         movl    240(%edx),%ecx
 1824         testl   $1,%ebp
 1825         jnz     .L074odd
 1826         bsfl    %ebp,%eax
 1827         addl    $1,%ebp
 1828         shll    $4,%eax
 1829         movdqu  (%ebx,%eax,1),%xmm7
 1830         movl    %edx,%eax
 1831         movdqu  (%esi),%xmm2
 1832         leal    16(%esi),%esi
 1833         pxor    %xmm0,%xmm7
 1834         pxor    %xmm2,%xmm1
 1835         pxor    %xmm7,%xmm2
 1836         movdqa  %xmm1,%xmm6
 1837         movups  (%edx),%xmm0
 1838         movups  16(%edx),%xmm1
 1839         leal    32(%edx),%edx
 1840         xorps   %xmm0,%xmm2
 1841 .L075enc1_loop_15:
 1842 .byte   102,15,56,220,209
 1843         decl    %ecx
 1844         movups  (%edx),%xmm1
 1845         leal    16(%edx),%edx
 1846         jnz     .L075enc1_loop_15
 1847 .byte   102,15,56,221,209
 1848         xorps   %xmm7,%xmm2
 1849         movdqa  %xmm7,%xmm0
 1850         movdqa  %xmm6,%xmm1
 1851         movups  %xmm2,-16(%edi,%esi,1)
 1852         movl    240(%eax),%ecx
 1853         movl    %eax,%edx
 1854         movl    124(%esp),%eax
 1855 .L074odd:
 1856         shll    $4,%ecx
 1857         movl    $16,%edi
 1858         subl    %ecx,%edi
 1859         movl    %edx,112(%esp)
 1860         leal    32(%edx,%ecx,1),%edx
 1861         movl    %edi,116(%esp)
 1862         cmpl    %eax,%esi
 1863         ja      .L076short
 1864         jmp     .L077grandloop
 1865 .align  32
 1866 .L077grandloop:
 1867         leal    1(%ebp),%ecx
 1868         leal    3(%ebp),%eax
 1869         leal    5(%ebp),%edi
 1870         addl    $6,%ebp
 1871         bsfl    %ecx,%ecx
 1872         bsfl    %eax,%eax
 1873         bsfl    %edi,%edi
 1874         shll    $4,%ecx
 1875         shll    $4,%eax
 1876         shll    $4,%edi
 1877         movdqu  (%ebx),%xmm2
 1878         movdqu  (%ebx,%ecx,1),%xmm3
 1879         movl    116(%esp),%ecx
 1880         movdqa  %xmm2,%xmm4
 1881         movdqu  (%ebx,%eax,1),%xmm5
 1882         movdqa  %xmm2,%xmm6
 1883         movdqu  (%ebx,%edi,1),%xmm7
 1884         pxor    %xmm0,%xmm2
 1885         pxor    %xmm2,%xmm3
 1886         movdqa  %xmm2,(%esp)
 1887         pxor    %xmm3,%xmm4
 1888         movdqa  %xmm3,16(%esp)
 1889         pxor    %xmm4,%xmm5
 1890         movdqa  %xmm4,32(%esp)
 1891         pxor    %xmm5,%xmm6
 1892         movdqa  %xmm5,48(%esp)
 1893         pxor    %xmm6,%xmm7
 1894         movdqa  %xmm6,64(%esp)
 1895         movdqa  %xmm7,80(%esp)
 1896         movups  -48(%edx,%ecx,1),%xmm0
 1897         movdqu  (%esi),%xmm2
 1898         movdqu  16(%esi),%xmm3
 1899         movdqu  32(%esi),%xmm4
 1900         movdqu  48(%esi),%xmm5
 1901         movdqu  64(%esi),%xmm6
 1902         movdqu  80(%esi),%xmm7
 1903         leal    96(%esi),%esi
 1904         pxor    %xmm2,%xmm1
 1905         pxor    %xmm0,%xmm2
 1906         pxor    %xmm3,%xmm1
 1907         pxor    %xmm0,%xmm3
 1908         pxor    %xmm4,%xmm1
 1909         pxor    %xmm0,%xmm4
 1910         pxor    %xmm5,%xmm1
 1911         pxor    %xmm0,%xmm5
 1912         pxor    %xmm6,%xmm1
 1913         pxor    %xmm0,%xmm6
 1914         pxor    %xmm7,%xmm1
 1915         pxor    %xmm0,%xmm7
 1916         movdqa  %xmm1,96(%esp)
 1917         movups  -32(%edx,%ecx,1),%xmm1
 1918         pxor    (%esp),%xmm2
 1919         pxor    16(%esp),%xmm3
 1920         pxor    32(%esp),%xmm4
 1921         pxor    48(%esp),%xmm5
 1922         pxor    64(%esp),%xmm6
 1923         pxor    80(%esp),%xmm7
 1924         movups  -16(%edx,%ecx,1),%xmm0
 1925 .byte   102,15,56,220,209
 1926 .byte   102,15,56,220,217
 1927 .byte   102,15,56,220,225
 1928 .byte   102,15,56,220,233
 1929 .byte   102,15,56,220,241
 1930 .byte   102,15,56,220,249
 1931         movl    120(%esp),%edi
 1932         movl    124(%esp),%eax
 1933         call    .L_aesni_encrypt6_enter
 1934         movdqa  80(%esp),%xmm0
 1935         pxor    (%esp),%xmm2
 1936         pxor    16(%esp),%xmm3
 1937         pxor    32(%esp),%xmm4
 1938         pxor    48(%esp),%xmm5
 1939         pxor    64(%esp),%xmm6
 1940         pxor    %xmm0,%xmm7
 1941         movdqa  96(%esp),%xmm1
 1942         movdqu  %xmm2,-96(%edi,%esi,1)
 1943         movdqu  %xmm3,-80(%edi,%esi,1)
 1944         movdqu  %xmm4,-64(%edi,%esi,1)
 1945         movdqu  %xmm5,-48(%edi,%esi,1)
 1946         movdqu  %xmm6,-32(%edi,%esi,1)
 1947         movdqu  %xmm7,-16(%edi,%esi,1)
 1948         cmpl    %eax,%esi
 1949         jbe     .L077grandloop
 1950 .L076short:
 1951         addl    $96,%eax
 1952         subl    %esi,%eax
 1953         jz      .L078done
 1954         cmpl    $32,%eax
 1955         jb      .L079one
 1956         je      .L080two
 1957         cmpl    $64,%eax
 1958         jb      .L081three
 1959         je      .L082four
 1960         leal    1(%ebp),%ecx
 1961         leal    3(%ebp),%eax
 1962         bsfl    %ecx,%ecx
 1963         bsfl    %eax,%eax
 1964         shll    $4,%ecx
 1965         shll    $4,%eax
 1966         movdqu  (%ebx),%xmm2
 1967         movdqu  (%ebx,%ecx,1),%xmm3
 1968         movl    116(%esp),%ecx
 1969         movdqa  %xmm2,%xmm4
 1970         movdqu  (%ebx,%eax,1),%xmm5
 1971         movdqa  %xmm2,%xmm6
 1972         pxor    %xmm0,%xmm2
 1973         pxor    %xmm2,%xmm3
 1974         movdqa  %xmm2,(%esp)
 1975         pxor    %xmm3,%xmm4
 1976         movdqa  %xmm3,16(%esp)
 1977         pxor    %xmm4,%xmm5
 1978         movdqa  %xmm4,32(%esp)
 1979         pxor    %xmm5,%xmm6
 1980         movdqa  %xmm5,48(%esp)
 1981         pxor    %xmm6,%xmm7
 1982         movdqa  %xmm6,64(%esp)
 1983         movups  -48(%edx,%ecx,1),%xmm0
 1984         movdqu  (%esi),%xmm2
 1985         movdqu  16(%esi),%xmm3
 1986         movdqu  32(%esi),%xmm4
 1987         movdqu  48(%esi),%xmm5
 1988         movdqu  64(%esi),%xmm6
 1989         pxor    %xmm7,%xmm7
 1990         pxor    %xmm2,%xmm1
 1991         pxor    %xmm0,%xmm2
 1992         pxor    %xmm3,%xmm1
 1993         pxor    %xmm0,%xmm3
 1994         pxor    %xmm4,%xmm1
 1995         pxor    %xmm0,%xmm4
 1996         pxor    %xmm5,%xmm1
 1997         pxor    %xmm0,%xmm5
 1998         pxor    %xmm6,%xmm1
 1999         pxor    %xmm0,%xmm6
 2000         movdqa  %xmm1,96(%esp)
 2001         movups  -32(%edx,%ecx,1),%xmm1
 2002         pxor    (%esp),%xmm2
 2003         pxor    16(%esp),%xmm3
 2004         pxor    32(%esp),%xmm4
 2005         pxor    48(%esp),%xmm5
 2006         pxor    64(%esp),%xmm6
 2007         movups  -16(%edx,%ecx,1),%xmm0
 2008 .byte   102,15,56,220,209
 2009 .byte   102,15,56,220,217
 2010 .byte   102,15,56,220,225
 2011 .byte   102,15,56,220,233
 2012 .byte   102,15,56,220,241
 2013 .byte   102,15,56,220,249
 2014         movl    120(%esp),%edi
 2015         call    .L_aesni_encrypt6_enter
 2016         movdqa  64(%esp),%xmm0
 2017         pxor    (%esp),%xmm2
 2018         pxor    16(%esp),%xmm3
 2019         pxor    32(%esp),%xmm4
 2020         pxor    48(%esp),%xmm5
 2021         pxor    %xmm0,%xmm6
 2022         movdqa  96(%esp),%xmm1
 2023         movdqu  %xmm2,(%edi,%esi,1)
 2024         movdqu  %xmm3,16(%edi,%esi,1)
 2025         movdqu  %xmm4,32(%edi,%esi,1)
 2026         movdqu  %xmm5,48(%edi,%esi,1)
 2027         movdqu  %xmm6,64(%edi,%esi,1)
 2028         jmp     .L078done
 2029 .align  16
 2030 .L079one:
 2031         movdqu  (%ebx),%xmm7
 2032         movl    112(%esp),%edx
 2033         movdqu  (%esi),%xmm2
 2034         movl    240(%edx),%ecx
 2035         pxor    %xmm0,%xmm7
 2036         pxor    %xmm2,%xmm1
 2037         pxor    %xmm7,%xmm2
 2038         movdqa  %xmm1,%xmm6
 2039         movl    120(%esp),%edi
 2040         movups  (%edx),%xmm0
 2041         movups  16(%edx),%xmm1
 2042         leal    32(%edx),%edx
 2043         xorps   %xmm0,%xmm2
 2044 .L083enc1_loop_16:
 2045 .byte   102,15,56,220,209
 2046         decl    %ecx
 2047         movups  (%edx),%xmm1
 2048         leal    16(%edx),%edx
 2049         jnz     .L083enc1_loop_16
 2050 .byte   102,15,56,221,209
 2051         xorps   %xmm7,%xmm2
 2052         movdqa  %xmm7,%xmm0
 2053         movdqa  %xmm6,%xmm1
 2054         movups  %xmm2,(%edi,%esi,1)
 2055         jmp     .L078done
 2056 .align  16
 2057 .L080two:
 2058         leal    1(%ebp),%ecx
 2059         movl    112(%esp),%edx
 2060         bsfl    %ecx,%ecx
 2061         shll    $4,%ecx
 2062         movdqu  (%ebx),%xmm6
 2063         movdqu  (%ebx,%ecx,1),%xmm7
 2064         movdqu  (%esi),%xmm2
 2065         movdqu  16(%esi),%xmm3
 2066         movl    240(%edx),%ecx
 2067         pxor    %xmm0,%xmm6
 2068         pxor    %xmm6,%xmm7
 2069         pxor    %xmm2,%xmm1
 2070         pxor    %xmm6,%xmm2
 2071         pxor    %xmm3,%xmm1
 2072         pxor    %xmm7,%xmm3
 2073         movdqa  %xmm1,%xmm5
 2074         movl    120(%esp),%edi
 2075         call    _aesni_encrypt2
 2076         xorps   %xmm6,%xmm2
 2077         xorps   %xmm7,%xmm3
 2078         movdqa  %xmm7,%xmm0
 2079         movdqa  %xmm5,%xmm1
 2080         movups  %xmm2,(%edi,%esi,1)
 2081         movups  %xmm3,16(%edi,%esi,1)
 2082         jmp     .L078done
 2083 .align  16
 2084 .L081three:
 2085         leal    1(%ebp),%ecx
 2086         movl    112(%esp),%edx
 2087         bsfl    %ecx,%ecx
 2088         shll    $4,%ecx
 2089         movdqu  (%ebx),%xmm5
 2090         movdqu  (%ebx,%ecx,1),%xmm6
 2091         movdqa  %xmm5,%xmm7
 2092         movdqu  (%esi),%xmm2
 2093         movdqu  16(%esi),%xmm3
 2094         movdqu  32(%esi),%xmm4
 2095         movl    240(%edx),%ecx
 2096         pxor    %xmm0,%xmm5
 2097         pxor    %xmm5,%xmm6
 2098         pxor    %xmm6,%xmm7
 2099         pxor    %xmm2,%xmm1
 2100         pxor    %xmm5,%xmm2
 2101         pxor    %xmm3,%xmm1
 2102         pxor    %xmm6,%xmm3
 2103         pxor    %xmm4,%xmm1
 2104         pxor    %xmm7,%xmm4
 2105         movdqa  %xmm1,96(%esp)
 2106         movl    120(%esp),%edi
 2107         call    _aesni_encrypt3
 2108         xorps   %xmm5,%xmm2
 2109         xorps   %xmm6,%xmm3
 2110         xorps   %xmm7,%xmm4
 2111         movdqa  %xmm7,%xmm0
 2112         movdqa  96(%esp),%xmm1
 2113         movups  %xmm2,(%edi,%esi,1)
 2114         movups  %xmm3,16(%edi,%esi,1)
 2115         movups  %xmm4,32(%edi,%esi,1)
 2116         jmp     .L078done
 2117 .align  16
 2118 .L082four:
 2119         leal    1(%ebp),%ecx
 2120         leal    3(%ebp),%eax
 2121         bsfl    %ecx,%ecx
 2122         bsfl    %eax,%eax
 2123         movl    112(%esp),%edx
 2124         shll    $4,%ecx
 2125         shll    $4,%eax
 2126         movdqu  (%ebx),%xmm4
 2127         movdqu  (%ebx,%ecx,1),%xmm5
 2128         movdqa  %xmm4,%xmm6
 2129         movdqu  (%ebx,%eax,1),%xmm7
 2130         pxor    %xmm0,%xmm4
 2131         movdqu  (%esi),%xmm2
 2132         pxor    %xmm4,%xmm5
 2133         movdqu  16(%esi),%xmm3
 2134         pxor    %xmm5,%xmm6
 2135         movdqa  %xmm4,(%esp)
 2136         pxor    %xmm6,%xmm7
 2137         movdqa  %xmm5,16(%esp)
 2138         movdqu  32(%esi),%xmm4
 2139         movdqu  48(%esi),%xmm5
 2140         movl    240(%edx),%ecx
 2141         pxor    %xmm2,%xmm1
 2142         pxor    (%esp),%xmm2
 2143         pxor    %xmm3,%xmm1
 2144         pxor    16(%esp),%xmm3
 2145         pxor    %xmm4,%xmm1
 2146         pxor    %xmm6,%xmm4
 2147         pxor    %xmm5,%xmm1
 2148         pxor    %xmm7,%xmm5
 2149         movdqa  %xmm1,96(%esp)
 2150         movl    120(%esp),%edi
 2151         call    _aesni_encrypt4
 2152         xorps   (%esp),%xmm2
 2153         xorps   16(%esp),%xmm3
 2154         xorps   %xmm6,%xmm4
 2155         movups  %xmm2,(%edi,%esi,1)
 2156         xorps   %xmm7,%xmm5
 2157         movups  %xmm3,16(%edi,%esi,1)
 2158         movdqa  %xmm7,%xmm0
 2159         movups  %xmm4,32(%edi,%esi,1)
 2160         movdqa  96(%esp),%xmm1
 2161         movups  %xmm5,48(%edi,%esi,1)
 2162 .L078done:
 2163         movl    128(%esp),%edx
 2164         pxor    %xmm2,%xmm2
 2165         pxor    %xmm3,%xmm3
 2166         movdqa  %xmm2,(%esp)
 2167         pxor    %xmm4,%xmm4
 2168         movdqa  %xmm2,16(%esp)
 2169         pxor    %xmm5,%xmm5
 2170         movdqa  %xmm2,32(%esp)
 2171         pxor    %xmm6,%xmm6
 2172         movdqa  %xmm2,48(%esp)
 2173         pxor    %xmm7,%xmm7
 2174         movdqa  %xmm2,64(%esp)
 2175         movdqa  %xmm2,80(%esp)
 2176         movdqa  %xmm2,96(%esp)
 2177         leal    (%edx),%esp
 2178         movl    40(%esp),%ecx
 2179         movl    48(%esp),%ebx
 2180         movdqu  %xmm0,(%ecx)
 2181         pxor    %xmm0,%xmm0
 2182         movdqu  %xmm1,(%ebx)
 2183         pxor    %xmm1,%xmm1
 2184         popl    %edi
 2185         popl    %esi
 2186         popl    %ebx
 2187         popl    %ebp
 2188         ret
 2189 .size   aesni_ocb_encrypt,.-.L_aesni_ocb_encrypt_begin
 2190 .globl  aesni_ocb_decrypt
 2191 .type   aesni_ocb_decrypt,@function
 2192 .align  16
 2193 aesni_ocb_decrypt:
 2194 .L_aesni_ocb_decrypt_begin:
 2195         pushl   %ebp
 2196         pushl   %ebx
 2197         pushl   %esi
 2198         pushl   %edi
 2199         movl    40(%esp),%ecx
 2200         movl    48(%esp),%ebx
 2201         movl    20(%esp),%esi
 2202         movl    24(%esp),%edi
 2203         movl    28(%esp),%eax
 2204         movl    32(%esp),%edx
 2205         movdqu  (%ecx),%xmm0
 2206         movl    36(%esp),%ebp
 2207         movdqu  (%ebx),%xmm1
 2208         movl    44(%esp),%ebx
 2209         movl    %esp,%ecx
 2210         subl    $132,%esp
 2211         andl    $-16,%esp
 2212         subl    %esi,%edi
 2213         shll    $4,%eax
 2214         leal    -96(%esi,%eax,1),%eax
 2215         movl    %edi,120(%esp)
 2216         movl    %eax,124(%esp)
 2217         movl    %ecx,128(%esp)
 2218         movl    240(%edx),%ecx
 2219         testl   $1,%ebp
 2220         jnz     .L084odd
 2221         bsfl    %ebp,%eax
 2222         addl    $1,%ebp
 2223         shll    $4,%eax
 2224         movdqu  (%ebx,%eax,1),%xmm7
 2225         movl    %edx,%eax
 2226         movdqu  (%esi),%xmm2
 2227         leal    16(%esi),%esi
 2228         pxor    %xmm0,%xmm7
 2229         pxor    %xmm7,%xmm2
 2230         movdqa  %xmm1,%xmm6
 2231         movups  (%edx),%xmm0
 2232         movups  16(%edx),%xmm1
 2233         leal    32(%edx),%edx
 2234         xorps   %xmm0,%xmm2
 2235 .L085dec1_loop_17:
 2236 .byte   102,15,56,222,209
 2237         decl    %ecx
 2238         movups  (%edx),%xmm1
 2239         leal    16(%edx),%edx
 2240         jnz     .L085dec1_loop_17
 2241 .byte   102,15,56,223,209
 2242         xorps   %xmm7,%xmm2
 2243         movaps  %xmm6,%xmm1
 2244         movdqa  %xmm7,%xmm0
 2245         xorps   %xmm2,%xmm1
 2246         movups  %xmm2,-16(%edi,%esi,1)
 2247         movl    240(%eax),%ecx
 2248         movl    %eax,%edx
 2249         movl    124(%esp),%eax
 2250 .L084odd:
 2251         shll    $4,%ecx
 2252         movl    $16,%edi
 2253         subl    %ecx,%edi
 2254         movl    %edx,112(%esp)
 2255         leal    32(%edx,%ecx,1),%edx
 2256         movl    %edi,116(%esp)
 2257         cmpl    %eax,%esi
 2258         ja      .L086short
 2259         jmp     .L087grandloop
 2260 .align  32
 2261 .L087grandloop:
 2262         leal    1(%ebp),%ecx
 2263         leal    3(%ebp),%eax
 2264         leal    5(%ebp),%edi
 2265         addl    $6,%ebp
 2266         bsfl    %ecx,%ecx
 2267         bsfl    %eax,%eax
 2268         bsfl    %edi,%edi
 2269         shll    $4,%ecx
 2270         shll    $4,%eax
 2271         shll    $4,%edi
 2272         movdqu  (%ebx),%xmm2
 2273         movdqu  (%ebx,%ecx,1),%xmm3
 2274         movl    116(%esp),%ecx
 2275         movdqa  %xmm2,%xmm4
 2276         movdqu  (%ebx,%eax,1),%xmm5
 2277         movdqa  %xmm2,%xmm6
 2278         movdqu  (%ebx,%edi,1),%xmm7
 2279         pxor    %xmm0,%xmm2
 2280         pxor    %xmm2,%xmm3
 2281         movdqa  %xmm2,(%esp)
 2282         pxor    %xmm3,%xmm4
 2283         movdqa  %xmm3,16(%esp)
 2284         pxor    %xmm4,%xmm5
 2285         movdqa  %xmm4,32(%esp)
 2286         pxor    %xmm5,%xmm6
 2287         movdqa  %xmm5,48(%esp)
 2288         pxor    %xmm6,%xmm7
 2289         movdqa  %xmm6,64(%esp)
 2290         movdqa  %xmm7,80(%esp)
 2291         movups  -48(%edx,%ecx,1),%xmm0
 2292         movdqu  (%esi),%xmm2
 2293         movdqu  16(%esi),%xmm3
 2294         movdqu  32(%esi),%xmm4
 2295         movdqu  48(%esi),%xmm5
 2296         movdqu  64(%esi),%xmm6
 2297         movdqu  80(%esi),%xmm7
 2298         leal    96(%esi),%esi
 2299         movdqa  %xmm1,96(%esp)
 2300         pxor    %xmm0,%xmm2
 2301         pxor    %xmm0,%xmm3
 2302         pxor    %xmm0,%xmm4
 2303         pxor    %xmm0,%xmm5
 2304         pxor    %xmm0,%xmm6
 2305         pxor    %xmm0,%xmm7
 2306         movups  -32(%edx,%ecx,1),%xmm1
 2307         pxor    (%esp),%xmm2
 2308         pxor    16(%esp),%xmm3
 2309         pxor    32(%esp),%xmm4
 2310         pxor    48(%esp),%xmm5
 2311         pxor    64(%esp),%xmm6
 2312         pxor    80(%esp),%xmm7
 2313         movups  -16(%edx,%ecx,1),%xmm0
 2314 .byte   102,15,56,222,209
 2315 .byte   102,15,56,222,217
 2316 .byte   102,15,56,222,225
 2317 .byte   102,15,56,222,233
 2318 .byte   102,15,56,222,241
 2319 .byte   102,15,56,222,249
 2320         movl    120(%esp),%edi
 2321         movl    124(%esp),%eax
 2322         call    .L_aesni_decrypt6_enter
 2323         movdqa  80(%esp),%xmm0
 2324         pxor    (%esp),%xmm2
 2325         movdqa  96(%esp),%xmm1
 2326         pxor    16(%esp),%xmm3
 2327         pxor    32(%esp),%xmm4
 2328         pxor    48(%esp),%xmm5
 2329         pxor    64(%esp),%xmm6
 2330         pxor    %xmm0,%xmm7
 2331         pxor    %xmm2,%xmm1
 2332         movdqu  %xmm2,-96(%edi,%esi,1)
 2333         pxor    %xmm3,%xmm1
 2334         movdqu  %xmm3,-80(%edi,%esi,1)
 2335         pxor    %xmm4,%xmm1
 2336         movdqu  %xmm4,-64(%edi,%esi,1)
 2337         pxor    %xmm5,%xmm1
 2338         movdqu  %xmm5,-48(%edi,%esi,1)
 2339         pxor    %xmm6,%xmm1
 2340         movdqu  %xmm6,-32(%edi,%esi,1)
 2341         pxor    %xmm7,%xmm1
 2342         movdqu  %xmm7,-16(%edi,%esi,1)
 2343         cmpl    %eax,%esi
 2344         jbe     .L087grandloop
 2345 .L086short:
 2346         addl    $96,%eax
 2347         subl    %esi,%eax
 2348         jz      .L088done
 2349         cmpl    $32,%eax
 2350         jb      .L089one
 2351         je      .L090two
 2352         cmpl    $64,%eax
 2353         jb      .L091three
 2354         je      .L092four
 2355         leal    1(%ebp),%ecx
 2356         leal    3(%ebp),%eax
 2357         bsfl    %ecx,%ecx
 2358         bsfl    %eax,%eax
 2359         shll    $4,%ecx
 2360         shll    $4,%eax
 2361         movdqu  (%ebx),%xmm2
 2362         movdqu  (%ebx,%ecx,1),%xmm3
 2363         movl    116(%esp),%ecx
 2364         movdqa  %xmm2,%xmm4
 2365         movdqu  (%ebx,%eax,1),%xmm5
 2366         movdqa  %xmm2,%xmm6
 2367         pxor    %xmm0,%xmm2
 2368         pxor    %xmm2,%xmm3
 2369         movdqa  %xmm2,(%esp)
 2370         pxor    %xmm3,%xmm4
 2371         movdqa  %xmm3,16(%esp)
 2372         pxor    %xmm4,%xmm5
 2373         movdqa  %xmm4,32(%esp)
 2374         pxor    %xmm5,%xmm6
 2375         movdqa  %xmm5,48(%esp)
 2376         pxor    %xmm6,%xmm7
 2377         movdqa  %xmm6,64(%esp)
 2378         movups  -48(%edx,%ecx,1),%xmm0
 2379         movdqu  (%esi),%xmm2
 2380         movdqu  16(%esi),%xmm3
 2381         movdqu  32(%esi),%xmm4
 2382         movdqu  48(%esi),%xmm5
 2383         movdqu  64(%esi),%xmm6
 2384         pxor    %xmm7,%xmm7
 2385         movdqa  %xmm1,96(%esp)
 2386         pxor    %xmm0,%xmm2
 2387         pxor    %xmm0,%xmm3
 2388         pxor    %xmm0,%xmm4
 2389         pxor    %xmm0,%xmm5
 2390         pxor    %xmm0,%xmm6
 2391         movups  -32(%edx,%ecx,1),%xmm1
 2392         pxor    (%esp),%xmm2
 2393         pxor    16(%esp),%xmm3
 2394         pxor    32(%esp),%xmm4
 2395         pxor    48(%esp),%xmm5
 2396         pxor    64(%esp),%xmm6
 2397         movups  -16(%edx,%ecx,1),%xmm0
 2398 .byte   102,15,56,222,209
 2399 .byte   102,15,56,222,217
 2400 .byte   102,15,56,222,225
 2401 .byte   102,15,56,222,233
 2402 .byte   102,15,56,222,241
 2403 .byte   102,15,56,222,249
 2404         movl    120(%esp),%edi
 2405         call    .L_aesni_decrypt6_enter
 2406         movdqa  64(%esp),%xmm0
 2407         pxor    (%esp),%xmm2
 2408         movdqa  96(%esp),%xmm1
 2409         pxor    16(%esp),%xmm3
 2410         pxor    32(%esp),%xmm4
 2411         pxor    48(%esp),%xmm5
 2412         pxor    %xmm0,%xmm6
 2413         pxor    %xmm2,%xmm1
 2414         movdqu  %xmm2,(%edi,%esi,1)
 2415         pxor    %xmm3,%xmm1
 2416         movdqu  %xmm3,16(%edi,%esi,1)
 2417         pxor    %xmm4,%xmm1
 2418         movdqu  %xmm4,32(%edi,%esi,1)
 2419         pxor    %xmm5,%xmm1
 2420         movdqu  %xmm5,48(%edi,%esi,1)
 2421         pxor    %xmm6,%xmm1
 2422         movdqu  %xmm6,64(%edi,%esi,1)
 2423         jmp     .L088done
 2424 .align  16
 2425 .L089one:
 2426         movdqu  (%ebx),%xmm7
 2427         movl    112(%esp),%edx
 2428         movdqu  (%esi),%xmm2
 2429         movl    240(%edx),%ecx
 2430         pxor    %xmm0,%xmm7
 2431         pxor    %xmm7,%xmm2
 2432         movdqa  %xmm1,%xmm6
 2433         movl    120(%esp),%edi
 2434         movups  (%edx),%xmm0
 2435         movups  16(%edx),%xmm1
 2436         leal    32(%edx),%edx
 2437         xorps   %xmm0,%xmm2
 2438 .L093dec1_loop_18:
 2439 .byte   102,15,56,222,209
 2440         decl    %ecx
 2441         movups  (%edx),%xmm1
 2442         leal    16(%edx),%edx
 2443         jnz     .L093dec1_loop_18
 2444 .byte   102,15,56,223,209
 2445         xorps   %xmm7,%xmm2
 2446         movaps  %xmm6,%xmm1
 2447         movdqa  %xmm7,%xmm0
 2448         xorps   %xmm2,%xmm1
 2449         movups  %xmm2,(%edi,%esi,1)
 2450         jmp     .L088done
 2451 .align  16
 2452 .L090two:
 2453         leal    1(%ebp),%ecx
 2454         movl    112(%esp),%edx
 2455         bsfl    %ecx,%ecx
 2456         shll    $4,%ecx
 2457         movdqu  (%ebx),%xmm6
 2458         movdqu  (%ebx,%ecx,1),%xmm7
 2459         movdqu  (%esi),%xmm2
 2460         movdqu  16(%esi),%xmm3
 2461         movl    240(%edx),%ecx
 2462         movdqa  %xmm1,%xmm5
 2463         pxor    %xmm0,%xmm6
 2464         pxor    %xmm6,%xmm7
 2465         pxor    %xmm6,%xmm2
 2466         pxor    %xmm7,%xmm3
 2467         movl    120(%esp),%edi
 2468         call    _aesni_decrypt2
 2469         xorps   %xmm6,%xmm2
 2470         xorps   %xmm7,%xmm3
 2471         movdqa  %xmm7,%xmm0
 2472         xorps   %xmm2,%xmm5
 2473         movups  %xmm2,(%edi,%esi,1)
 2474         xorps   %xmm3,%xmm5
 2475         movups  %xmm3,16(%edi,%esi,1)
 2476         movaps  %xmm5,%xmm1
 2477         jmp     .L088done
 2478 .align  16
 2479 .L091three:
 2480         leal    1(%ebp),%ecx
 2481         movl    112(%esp),%edx
 2482         bsfl    %ecx,%ecx
 2483         shll    $4,%ecx
 2484         movdqu  (%ebx),%xmm5
 2485         movdqu  (%ebx,%ecx,1),%xmm6
 2486         movdqa  %xmm5,%xmm7
 2487         movdqu  (%esi),%xmm2
 2488         movdqu  16(%esi),%xmm3
 2489         movdqu  32(%esi),%xmm4
 2490         movl    240(%edx),%ecx
 2491         movdqa  %xmm1,96(%esp)
 2492         pxor    %xmm0,%xmm5
 2493         pxor    %xmm5,%xmm6
 2494         pxor    %xmm6,%xmm7
 2495         pxor    %xmm5,%xmm2
 2496         pxor    %xmm6,%xmm3
 2497         pxor    %xmm7,%xmm4
 2498         movl    120(%esp),%edi
 2499         call    _aesni_decrypt3
 2500         movdqa  96(%esp),%xmm1
 2501         xorps   %xmm5,%xmm2
 2502         xorps   %xmm6,%xmm3
 2503         xorps   %xmm7,%xmm4
 2504         movups  %xmm2,(%edi,%esi,1)
 2505         pxor    %xmm2,%xmm1
 2506         movdqa  %xmm7,%xmm0
 2507         movups  %xmm3,16(%edi,%esi,1)
 2508         pxor    %xmm3,%xmm1
 2509         movups  %xmm4,32(%edi,%esi,1)
 2510         pxor    %xmm4,%xmm1
 2511         jmp     .L088done
 2512 .align  16
 2513 .L092four:
 2514         leal    1(%ebp),%ecx
 2515         leal    3(%ebp),%eax
 2516         bsfl    %ecx,%ecx
 2517         bsfl    %eax,%eax
 2518         movl    112(%esp),%edx
 2519         shll    $4,%ecx
 2520         shll    $4,%eax
 2521         movdqu  (%ebx),%xmm4
 2522         movdqu  (%ebx,%ecx,1),%xmm5
 2523         movdqa  %xmm4,%xmm6
 2524         movdqu  (%ebx,%eax,1),%xmm7
 2525         pxor    %xmm0,%xmm4
 2526         movdqu  (%esi),%xmm2
 2527         pxor    %xmm4,%xmm5
 2528         movdqu  16(%esi),%xmm3
 2529         pxor    %xmm5,%xmm6
 2530         movdqa  %xmm4,(%esp)
 2531         pxor    %xmm6,%xmm7
 2532         movdqa  %xmm5,16(%esp)
 2533         movdqu  32(%esi),%xmm4
 2534         movdqu  48(%esi),%xmm5
 2535         movl    240(%edx),%ecx
 2536         movdqa  %xmm1,96(%esp)
 2537         pxor    (%esp),%xmm2
 2538         pxor    16(%esp),%xmm3
 2539         pxor    %xmm6,%xmm4
 2540         pxor    %xmm7,%xmm5
 2541         movl    120(%esp),%edi
 2542         call    _aesni_decrypt4
 2543         movdqa  96(%esp),%xmm1
 2544         xorps   (%esp),%xmm2
 2545         xorps   16(%esp),%xmm3
 2546         xorps   %xmm6,%xmm4
 2547         movups  %xmm2,(%edi,%esi,1)
 2548         pxor    %xmm2,%xmm1
 2549         xorps   %xmm7,%xmm5
 2550         movups  %xmm3,16(%edi,%esi,1)
 2551         pxor    %xmm3,%xmm1
 2552         movdqa  %xmm7,%xmm0
 2553         movups  %xmm4,32(%edi,%esi,1)
 2554         pxor    %xmm4,%xmm1
 2555         movups  %xmm5,48(%edi,%esi,1)
 2556         pxor    %xmm5,%xmm1
 2557 .L088done:
 2558         movl    128(%esp),%edx
 2559         pxor    %xmm2,%xmm2
 2560         pxor    %xmm3,%xmm3
 2561         movdqa  %xmm2,(%esp)
 2562         pxor    %xmm4,%xmm4
 2563         movdqa  %xmm2,16(%esp)
 2564         pxor    %xmm5,%xmm5
 2565         movdqa  %xmm2,32(%esp)
 2566         pxor    %xmm6,%xmm6
 2567         movdqa  %xmm2,48(%esp)
 2568         pxor    %xmm7,%xmm7
 2569         movdqa  %xmm2,64(%esp)
 2570         movdqa  %xmm2,80(%esp)
 2571         movdqa  %xmm2,96(%esp)
 2572         leal    (%edx),%esp
 2573         movl    40(%esp),%ecx
 2574         movl    48(%esp),%ebx
 2575         movdqu  %xmm0,(%ecx)
 2576         pxor    %xmm0,%xmm0
 2577         movdqu  %xmm1,(%ebx)
 2578         pxor    %xmm1,%xmm1
 2579         popl    %edi
 2580         popl    %esi
 2581         popl    %ebx
 2582         popl    %ebp
 2583         ret
 2584 .size   aesni_ocb_decrypt,.-.L_aesni_ocb_decrypt_begin
 2585 .globl  aesni_cbc_encrypt
 2586 .type   aesni_cbc_encrypt,@function
 2587 .align  16
 2588 aesni_cbc_encrypt:
 2589 .L_aesni_cbc_encrypt_begin:
 2590         pushl   %ebp
 2591         pushl   %ebx
 2592         pushl   %esi
 2593         pushl   %edi
 2594         movl    20(%esp),%esi
 2595         movl    %esp,%ebx
 2596         movl    24(%esp),%edi
 2597         subl    $24,%ebx
 2598         movl    28(%esp),%eax
 2599         andl    $-16,%ebx
 2600         movl    32(%esp),%edx
 2601         movl    36(%esp),%ebp
 2602         testl   %eax,%eax
 2603         jz      .L094cbc_abort
 2604         cmpl    $0,40(%esp)
 2605         xchgl   %esp,%ebx
 2606         movups  (%ebp),%xmm7
 2607         movl    240(%edx),%ecx
 2608         movl    %edx,%ebp
 2609         movl    %ebx,16(%esp)
 2610         movl    %ecx,%ebx
 2611         je      .L095cbc_decrypt
 2612         movaps  %xmm7,%xmm2
 2613         cmpl    $16,%eax
 2614         jb      .L096cbc_enc_tail
 2615         subl    $16,%eax
 2616         jmp     .L097cbc_enc_loop
 2617 .align  16
 2618 .L097cbc_enc_loop:
 2619         movups  (%esi),%xmm7
 2620         leal    16(%esi),%esi
 2621         movups  (%edx),%xmm0
 2622         movups  16(%edx),%xmm1
 2623         xorps   %xmm0,%xmm7
 2624         leal    32(%edx),%edx
 2625         xorps   %xmm7,%xmm2
 2626 .L098enc1_loop_19:
 2627 .byte   102,15,56,220,209
 2628         decl    %ecx
 2629         movups  (%edx),%xmm1
 2630         leal    16(%edx),%edx
 2631         jnz     .L098enc1_loop_19
 2632 .byte   102,15,56,221,209
 2633         movl    %ebx,%ecx
 2634         movl    %ebp,%edx
 2635         movups  %xmm2,(%edi)
 2636         leal    16(%edi),%edi
 2637         subl    $16,%eax
 2638         jnc     .L097cbc_enc_loop
 2639         addl    $16,%eax
 2640         jnz     .L096cbc_enc_tail
 2641         movaps  %xmm2,%xmm7
 2642         pxor    %xmm2,%xmm2
 2643         jmp     .L099cbc_ret
 2644 .L096cbc_enc_tail:
 2645         movl    %eax,%ecx
 2646 .long   2767451785
 2647         movl    $16,%ecx
 2648         subl    %eax,%ecx
 2649         xorl    %eax,%eax
 2650 .long   2868115081
 2651         leal    -16(%edi),%edi
 2652         movl    %ebx,%ecx
 2653         movl    %edi,%esi
 2654         movl    %ebp,%edx
 2655         jmp     .L097cbc_enc_loop
 2656 .align  16
 2657 .L095cbc_decrypt:
 2658         cmpl    $80,%eax
 2659         jbe     .L100cbc_dec_tail
 2660         movaps  %xmm7,(%esp)
 2661         subl    $80,%eax
 2662         jmp     .L101cbc_dec_loop6_enter
 2663 .align  16
 2664 .L102cbc_dec_loop6:
 2665         movaps  %xmm0,(%esp)
 2666         movups  %xmm7,(%edi)
 2667         leal    16(%edi),%edi
 2668 .L101cbc_dec_loop6_enter:
 2669         movdqu  (%esi),%xmm2
 2670         movdqu  16(%esi),%xmm3
 2671         movdqu  32(%esi),%xmm4
 2672         movdqu  48(%esi),%xmm5
 2673         movdqu  64(%esi),%xmm6
 2674         movdqu  80(%esi),%xmm7
 2675         call    _aesni_decrypt6
 2676         movups  (%esi),%xmm1
 2677         movups  16(%esi),%xmm0
 2678         xorps   (%esp),%xmm2
 2679         xorps   %xmm1,%xmm3
 2680         movups  32(%esi),%xmm1
 2681         xorps   %xmm0,%xmm4
 2682         movups  48(%esi),%xmm0
 2683         xorps   %xmm1,%xmm5
 2684         movups  64(%esi),%xmm1
 2685         xorps   %xmm0,%xmm6
 2686         movups  80(%esi),%xmm0
 2687         xorps   %xmm1,%xmm7
 2688         movups  %xmm2,(%edi)
 2689         movups  %xmm3,16(%edi)
 2690         leal    96(%esi),%esi
 2691         movups  %xmm4,32(%edi)
 2692         movl    %ebx,%ecx
 2693         movups  %xmm5,48(%edi)
 2694         movl    %ebp,%edx
 2695         movups  %xmm6,64(%edi)
 2696         leal    80(%edi),%edi
 2697         subl    $96,%eax
 2698         ja      .L102cbc_dec_loop6
 2699         movaps  %xmm7,%xmm2
 2700         movaps  %xmm0,%xmm7
 2701         addl    $80,%eax
 2702         jle     .L103cbc_dec_clear_tail_collected
 2703         movups  %xmm2,(%edi)
 2704         leal    16(%edi),%edi
 2705 .L100cbc_dec_tail:
 2706         movups  (%esi),%xmm2
 2707         movaps  %xmm2,%xmm6
 2708         cmpl    $16,%eax
 2709         jbe     .L104cbc_dec_one
 2710         movups  16(%esi),%xmm3
 2711         movaps  %xmm3,%xmm5
 2712         cmpl    $32,%eax
 2713         jbe     .L105cbc_dec_two
 2714         movups  32(%esi),%xmm4
 2715         cmpl    $48,%eax
 2716         jbe     .L106cbc_dec_three
 2717         movups  48(%esi),%xmm5
 2718         cmpl    $64,%eax
 2719         jbe     .L107cbc_dec_four
 2720         movups  64(%esi),%xmm6
 2721         movaps  %xmm7,(%esp)
 2722         movups  (%esi),%xmm2
 2723         xorps   %xmm7,%xmm7
 2724         call    _aesni_decrypt6
 2725         movups  (%esi),%xmm1
 2726         movups  16(%esi),%xmm0
 2727         xorps   (%esp),%xmm2
 2728         xorps   %xmm1,%xmm3
 2729         movups  32(%esi),%xmm1
 2730         xorps   %xmm0,%xmm4
 2731         movups  48(%esi),%xmm0
 2732         xorps   %xmm1,%xmm5
 2733         movups  64(%esi),%xmm7
 2734         xorps   %xmm0,%xmm6
 2735         movups  %xmm2,(%edi)
 2736         movups  %xmm3,16(%edi)
 2737         pxor    %xmm3,%xmm3
 2738         movups  %xmm4,32(%edi)
 2739         pxor    %xmm4,%xmm4
 2740         movups  %xmm5,48(%edi)
 2741         pxor    %xmm5,%xmm5
 2742         leal    64(%edi),%edi
 2743         movaps  %xmm6,%xmm2
 2744         pxor    %xmm6,%xmm6
 2745         subl    $80,%eax
 2746         jmp     .L108cbc_dec_tail_collected
 2747 .align  16
 2748 .L104cbc_dec_one:
 2749         movups  (%edx),%xmm0
 2750         movups  16(%edx),%xmm1
 2751         leal    32(%edx),%edx
 2752         xorps   %xmm0,%xmm2
 2753 .L109dec1_loop_20:
 2754 .byte   102,15,56,222,209
 2755         decl    %ecx
 2756         movups  (%edx),%xmm1
 2757         leal    16(%edx),%edx
 2758         jnz     .L109dec1_loop_20
 2759 .byte   102,15,56,223,209
 2760         xorps   %xmm7,%xmm2
 2761         movaps  %xmm6,%xmm7
 2762         subl    $16,%eax
 2763         jmp     .L108cbc_dec_tail_collected
 2764 .align  16
 2765 .L105cbc_dec_two:
 2766         call    _aesni_decrypt2
 2767         xorps   %xmm7,%xmm2
 2768         xorps   %xmm6,%xmm3
 2769         movups  %xmm2,(%edi)
 2770         movaps  %xmm3,%xmm2
 2771         pxor    %xmm3,%xmm3
 2772         leal    16(%edi),%edi
 2773         movaps  %xmm5,%xmm7
 2774         subl    $32,%eax
 2775         jmp     .L108cbc_dec_tail_collected
 2776 .align  16
 2777 .L106cbc_dec_three:
 2778         call    _aesni_decrypt3
 2779         xorps   %xmm7,%xmm2
 2780         xorps   %xmm6,%xmm3
 2781         xorps   %xmm5,%xmm4
 2782         movups  %xmm2,(%edi)
 2783         movaps  %xmm4,%xmm2
 2784         pxor    %xmm4,%xmm4
 2785         movups  %xmm3,16(%edi)
 2786         pxor    %xmm3,%xmm3
 2787         leal    32(%edi),%edi
 2788         movups  32(%esi),%xmm7
 2789         subl    $48,%eax
 2790         jmp     .L108cbc_dec_tail_collected
 2791 .align  16
 2792 .L107cbc_dec_four:
 2793         call    _aesni_decrypt4
 2794         movups  16(%esi),%xmm1
 2795         movups  32(%esi),%xmm0
 2796         xorps   %xmm7,%xmm2
 2797         movups  48(%esi),%xmm7
 2798         xorps   %xmm6,%xmm3
 2799         movups  %xmm2,(%edi)
 2800         xorps   %xmm1,%xmm4
 2801         movups  %xmm3,16(%edi)
 2802         pxor    %xmm3,%xmm3
 2803         xorps   %xmm0,%xmm5
 2804         movups  %xmm4,32(%edi)
 2805         pxor    %xmm4,%xmm4
 2806         leal    48(%edi),%edi
 2807         movaps  %xmm5,%xmm2
 2808         pxor    %xmm5,%xmm5
 2809         subl    $64,%eax
 2810         jmp     .L108cbc_dec_tail_collected
 2811 .align  16
 2812 .L103cbc_dec_clear_tail_collected:
 2813         pxor    %xmm3,%xmm3
 2814         pxor    %xmm4,%xmm4
 2815         pxor    %xmm5,%xmm5
 2816         pxor    %xmm6,%xmm6
 2817 .L108cbc_dec_tail_collected:
 2818         andl    $15,%eax
 2819         jnz     .L110cbc_dec_tail_partial
 2820         movups  %xmm2,(%edi)
 2821         pxor    %xmm0,%xmm0
 2822         jmp     .L099cbc_ret
 2823 .align  16
 2824 .L110cbc_dec_tail_partial:
 2825         movaps  %xmm2,(%esp)
 2826         pxor    %xmm0,%xmm0
 2827         movl    $16,%ecx
 2828         movl    %esp,%esi
 2829         subl    %eax,%ecx
 2830 .long   2767451785
 2831         movdqa  %xmm2,(%esp)
 2832 .L099cbc_ret:
 2833         movl    16(%esp),%esp
 2834         movl    36(%esp),%ebp
 2835         pxor    %xmm2,%xmm2
 2836         pxor    %xmm1,%xmm1
 2837         movups  %xmm7,(%ebp)
 2838         pxor    %xmm7,%xmm7
 2839 .L094cbc_abort:
 2840         popl    %edi
 2841         popl    %esi
 2842         popl    %ebx
 2843         popl    %ebp
 2844         ret
 2845 .size   aesni_cbc_encrypt,.-.L_aesni_cbc_encrypt_begin
 2846 .type   _aesni_set_encrypt_key,@function
 2847 .align  16
 2848 _aesni_set_encrypt_key:
 2849         pushl   %ebp
 2850         pushl   %ebx
 2851         testl   %eax,%eax
 2852         jz      .L111bad_pointer
 2853         testl   %edx,%edx
 2854         jz      .L111bad_pointer
 2855         call    .L112pic
 2856 .L112pic:
 2857         popl    %ebx
 2858         leal    .Lkey_const-.L112pic(%ebx),%ebx
 2859         leal    OPENSSL_ia32cap_P-.Lkey_const(%ebx),%ebp
 2860         movups  (%eax),%xmm0
 2861         xorps   %xmm4,%xmm4
 2862         movl    4(%ebp),%ebp
 2863         leal    16(%edx),%edx
 2864         andl    $268437504,%ebp
 2865         cmpl    $256,%ecx
 2866         je      .L11314rounds
 2867         cmpl    $192,%ecx
 2868         je      .L11412rounds
 2869         cmpl    $128,%ecx
 2870         jne     .L115bad_keybits
 2871 .align  16
 2872 .L11610rounds:
 2873         cmpl    $268435456,%ebp
 2874         je      .L11710rounds_alt
 2875         movl    $9,%ecx
 2876         movups  %xmm0,-16(%edx)
 2877 .byte   102,15,58,223,200,1
 2878         call    .L118key_128_cold
 2879 .byte   102,15,58,223,200,2
 2880         call    .L119key_128
 2881 .byte   102,15,58,223,200,4
 2882         call    .L119key_128
 2883 .byte   102,15,58,223,200,8
 2884         call    .L119key_128
 2885 .byte   102,15,58,223,200,16
 2886         call    .L119key_128
 2887 .byte   102,15,58,223,200,32
 2888         call    .L119key_128
 2889 .byte   102,15,58,223,200,64
 2890         call    .L119key_128
 2891 .byte   102,15,58,223,200,128
 2892         call    .L119key_128
 2893 .byte   102,15,58,223,200,27
 2894         call    .L119key_128
 2895 .byte   102,15,58,223,200,54
 2896         call    .L119key_128
 2897         movups  %xmm0,(%edx)
 2898         movl    %ecx,80(%edx)
 2899         jmp     .L120good_key
 2900 .align  16
 2901 .L119key_128:
 2902         movups  %xmm0,(%edx)
 2903         leal    16(%edx),%edx
 2904 .L118key_128_cold:
 2905         shufps  $16,%xmm0,%xmm4
 2906         xorps   %xmm4,%xmm0
 2907         shufps  $140,%xmm0,%xmm4
 2908         xorps   %xmm4,%xmm0
 2909         shufps  $255,%xmm1,%xmm1
 2910         xorps   %xmm1,%xmm0
 2911         ret
 2912 .align  16
 2913 .L11710rounds_alt:
 2914         movdqa  (%ebx),%xmm5
 2915         movl    $8,%ecx
 2916         movdqa  32(%ebx),%xmm4
 2917         movdqa  %xmm0,%xmm2
 2918         movdqu  %xmm0,-16(%edx)
 2919 .L121loop_key128:
 2920 .byte   102,15,56,0,197
 2921 .byte   102,15,56,221,196
 2922         pslld   $1,%xmm4
 2923         leal    16(%edx),%edx
 2924         movdqa  %xmm2,%xmm3
 2925         pslldq  $4,%xmm2
 2926         pxor    %xmm2,%xmm3
 2927         pslldq  $4,%xmm2
 2928         pxor    %xmm2,%xmm3
 2929         pslldq  $4,%xmm2
 2930         pxor    %xmm3,%xmm2
 2931         pxor    %xmm2,%xmm0
 2932         movdqu  %xmm0,-16(%edx)
 2933         movdqa  %xmm0,%xmm2
 2934         decl    %ecx
 2935         jnz     .L121loop_key128
 2936         movdqa  48(%ebx),%xmm4
 2937 .byte   102,15,56,0,197
 2938 .byte   102,15,56,221,196
 2939         pslld   $1,%xmm4
 2940         movdqa  %xmm2,%xmm3
 2941         pslldq  $4,%xmm2
 2942         pxor    %xmm2,%xmm3
 2943         pslldq  $4,%xmm2
 2944         pxor    %xmm2,%xmm3
 2945         pslldq  $4,%xmm2
 2946         pxor    %xmm3,%xmm2
 2947         pxor    %xmm2,%xmm0
 2948         movdqu  %xmm0,(%edx)
 2949         movdqa  %xmm0,%xmm2
 2950 .byte   102,15,56,0,197
 2951 .byte   102,15,56,221,196
 2952         movdqa  %xmm2,%xmm3
 2953         pslldq  $4,%xmm2
 2954         pxor    %xmm2,%xmm3
 2955         pslldq  $4,%xmm2
 2956         pxor    %xmm2,%xmm3
 2957         pslldq  $4,%xmm2
 2958         pxor    %xmm3,%xmm2
 2959         pxor    %xmm2,%xmm0
 2960         movdqu  %xmm0,16(%edx)
 2961         movl    $9,%ecx
 2962         movl    %ecx,96(%edx)
 2963         jmp     .L120good_key
 2964 .align  16
 2965 .L11412rounds:
 2966         movq    16(%eax),%xmm2
 2967         cmpl    $268435456,%ebp
 2968         je      .L12212rounds_alt
 2969         movl    $11,%ecx
 2970         movups  %xmm0,-16(%edx)
 2971 .byte   102,15,58,223,202,1
 2972         call    .L123key_192a_cold
 2973 .byte   102,15,58,223,202,2
 2974         call    .L124key_192b
 2975 .byte   102,15,58,223,202,4
 2976         call    .L125key_192a
 2977 .byte   102,15,58,223,202,8
 2978         call    .L124key_192b
 2979 .byte   102,15,58,223,202,16
 2980         call    .L125key_192a
 2981 .byte   102,15,58,223,202,32
 2982         call    .L124key_192b
 2983 .byte   102,15,58,223,202,64
 2984         call    .L125key_192a
 2985 .byte   102,15,58,223,202,128
 2986         call    .L124key_192b
 2987         movups  %xmm0,(%edx)
 2988         movl    %ecx,48(%edx)
 2989         jmp     .L120good_key
 2990 .align  16
 2991 .L125key_192a:
 2992         movups  %xmm0,(%edx)
 2993         leal    16(%edx),%edx
 2994 .align  16
 2995 .L123key_192a_cold:
 2996         movaps  %xmm2,%xmm5
 2997 .L126key_192b_warm:
 2998         shufps  $16,%xmm0,%xmm4
 2999         movdqa  %xmm2,%xmm3
 3000         xorps   %xmm4,%xmm0
 3001         shufps  $140,%xmm0,%xmm4
 3002         pslldq  $4,%xmm3
 3003         xorps   %xmm4,%xmm0
 3004         pshufd  $85,%xmm1,%xmm1
 3005         pxor    %xmm3,%xmm2
 3006         pxor    %xmm1,%xmm0
 3007         pshufd  $255,%xmm0,%xmm3
 3008         pxor    %xmm3,%xmm2
 3009         ret
 3010 .align  16
 3011 .L124key_192b:
 3012         movaps  %xmm0,%xmm3
 3013         shufps  $68,%xmm0,%xmm5
 3014         movups  %xmm5,(%edx)
 3015         shufps  $78,%xmm2,%xmm3
 3016         movups  %xmm3,16(%edx)
 3017         leal    32(%edx),%edx
 3018         jmp     .L126key_192b_warm
 3019 .align  16
 3020 .L12212rounds_alt:
 3021         movdqa  16(%ebx),%xmm5
 3022         movdqa  32(%ebx),%xmm4
 3023         movl    $8,%ecx
 3024         movdqu  %xmm0,-16(%edx)
 3025 .L127loop_key192:
 3026         movq    %xmm2,(%edx)
 3027         movdqa  %xmm2,%xmm1
 3028 .byte   102,15,56,0,213
 3029 .byte   102,15,56,221,212
 3030         pslld   $1,%xmm4
 3031         leal    24(%edx),%edx
 3032         movdqa  %xmm0,%xmm3
 3033         pslldq  $4,%xmm0
 3034         pxor    %xmm0,%xmm3
 3035         pslldq  $4,%xmm0
 3036         pxor    %xmm0,%xmm3
 3037         pslldq  $4,%xmm0
 3038         pxor    %xmm3,%xmm0
 3039         pshufd  $255,%xmm0,%xmm3
 3040         pxor    %xmm1,%xmm3
 3041         pslldq  $4,%xmm1
 3042         pxor    %xmm1,%xmm3
 3043         pxor    %xmm2,%xmm0
 3044         pxor    %xmm3,%xmm2
 3045         movdqu  %xmm0,-16(%edx)
 3046         decl    %ecx
 3047         jnz     .L127loop_key192
 3048         movl    $11,%ecx
 3049         movl    %ecx,32(%edx)
 3050         jmp     .L120good_key
 3051 .align  16
 3052 .L11314rounds:
 3053         movups  16(%eax),%xmm2
 3054         leal    16(%edx),%edx
 3055         cmpl    $268435456,%ebp
 3056         je      .L12814rounds_alt
 3057         movl    $13,%ecx
 3058         movups  %xmm0,-32(%edx)
 3059         movups  %xmm2,-16(%edx)
 3060 .byte   102,15,58,223,202,1
 3061         call    .L129key_256a_cold
 3062 .byte   102,15,58,223,200,1
 3063         call    .L130key_256b
 3064 .byte   102,15,58,223,202,2
 3065         call    .L131key_256a
 3066 .byte   102,15,58,223,200,2
 3067         call    .L130key_256b
 3068 .byte   102,15,58,223,202,4
 3069         call    .L131key_256a
 3070 .byte   102,15,58,223,200,4
 3071         call    .L130key_256b
 3072 .byte   102,15,58,223,202,8
 3073         call    .L131key_256a
 3074 .byte   102,15,58,223,200,8
 3075         call    .L130key_256b
 3076 .byte   102,15,58,223,202,16
 3077         call    .L131key_256a
 3078 .byte   102,15,58,223,200,16
 3079         call    .L130key_256b
 3080 .byte   102,15,58,223,202,32
 3081         call    .L131key_256a
 3082 .byte   102,15,58,223,200,32
 3083         call    .L130key_256b
 3084 .byte   102,15,58,223,202,64
 3085         call    .L131key_256a
 3086         movups  %xmm0,(%edx)
 3087         movl    %ecx,16(%edx)
 3088         xorl    %eax,%eax
 3089         jmp     .L120good_key
 3090 .align  16
 3091 .L131key_256a:
 3092         movups  %xmm2,(%edx)
 3093         leal    16(%edx),%edx
 3094 .L129key_256a_cold:
 3095         shufps  $16,%xmm0,%xmm4
 3096         xorps   %xmm4,%xmm0
 3097         shufps  $140,%xmm0,%xmm4
 3098         xorps   %xmm4,%xmm0
 3099         shufps  $255,%xmm1,%xmm1
 3100         xorps   %xmm1,%xmm0
 3101         ret
 3102 .align  16
 3103 .L130key_256b:
 3104         movups  %xmm0,(%edx)
 3105         leal    16(%edx),%edx
 3106         shufps  $16,%xmm2,%xmm4
 3107         xorps   %xmm4,%xmm2
 3108         shufps  $140,%xmm2,%xmm4
 3109         xorps   %xmm4,%xmm2
 3110         shufps  $170,%xmm1,%xmm1
 3111         xorps   %xmm1,%xmm2
 3112         ret
 3113 .align  16
 3114 .L12814rounds_alt:
 3115         movdqa  (%ebx),%xmm5
 3116         movdqa  32(%ebx),%xmm4
 3117         movl    $7,%ecx
 3118         movdqu  %xmm0,-32(%edx)
 3119         movdqa  %xmm2,%xmm1
 3120         movdqu  %xmm2,-16(%edx)
 3121 .L132loop_key256:
 3122 .byte   102,15,56,0,213
 3123 .byte   102,15,56,221,212
 3124         movdqa  %xmm0,%xmm3
 3125         pslldq  $4,%xmm0
 3126         pxor    %xmm0,%xmm3
 3127         pslldq  $4,%xmm0
 3128         pxor    %xmm0,%xmm3
 3129         pslldq  $4,%xmm0
 3130         pxor    %xmm3,%xmm0
 3131         pslld   $1,%xmm4
 3132         pxor    %xmm2,%xmm0
 3133         movdqu  %xmm0,(%edx)
 3134         decl    %ecx
 3135         jz      .L133done_key256
 3136         pshufd  $255,%xmm0,%xmm2
 3137         pxor    %xmm3,%xmm3
 3138 .byte   102,15,56,221,211
 3139         movdqa  %xmm1,%xmm3
 3140         pslldq  $4,%xmm1
 3141         pxor    %xmm1,%xmm3
 3142         pslldq  $4,%xmm1
 3143         pxor    %xmm1,%xmm3
 3144         pslldq  $4,%xmm1
 3145         pxor    %xmm3,%xmm1
 3146         pxor    %xmm1,%xmm2
 3147         movdqu  %xmm2,16(%edx)
 3148         leal    32(%edx),%edx
 3149         movdqa  %xmm2,%xmm1
 3150         jmp     .L132loop_key256
 3151 .L133done_key256:
 3152         movl    $13,%ecx
 3153         movl    %ecx,16(%edx)
 3154 .L120good_key:
 3155         pxor    %xmm0,%xmm0
 3156         pxor    %xmm1,%xmm1
 3157         pxor    %xmm2,%xmm2
 3158         pxor    %xmm3,%xmm3
 3159         pxor    %xmm4,%xmm4
 3160         pxor    %xmm5,%xmm5
 3161         xorl    %eax,%eax
 3162         popl    %ebx
 3163         popl    %ebp
 3164         ret
 3165 .align  4
 3166 .L111bad_pointer:
 3167         movl    $-1,%eax
 3168         popl    %ebx
 3169         popl    %ebp
 3170         ret
 3171 .align  4
 3172 .L115bad_keybits:
 3173         pxor    %xmm0,%xmm0
 3174         movl    $-2,%eax
 3175         popl    %ebx
 3176         popl    %ebp
 3177         ret
 3178 .size   _aesni_set_encrypt_key,.-_aesni_set_encrypt_key
 3179 .globl  aesni_set_encrypt_key
 3180 .type   aesni_set_encrypt_key,@function
 3181 .align  16
 3182 aesni_set_encrypt_key:
 3183 .L_aesni_set_encrypt_key_begin:
 3184         movl    4(%esp),%eax
 3185         movl    8(%esp),%ecx
 3186         movl    12(%esp),%edx
 3187         call    _aesni_set_encrypt_key
 3188         ret
 3189 .size   aesni_set_encrypt_key,.-.L_aesni_set_encrypt_key_begin
 3190 .globl  aesni_set_decrypt_key
 3191 .type   aesni_set_decrypt_key,@function
 3192 .align  16
 3193 aesni_set_decrypt_key:
 3194 .L_aesni_set_decrypt_key_begin:
 3195         movl    4(%esp),%eax
 3196         movl    8(%esp),%ecx
 3197         movl    12(%esp),%edx
 3198         call    _aesni_set_encrypt_key
 3199         movl    12(%esp),%edx
 3200         shll    $4,%ecx
 3201         testl   %eax,%eax
 3202         jnz     .L134dec_key_ret
 3203         leal    16(%edx,%ecx,1),%eax
 3204         movups  (%edx),%xmm0
 3205         movups  (%eax),%xmm1
 3206         movups  %xmm0,(%eax)
 3207         movups  %xmm1,(%edx)
 3208         leal    16(%edx),%edx
 3209         leal    -16(%eax),%eax
 3210 .L135dec_key_inverse:
 3211         movups  (%edx),%xmm0
 3212         movups  (%eax),%xmm1
 3213 .byte   102,15,56,219,192
 3214 .byte   102,15,56,219,201
 3215         leal    16(%edx),%edx
 3216         leal    -16(%eax),%eax
 3217         movups  %xmm0,16(%eax)
 3218         movups  %xmm1,-16(%edx)
 3219         cmpl    %edx,%eax
 3220         ja      .L135dec_key_inverse
 3221         movups  (%edx),%xmm0
 3222 .byte   102,15,56,219,192
 3223         movups  %xmm0,(%edx)
 3224         pxor    %xmm0,%xmm0
 3225         pxor    %xmm1,%xmm1
 3226         xorl    %eax,%eax
 3227 .L134dec_key_ret:
 3228         ret
 3229 .size   aesni_set_decrypt_key,.-.L_aesni_set_decrypt_key_begin
 3230 .align  64
 3231 .Lkey_const:
 3232 .long   202313229,202313229,202313229,202313229
 3233 .long   67569157,67569157,67569157,67569157
 3234 .long   1,1,1,1
 3235 .long   27,27,27,27
 3236 .byte   65,69,83,32,102,111,114,32,73,110,116,101,108,32,65,69
 3237 .byte   83,45,78,73,44,32,67,82,89,80,84,79,71,65,77,83
 3238 .byte   32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115
 3239 .byte   115,108,46,111,114,103,62,0
 3240 .comm   OPENSSL_ia32cap_P,16,4
 3241 #else
 3242 .text
 3243 .globl  aesni_encrypt
 3244 .type   aesni_encrypt,@function
 3245 .align  16
 3246 aesni_encrypt:
 3247 .L_aesni_encrypt_begin:
 3248         movl    4(%esp),%eax
 3249         movl    12(%esp),%edx
 3250         movups  (%eax),%xmm2
 3251         movl    240(%edx),%ecx
 3252         movl    8(%esp),%eax
 3253         movups  (%edx),%xmm0
 3254         movups  16(%edx),%xmm1
 3255         leal    32(%edx),%edx
 3256         xorps   %xmm0,%xmm2
 3257 .L000enc1_loop_1:
 3258 .byte   102,15,56,220,209
 3259         decl    %ecx
 3260         movups  (%edx),%xmm1
 3261         leal    16(%edx),%edx
 3262         jnz     .L000enc1_loop_1
 3263 .byte   102,15,56,221,209
 3264         pxor    %xmm0,%xmm0
 3265         pxor    %xmm1,%xmm1
 3266         movups  %xmm2,(%eax)
 3267         pxor    %xmm2,%xmm2
 3268         ret
 3269 .size   aesni_encrypt,.-.L_aesni_encrypt_begin
 3270 .globl  aesni_decrypt
 3271 .type   aesni_decrypt,@function
 3272 .align  16
 3273 aesni_decrypt:
 3274 .L_aesni_decrypt_begin:
 3275         movl    4(%esp),%eax
 3276         movl    12(%esp),%edx
 3277         movups  (%eax),%xmm2
 3278         movl    240(%edx),%ecx
 3279         movl    8(%esp),%eax
 3280         movups  (%edx),%xmm0
 3281         movups  16(%edx),%xmm1
 3282         leal    32(%edx),%edx
 3283         xorps   %xmm0,%xmm2
 3284 .L001dec1_loop_2:
 3285 .byte   102,15,56,222,209
 3286         decl    %ecx
 3287         movups  (%edx),%xmm1
 3288         leal    16(%edx),%edx
 3289         jnz     .L001dec1_loop_2
 3290 .byte   102,15,56,223,209
 3291         pxor    %xmm0,%xmm0
 3292         pxor    %xmm1,%xmm1
 3293         movups  %xmm2,(%eax)
 3294         pxor    %xmm2,%xmm2
 3295         ret
 3296 .size   aesni_decrypt,.-.L_aesni_decrypt_begin
 3297 .type   _aesni_encrypt2,@function
 3298 .align  16
 3299 _aesni_encrypt2:
 3300         movups  (%edx),%xmm0
 3301         shll    $4,%ecx
 3302         movups  16(%edx),%xmm1
 3303         xorps   %xmm0,%xmm2
 3304         pxor    %xmm0,%xmm3
 3305         movups  32(%edx),%xmm0
 3306         leal    32(%edx,%ecx,1),%edx
 3307         negl    %ecx
 3308         addl    $16,%ecx
 3309 .L002enc2_loop:
 3310 .byte   102,15,56,220,209
 3311 .byte   102,15,56,220,217
 3312         movups  (%edx,%ecx,1),%xmm1
 3313         addl    $32,%ecx
 3314 .byte   102,15,56,220,208
 3315 .byte   102,15,56,220,216
 3316         movups  -16(%edx,%ecx,1),%xmm0
 3317         jnz     .L002enc2_loop
 3318 .byte   102,15,56,220,209
 3319 .byte   102,15,56,220,217
 3320 .byte   102,15,56,221,208
 3321 .byte   102,15,56,221,216
 3322         ret
 3323 .size   _aesni_encrypt2,.-_aesni_encrypt2
 3324 .type   _aesni_decrypt2,@function
 3325 .align  16
 3326 _aesni_decrypt2:
 3327         movups  (%edx),%xmm0
 3328         shll    $4,%ecx
 3329         movups  16(%edx),%xmm1
 3330         xorps   %xmm0,%xmm2
 3331         pxor    %xmm0,%xmm3
 3332         movups  32(%edx),%xmm0
 3333         leal    32(%edx,%ecx,1),%edx
 3334         negl    %ecx
 3335         addl    $16,%ecx
 3336 .L003dec2_loop:
 3337 .byte   102,15,56,222,209
 3338 .byte   102,15,56,222,217
 3339         movups  (%edx,%ecx,1),%xmm1
 3340         addl    $32,%ecx
 3341 .byte   102,15,56,222,208
 3342 .byte   102,15,56,222,216
 3343         movups  -16(%edx,%ecx,1),%xmm0
 3344         jnz     .L003dec2_loop
 3345 .byte   102,15,56,222,209
 3346 .byte   102,15,56,222,217
 3347 .byte   102,15,56,223,208
 3348 .byte   102,15,56,223,216
 3349         ret
 3350 .size   _aesni_decrypt2,.-_aesni_decrypt2
 3351 .type   _aesni_encrypt3,@function
 3352 .align  16
 3353 _aesni_encrypt3:
 3354         movups  (%edx),%xmm0
 3355         shll    $4,%ecx
 3356         movups  16(%edx),%xmm1
 3357         xorps   %xmm0,%xmm2
 3358         pxor    %xmm0,%xmm3
 3359         pxor    %xmm0,%xmm4
 3360         movups  32(%edx),%xmm0
 3361         leal    32(%edx,%ecx,1),%edx
 3362         negl    %ecx
 3363         addl    $16,%ecx
 3364 .L004enc3_loop:
 3365 .byte   102,15,56,220,209
 3366 .byte   102,15,56,220,217
 3367 .byte   102,15,56,220,225
 3368         movups  (%edx,%ecx,1),%xmm1
 3369         addl    $32,%ecx
 3370 .byte   102,15,56,220,208
 3371 .byte   102,15,56,220,216
 3372 .byte   102,15,56,220,224
 3373         movups  -16(%edx,%ecx,1),%xmm0
 3374         jnz     .L004enc3_loop
 3375 .byte   102,15,56,220,209
 3376 .byte   102,15,56,220,217
 3377 .byte   102,15,56,220,225
 3378 .byte   102,15,56,221,208
 3379 .byte   102,15,56,221,216
 3380 .byte   102,15,56,221,224
 3381         ret
 3382 .size   _aesni_encrypt3,.-_aesni_encrypt3
 3383 .type   _aesni_decrypt3,@function
 3384 .align  16
 3385 _aesni_decrypt3:
 3386         movups  (%edx),%xmm0
 3387         shll    $4,%ecx
 3388         movups  16(%edx),%xmm1
 3389         xorps   %xmm0,%xmm2
 3390         pxor    %xmm0,%xmm3
 3391         pxor    %xmm0,%xmm4
 3392         movups  32(%edx),%xmm0
 3393         leal    32(%edx,%ecx,1),%edx
 3394         negl    %ecx
 3395         addl    $16,%ecx
 3396 .L005dec3_loop:
 3397 .byte   102,15,56,222,209
 3398 .byte   102,15,56,222,217
 3399 .byte   102,15,56,222,225
 3400         movups  (%edx,%ecx,1),%xmm1
 3401         addl    $32,%ecx
 3402 .byte   102,15,56,222,208
 3403 .byte   102,15,56,222,216
 3404 .byte   102,15,56,222,224
 3405         movups  -16(%edx,%ecx,1),%xmm0
 3406         jnz     .L005dec3_loop
 3407 .byte   102,15,56,222,209
 3408 .byte   102,15,56,222,217
 3409 .byte   102,15,56,222,225
 3410 .byte   102,15,56,223,208
 3411 .byte   102,15,56,223,216
 3412 .byte   102,15,56,223,224
 3413         ret
 3414 .size   _aesni_decrypt3,.-_aesni_decrypt3
 3415 .type   _aesni_encrypt4,@function
 3416 .align  16
 3417 _aesni_encrypt4:
 3418         movups  (%edx),%xmm0
 3419         movups  16(%edx),%xmm1
 3420         shll    $4,%ecx
 3421         xorps   %xmm0,%xmm2
 3422         pxor    %xmm0,%xmm3
 3423         pxor    %xmm0,%xmm4
 3424         pxor    %xmm0,%xmm5
 3425         movups  32(%edx),%xmm0
 3426         leal    32(%edx,%ecx,1),%edx
 3427         negl    %ecx
 3428 .byte   15,31,64,0
 3429         addl    $16,%ecx
 3430 .L006enc4_loop:
 3431 .byte   102,15,56,220,209
 3432 .byte   102,15,56,220,217
 3433 .byte   102,15,56,220,225
 3434 .byte   102,15,56,220,233
 3435         movups  (%edx,%ecx,1),%xmm1
 3436         addl    $32,%ecx
 3437 .byte   102,15,56,220,208
 3438 .byte   102,15,56,220,216
 3439 .byte   102,15,56,220,224
 3440 .byte   102,15,56,220,232
 3441         movups  -16(%edx,%ecx,1),%xmm0
 3442         jnz     .L006enc4_loop
 3443 .byte   102,15,56,220,209
 3444 .byte   102,15,56,220,217
 3445 .byte   102,15,56,220,225
 3446 .byte   102,15,56,220,233
 3447 .byte   102,15,56,221,208
 3448 .byte   102,15,56,221,216
 3449 .byte   102,15,56,221,224
 3450 .byte   102,15,56,221,232
 3451         ret
 3452 .size   _aesni_encrypt4,.-_aesni_encrypt4
 3453 .type   _aesni_decrypt4,@function
 3454 .align  16
 3455 _aesni_decrypt4:
 3456         movups  (%edx),%xmm0
 3457         movups  16(%edx),%xmm1
 3458         shll    $4,%ecx
 3459         xorps   %xmm0,%xmm2
 3460         pxor    %xmm0,%xmm3
 3461         pxor    %xmm0,%xmm4
 3462         pxor    %xmm0,%xmm5
 3463         movups  32(%edx),%xmm0
 3464         leal    32(%edx,%ecx,1),%edx
 3465         negl    %ecx
 3466 .byte   15,31,64,0
 3467         addl    $16,%ecx
 3468 .L007dec4_loop:
 3469 .byte   102,15,56,222,209
 3470 .byte   102,15,56,222,217
 3471 .byte   102,15,56,222,225
 3472 .byte   102,15,56,222,233
 3473         movups  (%edx,%ecx,1),%xmm1
 3474         addl    $32,%ecx
 3475 .byte   102,15,56,222,208
 3476 .byte   102,15,56,222,216
 3477 .byte   102,15,56,222,224
 3478 .byte   102,15,56,222,232
 3479         movups  -16(%edx,%ecx,1),%xmm0
 3480         jnz     .L007dec4_loop
 3481 .byte   102,15,56,222,209
 3482 .byte   102,15,56,222,217
 3483 .byte   102,15,56,222,225
 3484 .byte   102,15,56,222,233
 3485 .byte   102,15,56,223,208
 3486 .byte   102,15,56,223,216
 3487 .byte   102,15,56,223,224
 3488 .byte   102,15,56,223,232
 3489         ret
 3490 .size   _aesni_decrypt4,.-_aesni_decrypt4
 3491 .type   _aesni_encrypt6,@function
 3492 .align  16
 3493 _aesni_encrypt6:
 3494         movups  (%edx),%xmm0
 3495         shll    $4,%ecx
 3496         movups  16(%edx),%xmm1
 3497         xorps   %xmm0,%xmm2
 3498         pxor    %xmm0,%xmm3
 3499         pxor    %xmm0,%xmm4
 3500 .byte   102,15,56,220,209
 3501         pxor    %xmm0,%xmm5
 3502         pxor    %xmm0,%xmm6
 3503 .byte   102,15,56,220,217
 3504         leal    32(%edx,%ecx,1),%edx
 3505         negl    %ecx
 3506 .byte   102,15,56,220,225
 3507         pxor    %xmm0,%xmm7
 3508         movups  (%edx,%ecx,1),%xmm0
 3509         addl    $16,%ecx
 3510         jmp     .L008_aesni_encrypt6_inner
 3511 .align  16
 3512 .L009enc6_loop:
 3513 .byte   102,15,56,220,209
 3514 .byte   102,15,56,220,217
 3515 .byte   102,15,56,220,225
 3516 .L008_aesni_encrypt6_inner:
 3517 .byte   102,15,56,220,233
 3518 .byte   102,15,56,220,241
 3519 .byte   102,15,56,220,249
 3520 .L_aesni_encrypt6_enter:
 3521         movups  (%edx,%ecx,1),%xmm1
 3522         addl    $32,%ecx
 3523 .byte   102,15,56,220,208
 3524 .byte   102,15,56,220,216
 3525 .byte   102,15,56,220,224
 3526 .byte   102,15,56,220,232
 3527 .byte   102,15,56,220,240
 3528 .byte   102,15,56,220,248
 3529         movups  -16(%edx,%ecx,1),%xmm0
 3530         jnz     .L009enc6_loop
 3531 .byte   102,15,56,220,209
 3532 .byte   102,15,56,220,217
 3533 .byte   102,15,56,220,225
 3534 .byte   102,15,56,220,233
 3535 .byte   102,15,56,220,241
 3536 .byte   102,15,56,220,249
 3537 .byte   102,15,56,221,208
 3538 .byte   102,15,56,221,216
 3539 .byte   102,15,56,221,224
 3540 .byte   102,15,56,221,232
 3541 .byte   102,15,56,221,240
 3542 .byte   102,15,56,221,248
 3543         ret
 3544 .size   _aesni_encrypt6,.-_aesni_encrypt6
 3545 .type   _aesni_decrypt6,@function
 3546 .align  16
 3547 _aesni_decrypt6:
 3548         movups  (%edx),%xmm0
 3549         shll    $4,%ecx
 3550         movups  16(%edx),%xmm1
 3551         xorps   %xmm0,%xmm2
 3552         pxor    %xmm0,%xmm3
 3553         pxor    %xmm0,%xmm4
 3554 .byte   102,15,56,222,209
 3555         pxor    %xmm0,%xmm5
 3556         pxor    %xmm0,%xmm6
 3557 .byte   102,15,56,222,217
 3558         leal    32(%edx,%ecx,1),%edx
 3559         negl    %ecx
 3560 .byte   102,15,56,222,225
 3561         pxor    %xmm0,%xmm7
 3562         movups  (%edx,%ecx,1),%xmm0
 3563         addl    $16,%ecx
 3564         jmp     .L010_aesni_decrypt6_inner
 3565 .align  16
 3566 .L011dec6_loop:
 3567 .byte   102,15,56,222,209
 3568 .byte   102,15,56,222,217
 3569 .byte   102,15,56,222,225
 3570 .L010_aesni_decrypt6_inner:
 3571 .byte   102,15,56,222,233
 3572 .byte   102,15,56,222,241
 3573 .byte   102,15,56,222,249
 3574 .L_aesni_decrypt6_enter:
 3575         movups  (%edx,%ecx,1),%xmm1
 3576         addl    $32,%ecx
 3577 .byte   102,15,56,222,208
 3578 .byte   102,15,56,222,216
 3579 .byte   102,15,56,222,224
 3580 .byte   102,15,56,222,232
 3581 .byte   102,15,56,222,240
 3582 .byte   102,15,56,222,248
 3583         movups  -16(%edx,%ecx,1),%xmm0
 3584         jnz     .L011dec6_loop
 3585 .byte   102,15,56,222,209
 3586 .byte   102,15,56,222,217
 3587 .byte   102,15,56,222,225
 3588 .byte   102,15,56,222,233
 3589 .byte   102,15,56,222,241
 3590 .byte   102,15,56,222,249
 3591 .byte   102,15,56,223,208
 3592 .byte   102,15,56,223,216
 3593 .byte   102,15,56,223,224
 3594 .byte   102,15,56,223,232
 3595 .byte   102,15,56,223,240
 3596 .byte   102,15,56,223,248
 3597         ret
 3598 .size   _aesni_decrypt6,.-_aesni_decrypt6
 3599 .globl  aesni_ecb_encrypt
 3600 .type   aesni_ecb_encrypt,@function
 3601 .align  16
 3602 aesni_ecb_encrypt:
 3603 .L_aesni_ecb_encrypt_begin:
 3604         pushl   %ebp
 3605         pushl   %ebx
 3606         pushl   %esi
 3607         pushl   %edi
 3608         movl    20(%esp),%esi
 3609         movl    24(%esp),%edi
 3610         movl    28(%esp),%eax
 3611         movl    32(%esp),%edx
 3612         movl    36(%esp),%ebx
 3613         andl    $-16,%eax
 3614         jz      .L012ecb_ret
 3615         movl    240(%edx),%ecx
 3616         testl   %ebx,%ebx
 3617         jz      .L013ecb_decrypt
 3618         movl    %edx,%ebp
 3619         movl    %ecx,%ebx
 3620         cmpl    $96,%eax
 3621         jb      .L014ecb_enc_tail
 3622         movdqu  (%esi),%xmm2
 3623         movdqu  16(%esi),%xmm3
 3624         movdqu  32(%esi),%xmm4
 3625         movdqu  48(%esi),%xmm5
 3626         movdqu  64(%esi),%xmm6
 3627         movdqu  80(%esi),%xmm7
 3628         leal    96(%esi),%esi
 3629         subl    $96,%eax
 3630         jmp     .L015ecb_enc_loop6_enter
 3631 .align  16
 3632 .L016ecb_enc_loop6:
 3633         movups  %xmm2,(%edi)
 3634         movdqu  (%esi),%xmm2
 3635         movups  %xmm3,16(%edi)
 3636         movdqu  16(%esi),%xmm3
 3637         movups  %xmm4,32(%edi)
 3638         movdqu  32(%esi),%xmm4
 3639         movups  %xmm5,48(%edi)
 3640         movdqu  48(%esi),%xmm5
 3641         movups  %xmm6,64(%edi)
 3642         movdqu  64(%esi),%xmm6
 3643         movups  %xmm7,80(%edi)
 3644         leal    96(%edi),%edi
 3645         movdqu  80(%esi),%xmm7
 3646         leal    96(%esi),%esi
 3647 .L015ecb_enc_loop6_enter:
 3648         call    _aesni_encrypt6
 3649         movl    %ebp,%edx
 3650         movl    %ebx,%ecx
 3651         subl    $96,%eax
 3652         jnc     .L016ecb_enc_loop6
 3653         movups  %xmm2,(%edi)
 3654         movups  %xmm3,16(%edi)
 3655         movups  %xmm4,32(%edi)
 3656         movups  %xmm5,48(%edi)
 3657         movups  %xmm6,64(%edi)
 3658         movups  %xmm7,80(%edi)
 3659         leal    96(%edi),%edi
 3660         addl    $96,%eax
 3661         jz      .L012ecb_ret
 3662 .L014ecb_enc_tail:
 3663         movups  (%esi),%xmm2
 3664         cmpl    $32,%eax
 3665         jb      .L017ecb_enc_one
 3666         movups  16(%esi),%xmm3
 3667         je      .L018ecb_enc_two
 3668         movups  32(%esi),%xmm4
 3669         cmpl    $64,%eax
 3670         jb      .L019ecb_enc_three
 3671         movups  48(%esi),%xmm5
 3672         je      .L020ecb_enc_four
 3673         movups  64(%esi),%xmm6
 3674         xorps   %xmm7,%xmm7
 3675         call    _aesni_encrypt6
 3676         movups  %xmm2,(%edi)
 3677         movups  %xmm3,16(%edi)
 3678         movups  %xmm4,32(%edi)
 3679         movups  %xmm5,48(%edi)
 3680         movups  %xmm6,64(%edi)
 3681         jmp     .L012ecb_ret
 3682 .align  16
 3683 .L017ecb_enc_one:
 3684         movups  (%edx),%xmm0
 3685         movups  16(%edx),%xmm1
 3686         leal    32(%edx),%edx
 3687         xorps   %xmm0,%xmm2
 3688 .L021enc1_loop_3:
 3689 .byte   102,15,56,220,209
 3690         decl    %ecx
 3691         movups  (%edx),%xmm1
 3692         leal    16(%edx),%edx
 3693         jnz     .L021enc1_loop_3
 3694 .byte   102,15,56,221,209
 3695         movups  %xmm2,(%edi)
 3696         jmp     .L012ecb_ret
 3697 .align  16
 3698 .L018ecb_enc_two:
 3699         call    _aesni_encrypt2
 3700         movups  %xmm2,(%edi)
 3701         movups  %xmm3,16(%edi)
 3702         jmp     .L012ecb_ret
 3703 .align  16
 3704 .L019ecb_enc_three:
 3705         call    _aesni_encrypt3
 3706         movups  %xmm2,(%edi)
 3707         movups  %xmm3,16(%edi)
 3708         movups  %xmm4,32(%edi)
 3709         jmp     .L012ecb_ret
 3710 .align  16
 3711 .L020ecb_enc_four:
 3712         call    _aesni_encrypt4
 3713         movups  %xmm2,(%edi)
 3714         movups  %xmm3,16(%edi)
 3715         movups  %xmm4,32(%edi)
 3716         movups  %xmm5,48(%edi)
 3717         jmp     .L012ecb_ret
 3718 .align  16
 3719 .L013ecb_decrypt:
 3720         movl    %edx,%ebp
 3721         movl    %ecx,%ebx
 3722         cmpl    $96,%eax
 3723         jb      .L022ecb_dec_tail
 3724         movdqu  (%esi),%xmm2
 3725         movdqu  16(%esi),%xmm3
 3726         movdqu  32(%esi),%xmm4
 3727         movdqu  48(%esi),%xmm5
 3728         movdqu  64(%esi),%xmm6
 3729         movdqu  80(%esi),%xmm7
 3730         leal    96(%esi),%esi
 3731         subl    $96,%eax
 3732         jmp     .L023ecb_dec_loop6_enter
 3733 .align  16
 3734 .L024ecb_dec_loop6:
 3735         movups  %xmm2,(%edi)
 3736         movdqu  (%esi),%xmm2
 3737         movups  %xmm3,16(%edi)
 3738         movdqu  16(%esi),%xmm3
 3739         movups  %xmm4,32(%edi)
 3740         movdqu  32(%esi),%xmm4
 3741         movups  %xmm5,48(%edi)
 3742         movdqu  48(%esi),%xmm5
 3743         movups  %xmm6,64(%edi)
 3744         movdqu  64(%esi),%xmm6
 3745         movups  %xmm7,80(%edi)
 3746         leal    96(%edi),%edi
 3747         movdqu  80(%esi),%xmm7
 3748         leal    96(%esi),%esi
 3749 .L023ecb_dec_loop6_enter:
 3750         call    _aesni_decrypt6
 3751         movl    %ebp,%edx
 3752         movl    %ebx,%ecx
 3753         subl    $96,%eax
 3754         jnc     .L024ecb_dec_loop6
 3755         movups  %xmm2,(%edi)
 3756         movups  %xmm3,16(%edi)
 3757         movups  %xmm4,32(%edi)
 3758         movups  %xmm5,48(%edi)
 3759         movups  %xmm6,64(%edi)
 3760         movups  %xmm7,80(%edi)
 3761         leal    96(%edi),%edi
 3762         addl    $96,%eax
 3763         jz      .L012ecb_ret
 3764 .L022ecb_dec_tail:
 3765         movups  (%esi),%xmm2
 3766         cmpl    $32,%eax
 3767         jb      .L025ecb_dec_one
 3768         movups  16(%esi),%xmm3
 3769         je      .L026ecb_dec_two
 3770         movups  32(%esi),%xmm4
 3771         cmpl    $64,%eax
 3772         jb      .L027ecb_dec_three
 3773         movups  48(%esi),%xmm5
 3774         je      .L028ecb_dec_four
 3775         movups  64(%esi),%xmm6
 3776         xorps   %xmm7,%xmm7
 3777         call    _aesni_decrypt6
 3778         movups  %xmm2,(%edi)
 3779         movups  %xmm3,16(%edi)
 3780         movups  %xmm4,32(%edi)
 3781         movups  %xmm5,48(%edi)
 3782         movups  %xmm6,64(%edi)
 3783         jmp     .L012ecb_ret
 3784 .align  16
 3785 .L025ecb_dec_one:
 3786         movups  (%edx),%xmm0
 3787         movups  16(%edx),%xmm1
 3788         leal    32(%edx),%edx
 3789         xorps   %xmm0,%xmm2
 3790 .L029dec1_loop_4:
 3791 .byte   102,15,56,222,209
 3792         decl    %ecx
 3793         movups  (%edx),%xmm1
 3794         leal    16(%edx),%edx
 3795         jnz     .L029dec1_loop_4
 3796 .byte   102,15,56,223,209
 3797         movups  %xmm2,(%edi)
 3798         jmp     .L012ecb_ret
 3799 .align  16
 3800 .L026ecb_dec_two:
 3801         call    _aesni_decrypt2
 3802         movups  %xmm2,(%edi)
 3803         movups  %xmm3,16(%edi)
 3804         jmp     .L012ecb_ret
 3805 .align  16
 3806 .L027ecb_dec_three:
 3807         call    _aesni_decrypt3
 3808         movups  %xmm2,(%edi)
 3809         movups  %xmm3,16(%edi)
 3810         movups  %xmm4,32(%edi)
 3811         jmp     .L012ecb_ret
 3812 .align  16
 3813 .L028ecb_dec_four:
 3814         call    _aesni_decrypt4
 3815         movups  %xmm2,(%edi)
 3816         movups  %xmm3,16(%edi)
 3817         movups  %xmm4,32(%edi)
 3818         movups  %xmm5,48(%edi)
 3819 .L012ecb_ret:
 3820         pxor    %xmm0,%xmm0
 3821         pxor    %xmm1,%xmm1
 3822         pxor    %xmm2,%xmm2
 3823         pxor    %xmm3,%xmm3
 3824         pxor    %xmm4,%xmm4
 3825         pxor    %xmm5,%xmm5
 3826         pxor    %xmm6,%xmm6
 3827         pxor    %xmm7,%xmm7
 3828         popl    %edi
 3829         popl    %esi
 3830         popl    %ebx
 3831         popl    %ebp
 3832         ret
 3833 .size   aesni_ecb_encrypt,.-.L_aesni_ecb_encrypt_begin
 3834 .globl  aesni_ccm64_encrypt_blocks
 3835 .type   aesni_ccm64_encrypt_blocks,@function
 3836 .align  16
 3837 aesni_ccm64_encrypt_blocks:
 3838 .L_aesni_ccm64_encrypt_blocks_begin:
 3839         pushl   %ebp
 3840         pushl   %ebx
 3841         pushl   %esi
 3842         pushl   %edi
 3843         movl    20(%esp),%esi
 3844         movl    24(%esp),%edi
 3845         movl    28(%esp),%eax
 3846         movl    32(%esp),%edx
 3847         movl    36(%esp),%ebx
 3848         movl    40(%esp),%ecx
 3849         movl    %esp,%ebp
 3850         subl    $60,%esp
 3851         andl    $-16,%esp
 3852         movl    %ebp,48(%esp)
 3853         movdqu  (%ebx),%xmm7
 3854         movdqu  (%ecx),%xmm3
 3855         movl    240(%edx),%ecx
 3856         movl    $202182159,(%esp)
 3857         movl    $134810123,4(%esp)
 3858         movl    $67438087,8(%esp)
 3859         movl    $66051,12(%esp)
 3860         movl    $1,%ebx
 3861         xorl    %ebp,%ebp
 3862         movl    %ebx,16(%esp)
 3863         movl    %ebp,20(%esp)
 3864         movl    %ebp,24(%esp)
 3865         movl    %ebp,28(%esp)
 3866         shll    $4,%ecx
 3867         movl    $16,%ebx
 3868         leal    (%edx),%ebp
 3869         movdqa  (%esp),%xmm5
 3870         movdqa  %xmm7,%xmm2
 3871         leal    32(%edx,%ecx,1),%edx
 3872         subl    %ecx,%ebx
 3873 .byte   102,15,56,0,253
 3874 .L030ccm64_enc_outer:
 3875         movups  (%ebp),%xmm0
 3876         movl    %ebx,%ecx
 3877         movups  (%esi),%xmm6
 3878         xorps   %xmm0,%xmm2
 3879         movups  16(%ebp),%xmm1
 3880         xorps   %xmm6,%xmm0
 3881         xorps   %xmm0,%xmm3
 3882         movups  32(%ebp),%xmm0
 3883 .L031ccm64_enc2_loop:
 3884 .byte   102,15,56,220,209
 3885 .byte   102,15,56,220,217
 3886         movups  (%edx,%ecx,1),%xmm1
 3887         addl    $32,%ecx
 3888 .byte   102,15,56,220,208
 3889 .byte   102,15,56,220,216
 3890         movups  -16(%edx,%ecx,1),%xmm0
 3891         jnz     .L031ccm64_enc2_loop
 3892 .byte   102,15,56,220,209
 3893 .byte   102,15,56,220,217
 3894         paddq   16(%esp),%xmm7
 3895         decl    %eax
 3896 .byte   102,15,56,221,208
 3897 .byte   102,15,56,221,216
 3898         leal    16(%esi),%esi
 3899         xorps   %xmm2,%xmm6
 3900         movdqa  %xmm7,%xmm2
 3901         movups  %xmm6,(%edi)
 3902 .byte   102,15,56,0,213
 3903         leal    16(%edi),%edi
 3904         jnz     .L030ccm64_enc_outer
 3905         movl    48(%esp),%esp
 3906         movl    40(%esp),%edi
 3907         movups  %xmm3,(%edi)
 3908         pxor    %xmm0,%xmm0
 3909         pxor    %xmm1,%xmm1
 3910         pxor    %xmm2,%xmm2
 3911         pxor    %xmm3,%xmm3
 3912         pxor    %xmm4,%xmm4
 3913         pxor    %xmm5,%xmm5
 3914         pxor    %xmm6,%xmm6
 3915         pxor    %xmm7,%xmm7
 3916         popl    %edi
 3917         popl    %esi
 3918         popl    %ebx
 3919         popl    %ebp
 3920         ret
 3921 .size   aesni_ccm64_encrypt_blocks,.-.L_aesni_ccm64_encrypt_blocks_begin
 3922 .globl  aesni_ccm64_decrypt_blocks
 3923 .type   aesni_ccm64_decrypt_blocks,@function
 3924 .align  16
 3925 aesni_ccm64_decrypt_blocks:
 3926 .L_aesni_ccm64_decrypt_blocks_begin:
 3927         pushl   %ebp
 3928         pushl   %ebx
 3929         pushl   %esi
 3930         pushl   %edi
 3931         movl    20(%esp),%esi
 3932         movl    24(%esp),%edi
 3933         movl    28(%esp),%eax
 3934         movl    32(%esp),%edx
 3935         movl    36(%esp),%ebx
 3936         movl    40(%esp),%ecx
 3937         movl    %esp,%ebp
 3938         subl    $60,%esp
 3939         andl    $-16,%esp
 3940         movl    %ebp,48(%esp)
 3941         movdqu  (%ebx),%xmm7
 3942         movdqu  (%ecx),%xmm3
 3943         movl    240(%edx),%ecx
 3944         movl    $202182159,(%esp)
 3945         movl    $134810123,4(%esp)
 3946         movl    $67438087,8(%esp)
 3947         movl    $66051,12(%esp)
 3948         movl    $1,%ebx
 3949         xorl    %ebp,%ebp
 3950         movl    %ebx,16(%esp)
 3951         movl    %ebp,20(%esp)
 3952         movl    %ebp,24(%esp)
 3953         movl    %ebp,28(%esp)
 3954         movdqa  (%esp),%xmm5
 3955         movdqa  %xmm7,%xmm2
 3956         movl    %edx,%ebp
 3957         movl    %ecx,%ebx
 3958 .byte   102,15,56,0,253
 3959         movups  (%edx),%xmm0
 3960         movups  16(%edx),%xmm1
 3961         leal    32(%edx),%edx
 3962         xorps   %xmm0,%xmm2
 3963 .L032enc1_loop_5:
 3964 .byte   102,15,56,220,209
 3965         decl    %ecx
 3966         movups  (%edx),%xmm1
 3967         leal    16(%edx),%edx
 3968         jnz     .L032enc1_loop_5
 3969 .byte   102,15,56,221,209
 3970         shll    $4,%ebx
 3971         movl    $16,%ecx
 3972         movups  (%esi),%xmm6
 3973         paddq   16(%esp),%xmm7
 3974         leal    16(%esi),%esi
 3975         subl    %ebx,%ecx
 3976         leal    32(%ebp,%ebx,1),%edx
 3977         movl    %ecx,%ebx
 3978         jmp     .L033ccm64_dec_outer
 3979 .align  16
 3980 .L033ccm64_dec_outer:
 3981         xorps   %xmm2,%xmm6
 3982         movdqa  %xmm7,%xmm2
 3983         movups  %xmm6,(%edi)
 3984         leal    16(%edi),%edi
 3985 .byte   102,15,56,0,213
 3986         subl    $1,%eax
 3987         jz      .L034ccm64_dec_break
 3988         movups  (%ebp),%xmm0
 3989         movl    %ebx,%ecx
 3990         movups  16(%ebp),%xmm1
 3991         xorps   %xmm0,%xmm6
 3992         xorps   %xmm0,%xmm2
 3993         xorps   %xmm6,%xmm3
 3994         movups  32(%ebp),%xmm0
 3995 .L035ccm64_dec2_loop:
 3996 .byte   102,15,56,220,209
 3997 .byte   102,15,56,220,217
 3998         movups  (%edx,%ecx,1),%xmm1
 3999         addl    $32,%ecx
 4000 .byte   102,15,56,220,208
 4001 .byte   102,15,56,220,216
 4002         movups  -16(%edx,%ecx,1),%xmm0
 4003         jnz     .L035ccm64_dec2_loop
 4004         movups  (%esi),%xmm6
 4005         paddq   16(%esp),%xmm7
 4006 .byte   102,15,56,220,209
 4007 .byte   102,15,56,220,217
 4008 .byte   102,15,56,221,208
 4009 .byte   102,15,56,221,216
 4010         leal    16(%esi),%esi
 4011         jmp     .L033ccm64_dec_outer
 4012 .align  16
 4013 .L034ccm64_dec_break:
 4014         movl    240(%ebp),%ecx
 4015         movl    %ebp,%edx
 4016         movups  (%edx),%xmm0
 4017         movups  16(%edx),%xmm1
 4018         xorps   %xmm0,%xmm6
 4019         leal    32(%edx),%edx
 4020         xorps   %xmm6,%xmm3
 4021 .L036enc1_loop_6:
 4022 .byte   102,15,56,220,217
 4023         decl    %ecx
 4024         movups  (%edx),%xmm1
 4025         leal    16(%edx),%edx
 4026         jnz     .L036enc1_loop_6
 4027 .byte   102,15,56,221,217
 4028         movl    48(%esp),%esp
 4029         movl    40(%esp),%edi
 4030         movups  %xmm3,(%edi)
 4031         pxor    %xmm0,%xmm0
 4032         pxor    %xmm1,%xmm1
 4033         pxor    %xmm2,%xmm2
 4034         pxor    %xmm3,%xmm3
 4035         pxor    %xmm4,%xmm4
 4036         pxor    %xmm5,%xmm5
 4037         pxor    %xmm6,%xmm6
 4038         pxor    %xmm7,%xmm7
 4039         popl    %edi
 4040         popl    %esi
 4041         popl    %ebx
 4042         popl    %ebp
 4043         ret
 4044 .size   aesni_ccm64_decrypt_blocks,.-.L_aesni_ccm64_decrypt_blocks_begin
 4045 .globl  aesni_ctr32_encrypt_blocks
 4046 .type   aesni_ctr32_encrypt_blocks,@function
 4047 .align  16
 4048 aesni_ctr32_encrypt_blocks:
 4049 .L_aesni_ctr32_encrypt_blocks_begin:
 4050         pushl   %ebp
 4051         pushl   %ebx
 4052         pushl   %esi
 4053         pushl   %edi
 4054         movl    20(%esp),%esi
 4055         movl    24(%esp),%edi
 4056         movl    28(%esp),%eax
 4057         movl    32(%esp),%edx
 4058         movl    36(%esp),%ebx
 4059         movl    %esp,%ebp
 4060         subl    $88,%esp
 4061         andl    $-16,%esp
 4062         movl    %ebp,80(%esp)
 4063         cmpl    $1,%eax
 4064         je      .L037ctr32_one_shortcut
 4065         movdqu  (%ebx),%xmm7
 4066         movl    $202182159,(%esp)
 4067         movl    $134810123,4(%esp)
 4068         movl    $67438087,8(%esp)
 4069         movl    $66051,12(%esp)
 4070         movl    $6,%ecx
 4071         xorl    %ebp,%ebp
 4072         movl    %ecx,16(%esp)
 4073         movl    %ecx,20(%esp)
 4074         movl    %ecx,24(%esp)
 4075         movl    %ebp,28(%esp)
 4076 .byte   102,15,58,22,251,3
 4077 .byte   102,15,58,34,253,3
 4078         movl    240(%edx),%ecx
 4079         bswap   %ebx
 4080         pxor    %xmm0,%xmm0
 4081         pxor    %xmm1,%xmm1
 4082         movdqa  (%esp),%xmm2
 4083 .byte   102,15,58,34,195,0
 4084         leal    3(%ebx),%ebp
 4085 .byte   102,15,58,34,205,0
 4086         incl    %ebx
 4087 .byte   102,15,58,34,195,1
 4088         incl    %ebp
 4089 .byte   102,15,58,34,205,1
 4090         incl    %ebx
 4091 .byte   102,15,58,34,195,2
 4092         incl    %ebp
 4093 .byte   102,15,58,34,205,2
 4094         movdqa  %xmm0,48(%esp)
 4095 .byte   102,15,56,0,194
 4096         movdqu  (%edx),%xmm6
 4097         movdqa  %xmm1,64(%esp)
 4098 .byte   102,15,56,0,202
 4099         pshufd  $192,%xmm0,%xmm2
 4100         pshufd  $128,%xmm0,%xmm3
 4101         cmpl    $6,%eax
 4102         jb      .L038ctr32_tail
 4103         pxor    %xmm6,%xmm7
 4104         shll    $4,%ecx
 4105         movl    $16,%ebx
 4106         movdqa  %xmm7,32(%esp)
 4107         movl    %edx,%ebp
 4108         subl    %ecx,%ebx
 4109         leal    32(%edx,%ecx,1),%edx
 4110         subl    $6,%eax
 4111         jmp     .L039ctr32_loop6
 4112 .align  16
 4113 .L039ctr32_loop6:
 4114         pshufd  $64,%xmm0,%xmm4
 4115         movdqa  32(%esp),%xmm0
 4116         pshufd  $192,%xmm1,%xmm5
 4117         pxor    %xmm0,%xmm2
 4118         pshufd  $128,%xmm1,%xmm6
 4119         pxor    %xmm0,%xmm3
 4120         pshufd  $64,%xmm1,%xmm7
 4121         movups  16(%ebp),%xmm1
 4122         pxor    %xmm0,%xmm4
 4123         pxor    %xmm0,%xmm5
 4124 .byte   102,15,56,220,209
 4125         pxor    %xmm0,%xmm6
 4126         pxor    %xmm0,%xmm7
 4127 .byte   102,15,56,220,217
 4128         movups  32(%ebp),%xmm0
 4129         movl    %ebx,%ecx
 4130 .byte   102,15,56,220,225
 4131 .byte   102,15,56,220,233
 4132 .byte   102,15,56,220,241
 4133 .byte   102,15,56,220,249
 4134         call    .L_aesni_encrypt6_enter
 4135         movups  (%esi),%xmm1
 4136         movups  16(%esi),%xmm0
 4137         xorps   %xmm1,%xmm2
 4138         movups  32(%esi),%xmm1
 4139         xorps   %xmm0,%xmm3
 4140         movups  %xmm2,(%edi)
 4141         movdqa  16(%esp),%xmm0
 4142         xorps   %xmm1,%xmm4
 4143         movdqa  64(%esp),%xmm1
 4144         movups  %xmm3,16(%edi)
 4145         movups  %xmm4,32(%edi)
 4146         paddd   %xmm0,%xmm1
 4147         paddd   48(%esp),%xmm0
 4148         movdqa  (%esp),%xmm2
 4149         movups  48(%esi),%xmm3
 4150         movups  64(%esi),%xmm4
 4151         xorps   %xmm3,%xmm5
 4152         movups  80(%esi),%xmm3
 4153         leal    96(%esi),%esi
 4154         movdqa  %xmm0,48(%esp)
 4155 .byte   102,15,56,0,194
 4156         xorps   %xmm4,%xmm6
 4157         movups  %xmm5,48(%edi)
 4158         xorps   %xmm3,%xmm7
 4159         movdqa  %xmm1,64(%esp)
 4160 .byte   102,15,56,0,202
 4161         movups  %xmm6,64(%edi)
 4162         pshufd  $192,%xmm0,%xmm2
 4163         movups  %xmm7,80(%edi)
 4164         leal    96(%edi),%edi
 4165         pshufd  $128,%xmm0,%xmm3
 4166         subl    $6,%eax
 4167         jnc     .L039ctr32_loop6
 4168         addl    $6,%eax
 4169         jz      .L040ctr32_ret
 4170         movdqu  (%ebp),%xmm7
 4171         movl    %ebp,%edx
 4172         pxor    32(%esp),%xmm7
 4173         movl    240(%ebp),%ecx
 4174 .L038ctr32_tail:
 4175         por     %xmm7,%xmm2
 4176         cmpl    $2,%eax
 4177         jb      .L041ctr32_one
 4178         pshufd  $64,%xmm0,%xmm4
 4179         por     %xmm7,%xmm3
 4180         je      .L042ctr32_two
 4181         pshufd  $192,%xmm1,%xmm5
 4182         por     %xmm7,%xmm4
 4183         cmpl    $4,%eax
 4184         jb      .L043ctr32_three
 4185         pshufd  $128,%xmm1,%xmm6
 4186         por     %xmm7,%xmm5
 4187         je      .L044ctr32_four
 4188         por     %xmm7,%xmm6
 4189         call    _aesni_encrypt6
 4190         movups  (%esi),%xmm1
 4191         movups  16(%esi),%xmm0
 4192         xorps   %xmm1,%xmm2
 4193         movups  32(%esi),%xmm1
 4194         xorps   %xmm0,%xmm3
 4195         movups  48(%esi),%xmm0
 4196         xorps   %xmm1,%xmm4
 4197         movups  64(%esi),%xmm1
 4198         xorps   %xmm0,%xmm5
 4199         movups  %xmm2,(%edi)
 4200         xorps   %xmm1,%xmm6
 4201         movups  %xmm3,16(%edi)
 4202         movups  %xmm4,32(%edi)
 4203         movups  %xmm5,48(%edi)
 4204         movups  %xmm6,64(%edi)
 4205         jmp     .L040ctr32_ret
 4206 .align  16
 4207 .L037ctr32_one_shortcut:
 4208         movups  (%ebx),%xmm2
 4209         movl    240(%edx),%ecx
 4210 .L041ctr32_one:
 4211         movups  (%edx),%xmm0
 4212         movups  16(%edx),%xmm1
 4213         leal    32(%edx),%edx
 4214         xorps   %xmm0,%xmm2
 4215 .L045enc1_loop_7:
 4216 .byte   102,15,56,220,209
 4217         decl    %ecx
 4218         movups  (%edx),%xmm1
 4219         leal    16(%edx),%edx
 4220         jnz     .L045enc1_loop_7
 4221 .byte   102,15,56,221,209
 4222         movups  (%esi),%xmm6
 4223         xorps   %xmm2,%xmm6
 4224         movups  %xmm6,(%edi)
 4225         jmp     .L040ctr32_ret
 4226 .align  16
 4227 .L042ctr32_two:
 4228         call    _aesni_encrypt2
 4229         movups  (%esi),%xmm5
 4230         movups  16(%esi),%xmm6
 4231         xorps   %xmm5,%xmm2
 4232         xorps   %xmm6,%xmm3
 4233         movups  %xmm2,(%edi)
 4234         movups  %xmm3,16(%edi)
 4235         jmp     .L040ctr32_ret
 4236 .align  16
 4237 .L043ctr32_three:
 4238         call    _aesni_encrypt3
 4239         movups  (%esi),%xmm5
 4240         movups  16(%esi),%xmm6
 4241         xorps   %xmm5,%xmm2
 4242         movups  32(%esi),%xmm7
 4243         xorps   %xmm6,%xmm3
 4244         movups  %xmm2,(%edi)
 4245         xorps   %xmm7,%xmm4
 4246         movups  %xmm3,16(%edi)
 4247         movups  %xmm4,32(%edi)
 4248         jmp     .L040ctr32_ret
 4249 .align  16
 4250 .L044ctr32_four:
 4251         call    _aesni_encrypt4
 4252         movups  (%esi),%xmm6
 4253         movups  16(%esi),%xmm7
 4254         movups  32(%esi),%xmm1
 4255         xorps   %xmm6,%xmm2
 4256         movups  48(%esi),%xmm0
 4257         xorps   %xmm7,%xmm3
 4258         movups  %xmm2,(%edi)
 4259         xorps   %xmm1,%xmm4
 4260         movups  %xmm3,16(%edi)
 4261         xorps   %xmm0,%xmm5
 4262         movups  %xmm4,32(%edi)
 4263         movups  %xmm5,48(%edi)
 4264 .L040ctr32_ret:
 4265         pxor    %xmm0,%xmm0
 4266         pxor    %xmm1,%xmm1
 4267         pxor    %xmm2,%xmm2
 4268         pxor    %xmm3,%xmm3
 4269         pxor    %xmm4,%xmm4
 4270         movdqa  %xmm0,32(%esp)
 4271         pxor    %xmm5,%xmm5
 4272         movdqa  %xmm0,48(%esp)
 4273         pxor    %xmm6,%xmm6
 4274         movdqa  %xmm0,64(%esp)
 4275         pxor    %xmm7,%xmm7
 4276         movl    80(%esp),%esp
 4277         popl    %edi
 4278         popl    %esi
 4279         popl    %ebx
 4280         popl    %ebp
 4281         ret
 4282 .size   aesni_ctr32_encrypt_blocks,.-.L_aesni_ctr32_encrypt_blocks_begin
 4283 .globl  aesni_xts_encrypt
 4284 .type   aesni_xts_encrypt,@function
 4285 .align  16
 4286 aesni_xts_encrypt:
 4287 .L_aesni_xts_encrypt_begin:
 4288         pushl   %ebp
 4289         pushl   %ebx
 4290         pushl   %esi
 4291         pushl   %edi
 4292         movl    36(%esp),%edx
 4293         movl    40(%esp),%esi
 4294         movl    240(%edx),%ecx
 4295         movups  (%esi),%xmm2
 4296         movups  (%edx),%xmm0
 4297         movups  16(%edx),%xmm1
 4298         leal    32(%edx),%edx
 4299         xorps   %xmm0,%xmm2
 4300 .L046enc1_loop_8:
 4301 .byte   102,15,56,220,209
 4302         decl    %ecx
 4303         movups  (%edx),%xmm1
 4304         leal    16(%edx),%edx
 4305         jnz     .L046enc1_loop_8
 4306 .byte   102,15,56,221,209
 4307         movl    20(%esp),%esi
 4308         movl    24(%esp),%edi
 4309         movl    28(%esp),%eax
 4310         movl    32(%esp),%edx
 4311         movl    %esp,%ebp
 4312         subl    $120,%esp
 4313         movl    240(%edx),%ecx
 4314         andl    $-16,%esp
 4315         movl    $135,96(%esp)
 4316         movl    $0,100(%esp)
 4317         movl    $1,104(%esp)
 4318         movl    $0,108(%esp)
 4319         movl    %eax,112(%esp)
 4320         movl    %ebp,116(%esp)
 4321         movdqa  %xmm2,%xmm1
 4322         pxor    %xmm0,%xmm0
 4323         movdqa  96(%esp),%xmm3
 4324         pcmpgtd %xmm1,%xmm0
 4325         andl    $-16,%eax
 4326         movl    %edx,%ebp
 4327         movl    %ecx,%ebx
 4328         subl    $96,%eax
 4329         jc      .L047xts_enc_short
 4330         shll    $4,%ecx
 4331         movl    $16,%ebx
 4332         subl    %ecx,%ebx
 4333         leal    32(%edx,%ecx,1),%edx
 4334         jmp     .L048xts_enc_loop6
 4335 .align  16
 4336 .L048xts_enc_loop6:
 4337         pshufd  $19,%xmm0,%xmm2
 4338         pxor    %xmm0,%xmm0
 4339         movdqa  %xmm1,(%esp)
 4340         paddq   %xmm1,%xmm1
 4341         pand    %xmm3,%xmm2
 4342         pcmpgtd %xmm1,%xmm0
 4343         pxor    %xmm2,%xmm1
 4344         pshufd  $19,%xmm0,%xmm2
 4345         pxor    %xmm0,%xmm0
 4346         movdqa  %xmm1,16(%esp)
 4347         paddq   %xmm1,%xmm1
 4348         pand    %xmm3,%xmm2
 4349         pcmpgtd %xmm1,%xmm0
 4350         pxor    %xmm2,%xmm1
 4351         pshufd  $19,%xmm0,%xmm2
 4352         pxor    %xmm0,%xmm0
 4353         movdqa  %xmm1,32(%esp)
 4354         paddq   %xmm1,%xmm1
 4355         pand    %xmm3,%xmm2
 4356         pcmpgtd %xmm1,%xmm0
 4357         pxor    %xmm2,%xmm1
 4358         pshufd  $19,%xmm0,%xmm2
 4359         pxor    %xmm0,%xmm0
 4360         movdqa  %xmm1,48(%esp)
 4361         paddq   %xmm1,%xmm1
 4362         pand    %xmm3,%xmm2
 4363         pcmpgtd %xmm1,%xmm0
 4364         pxor    %xmm2,%xmm1
 4365         pshufd  $19,%xmm0,%xmm7
 4366         movdqa  %xmm1,64(%esp)
 4367         paddq   %xmm1,%xmm1
 4368         movups  (%ebp),%xmm0
 4369         pand    %xmm3,%xmm7
 4370         movups  (%esi),%xmm2
 4371         pxor    %xmm1,%xmm7
 4372         movl    %ebx,%ecx
 4373         movdqu  16(%esi),%xmm3
 4374         xorps   %xmm0,%xmm2
 4375         movdqu  32(%esi),%xmm4
 4376         pxor    %xmm0,%xmm3
 4377         movdqu  48(%esi),%xmm5
 4378         pxor    %xmm0,%xmm4
 4379         movdqu  64(%esi),%xmm6
 4380         pxor    %xmm0,%xmm5
 4381         movdqu  80(%esi),%xmm1
 4382         pxor    %xmm0,%xmm6
 4383         leal    96(%esi),%esi
 4384         pxor    (%esp),%xmm2
 4385         movdqa  %xmm7,80(%esp)
 4386         pxor    %xmm1,%xmm7
 4387         movups  16(%ebp),%xmm1
 4388         pxor    16(%esp),%xmm3
 4389         pxor    32(%esp),%xmm4
 4390 .byte   102,15,56,220,209
 4391         pxor    48(%esp),%xmm5
 4392         pxor    64(%esp),%xmm6
 4393 .byte   102,15,56,220,217
 4394         pxor    %xmm0,%xmm7
 4395         movups  32(%ebp),%xmm0
 4396 .byte   102,15,56,220,225
 4397 .byte   102,15,56,220,233
 4398 .byte   102,15,56,220,241
 4399 .byte   102,15,56,220,249
 4400         call    .L_aesni_encrypt6_enter
 4401         movdqa  80(%esp),%xmm1
 4402         pxor    %xmm0,%xmm0
 4403         xorps   (%esp),%xmm2
 4404         pcmpgtd %xmm1,%xmm0
 4405         xorps   16(%esp),%xmm3
 4406         movups  %xmm2,(%edi)
 4407         xorps   32(%esp),%xmm4
 4408         movups  %xmm3,16(%edi)
 4409         xorps   48(%esp),%xmm5
 4410         movups  %xmm4,32(%edi)
 4411         xorps   64(%esp),%xmm6
 4412         movups  %xmm5,48(%edi)
 4413         xorps   %xmm1,%xmm7
 4414         movups  %xmm6,64(%edi)
 4415         pshufd  $19,%xmm0,%xmm2
 4416         movups  %xmm7,80(%edi)
 4417         leal    96(%edi),%edi
 4418         movdqa  96(%esp),%xmm3
 4419         pxor    %xmm0,%xmm0
 4420         paddq   %xmm1,%xmm1
 4421         pand    %xmm3,%xmm2
 4422         pcmpgtd %xmm1,%xmm0
 4423         pxor    %xmm2,%xmm1
 4424         subl    $96,%eax
 4425         jnc     .L048xts_enc_loop6
 4426         movl    240(%ebp),%ecx
 4427         movl    %ebp,%edx
 4428         movl    %ecx,%ebx
 4429 .L047xts_enc_short:
 4430         addl    $96,%eax
 4431         jz      .L049xts_enc_done6x
 4432         movdqa  %xmm1,%xmm5
 4433         cmpl    $32,%eax
 4434         jb      .L050xts_enc_one
 4435         pshufd  $19,%xmm0,%xmm2
 4436         pxor    %xmm0,%xmm0
 4437         paddq   %xmm1,%xmm1
 4438         pand    %xmm3,%xmm2
 4439         pcmpgtd %xmm1,%xmm0
 4440         pxor    %xmm2,%xmm1
 4441         je      .L051xts_enc_two
 4442         pshufd  $19,%xmm0,%xmm2
 4443         pxor    %xmm0,%xmm0
 4444         movdqa  %xmm1,%xmm6
 4445         paddq   %xmm1,%xmm1
 4446         pand    %xmm3,%xmm2
 4447         pcmpgtd %xmm1,%xmm0
 4448         pxor    %xmm2,%xmm1
 4449         cmpl    $64,%eax
 4450         jb      .L052xts_enc_three
 4451         pshufd  $19,%xmm0,%xmm2
 4452         pxor    %xmm0,%xmm0
 4453         movdqa  %xmm1,%xmm7
 4454         paddq   %xmm1,%xmm1
 4455         pand    %xmm3,%xmm2
 4456         pcmpgtd %xmm1,%xmm0
 4457         pxor    %xmm2,%xmm1
 4458         movdqa  %xmm5,(%esp)
 4459         movdqa  %xmm6,16(%esp)
 4460         je      .L053xts_enc_four
 4461         movdqa  %xmm7,32(%esp)
 4462         pshufd  $19,%xmm0,%xmm7
 4463         movdqa  %xmm1,48(%esp)
 4464         paddq   %xmm1,%xmm1
 4465         pand    %xmm3,%xmm7
 4466         pxor    %xmm1,%xmm7
 4467         movdqu  (%esi),%xmm2
 4468         movdqu  16(%esi),%xmm3
 4469         movdqu  32(%esi),%xmm4
 4470         pxor    (%esp),%xmm2
 4471         movdqu  48(%esi),%xmm5
 4472         pxor    16(%esp),%xmm3
 4473         movdqu  64(%esi),%xmm6
 4474         pxor    32(%esp),%xmm4
 4475         leal    80(%esi),%esi
 4476         pxor    48(%esp),%xmm5
 4477         movdqa  %xmm7,64(%esp)
 4478         pxor    %xmm7,%xmm6
 4479         call    _aesni_encrypt6
 4480         movaps  64(%esp),%xmm1
 4481         xorps   (%esp),%xmm2
 4482         xorps   16(%esp),%xmm3
 4483         xorps   32(%esp),%xmm4
 4484         movups  %xmm2,(%edi)
 4485         xorps   48(%esp),%xmm5
 4486         movups  %xmm3,16(%edi)
 4487         xorps   %xmm1,%xmm6
 4488         movups  %xmm4,32(%edi)
 4489         movups  %xmm5,48(%edi)
 4490         movups  %xmm6,64(%edi)
 4491         leal    80(%edi),%edi
 4492         jmp     .L054xts_enc_done
 4493 .align  16
 4494 .L050xts_enc_one:
 4495         movups  (%esi),%xmm2
 4496         leal    16(%esi),%esi
 4497         xorps   %xmm5,%xmm2
 4498         movups  (%edx),%xmm0
 4499         movups  16(%edx),%xmm1
 4500         leal    32(%edx),%edx
 4501         xorps   %xmm0,%xmm2
 4502 .L055enc1_loop_9:
 4503 .byte   102,15,56,220,209
 4504         decl    %ecx
 4505         movups  (%edx),%xmm1
 4506         leal    16(%edx),%edx
 4507         jnz     .L055enc1_loop_9
 4508 .byte   102,15,56,221,209
 4509         xorps   %xmm5,%xmm2
 4510         movups  %xmm2,(%edi)
 4511         leal    16(%edi),%edi
 4512         movdqa  %xmm5,%xmm1
 4513         jmp     .L054xts_enc_done
 4514 .align  16
 4515 .L051xts_enc_two:
 4516         movaps  %xmm1,%xmm6
 4517         movups  (%esi),%xmm2
 4518         movups  16(%esi),%xmm3
 4519         leal    32(%esi),%esi
 4520         xorps   %xmm5,%xmm2
 4521         xorps   %xmm6,%xmm3
 4522         call    _aesni_encrypt2
 4523         xorps   %xmm5,%xmm2
 4524         xorps   %xmm6,%xmm3
 4525         movups  %xmm2,(%edi)
 4526         movups  %xmm3,16(%edi)
 4527         leal    32(%edi),%edi
 4528         movdqa  %xmm6,%xmm1
 4529         jmp     .L054xts_enc_done
 4530 .align  16
 4531 .L052xts_enc_three:
 4532         movaps  %xmm1,%xmm7
 4533         movups  (%esi),%xmm2
 4534         movups  16(%esi),%xmm3
 4535         movups  32(%esi),%xmm4
 4536         leal    48(%esi),%esi
 4537         xorps   %xmm5,%xmm2
 4538         xorps   %xmm6,%xmm3
 4539         xorps   %xmm7,%xmm4
 4540         call    _aesni_encrypt3
 4541         xorps   %xmm5,%xmm2
 4542         xorps   %xmm6,%xmm3
 4543         xorps   %xmm7,%xmm4
 4544         movups  %xmm2,(%edi)
 4545         movups  %xmm3,16(%edi)
 4546         movups  %xmm4,32(%edi)
 4547         leal    48(%edi),%edi
 4548         movdqa  %xmm7,%xmm1
 4549         jmp     .L054xts_enc_done
 4550 .align  16
 4551 .L053xts_enc_four:
 4552         movaps  %xmm1,%xmm6
 4553         movups  (%esi),%xmm2
 4554         movups  16(%esi),%xmm3
 4555         movups  32(%esi),%xmm4
 4556         xorps   (%esp),%xmm2
 4557         movups  48(%esi),%xmm5
 4558         leal    64(%esi),%esi
 4559         xorps   16(%esp),%xmm3
 4560         xorps   %xmm7,%xmm4
 4561         xorps   %xmm6,%xmm5
 4562         call    _aesni_encrypt4
 4563         xorps   (%esp),%xmm2
 4564         xorps   16(%esp),%xmm3
 4565         xorps   %xmm7,%xmm4
 4566         movups  %xmm2,(%edi)
 4567         xorps   %xmm6,%xmm5
 4568         movups  %xmm3,16(%edi)
 4569         movups  %xmm4,32(%edi)
 4570         movups  %xmm5,48(%edi)
 4571         leal    64(%edi),%edi
 4572         movdqa  %xmm6,%xmm1
 4573         jmp     .L054xts_enc_done
 4574 .align  16
 4575 .L049xts_enc_done6x:
 4576         movl    112(%esp),%eax
 4577         andl    $15,%eax
 4578         jz      .L056xts_enc_ret
 4579         movdqa  %xmm1,%xmm5
 4580         movl    %eax,112(%esp)
 4581         jmp     .L057xts_enc_steal
 4582 .align  16
 4583 .L054xts_enc_done:
 4584         movl    112(%esp),%eax
 4585         pxor    %xmm0,%xmm0
 4586         andl    $15,%eax
 4587         jz      .L056xts_enc_ret
 4588         pcmpgtd %xmm1,%xmm0
 4589         movl    %eax,112(%esp)
 4590         pshufd  $19,%xmm0,%xmm5
 4591         paddq   %xmm1,%xmm1
 4592         pand    96(%esp),%xmm5
 4593         pxor    %xmm1,%xmm5
 4594 .L057xts_enc_steal:
 4595         movzbl  (%esi),%ecx
 4596         movzbl  -16(%edi),%edx
 4597         leal    1(%esi),%esi
 4598         movb    %cl,-16(%edi)
 4599         movb    %dl,(%edi)
 4600         leal    1(%edi),%edi
 4601         subl    $1,%eax
 4602         jnz     .L057xts_enc_steal
 4603         subl    112(%esp),%edi
 4604         movl    %ebp,%edx
 4605         movl    %ebx,%ecx
 4606         movups  -16(%edi),%xmm2
 4607         xorps   %xmm5,%xmm2
 4608         movups  (%edx),%xmm0
 4609         movups  16(%edx),%xmm1
 4610         leal    32(%edx),%edx
 4611         xorps   %xmm0,%xmm2
 4612 .L058enc1_loop_10:
 4613 .byte   102,15,56,220,209
 4614         decl    %ecx
 4615         movups  (%edx),%xmm1
 4616         leal    16(%edx),%edx
 4617         jnz     .L058enc1_loop_10
 4618 .byte   102,15,56,221,209
 4619         xorps   %xmm5,%xmm2
 4620         movups  %xmm2,-16(%edi)
 4621 .L056xts_enc_ret:
 4622         pxor    %xmm0,%xmm0
 4623         pxor    %xmm1,%xmm1
 4624         pxor    %xmm2,%xmm2
 4625         movdqa  %xmm0,(%esp)
 4626         pxor    %xmm3,%xmm3
 4627         movdqa  %xmm0,16(%esp)
 4628         pxor    %xmm4,%xmm4
 4629         movdqa  %xmm0,32(%esp)
 4630         pxor    %xmm5,%xmm5
 4631         movdqa  %xmm0,48(%esp)
 4632         pxor    %xmm6,%xmm6
 4633         movdqa  %xmm0,64(%esp)
 4634         pxor    %xmm7,%xmm7
 4635         movdqa  %xmm0,80(%esp)
 4636         movl    116(%esp),%esp
 4637         popl    %edi
 4638         popl    %esi
 4639         popl    %ebx
 4640         popl    %ebp
 4641         ret
 4642 .size   aesni_xts_encrypt,.-.L_aesni_xts_encrypt_begin
 4643 .globl  aesni_xts_decrypt
 4644 .type   aesni_xts_decrypt,@function
 4645 .align  16
 4646 aesni_xts_decrypt:
 4647 .L_aesni_xts_decrypt_begin:
 4648         pushl   %ebp
 4649         pushl   %ebx
 4650         pushl   %esi
 4651         pushl   %edi
 4652         movl    36(%esp),%edx
 4653         movl    40(%esp),%esi
 4654         movl    240(%edx),%ecx
 4655         movups  (%esi),%xmm2
 4656         movups  (%edx),%xmm0
 4657         movups  16(%edx),%xmm1
 4658         leal    32(%edx),%edx
 4659         xorps   %xmm0,%xmm2
 4660 .L059enc1_loop_11:
 4661 .byte   102,15,56,220,209
 4662         decl    %ecx
 4663         movups  (%edx),%xmm1
 4664         leal    16(%edx),%edx
 4665         jnz     .L059enc1_loop_11
 4666 .byte   102,15,56,221,209
 4667         movl    20(%esp),%esi
 4668         movl    24(%esp),%edi
 4669         movl    28(%esp),%eax
 4670         movl    32(%esp),%edx
 4671         movl    %esp,%ebp
 4672         subl    $120,%esp
 4673         andl    $-16,%esp
 4674         xorl    %ebx,%ebx
 4675         testl   $15,%eax
 4676         setnz   %bl
 4677         shll    $4,%ebx
 4678         subl    %ebx,%eax
 4679         movl    $135,96(%esp)
 4680         movl    $0,100(%esp)
 4681         movl    $1,104(%esp)
 4682         movl    $0,108(%esp)
 4683         movl    %eax,112(%esp)
 4684         movl    %ebp,116(%esp)
 4685         movl    240(%edx),%ecx
 4686         movl    %edx,%ebp
 4687         movl    %ecx,%ebx
 4688         movdqa  %xmm2,%xmm1
 4689         pxor    %xmm0,%xmm0
 4690         movdqa  96(%esp),%xmm3
 4691         pcmpgtd %xmm1,%xmm0
 4692         andl    $-16,%eax
 4693         subl    $96,%eax
 4694         jc      .L060xts_dec_short
 4695         shll    $4,%ecx
 4696         movl    $16,%ebx
 4697         subl    %ecx,%ebx
 4698         leal    32(%edx,%ecx,1),%edx
 4699         jmp     .L061xts_dec_loop6
 4700 .align  16
 4701 .L061xts_dec_loop6:
 4702         pshufd  $19,%xmm0,%xmm2
 4703         pxor    %xmm0,%xmm0
 4704         movdqa  %xmm1,(%esp)
 4705         paddq   %xmm1,%xmm1
 4706         pand    %xmm3,%xmm2
 4707         pcmpgtd %xmm1,%xmm0
 4708         pxor    %xmm2,%xmm1
 4709         pshufd  $19,%xmm0,%xmm2
 4710         pxor    %xmm0,%xmm0
 4711         movdqa  %xmm1,16(%esp)
 4712         paddq   %xmm1,%xmm1
 4713         pand    %xmm3,%xmm2
 4714         pcmpgtd %xmm1,%xmm0
 4715         pxor    %xmm2,%xmm1
 4716         pshufd  $19,%xmm0,%xmm2
 4717         pxor    %xmm0,%xmm0
 4718         movdqa  %xmm1,32(%esp)
 4719         paddq   %xmm1,%xmm1
 4720         pand    %xmm3,%xmm2
 4721         pcmpgtd %xmm1,%xmm0
 4722         pxor    %xmm2,%xmm1
 4723         pshufd  $19,%xmm0,%xmm2
 4724         pxor    %xmm0,%xmm0
 4725         movdqa  %xmm1,48(%esp)
 4726         paddq   %xmm1,%xmm1
 4727         pand    %xmm3,%xmm2
 4728         pcmpgtd %xmm1,%xmm0
 4729         pxor    %xmm2,%xmm1
 4730         pshufd  $19,%xmm0,%xmm7
 4731         movdqa  %xmm1,64(%esp)
 4732         paddq   %xmm1,%xmm1
 4733         movups  (%ebp),%xmm0
 4734         pand    %xmm3,%xmm7
 4735         movups  (%esi),%xmm2
 4736         pxor    %xmm1,%xmm7
 4737         movl    %ebx,%ecx
 4738         movdqu  16(%esi),%xmm3
 4739         xorps   %xmm0,%xmm2
 4740         movdqu  32(%esi),%xmm4
 4741         pxor    %xmm0,%xmm3
 4742         movdqu  48(%esi),%xmm5
 4743         pxor    %xmm0,%xmm4
 4744         movdqu  64(%esi),%xmm6
 4745         pxor    %xmm0,%xmm5
 4746         movdqu  80(%esi),%xmm1
 4747         pxor    %xmm0,%xmm6
 4748         leal    96(%esi),%esi
 4749         pxor    (%esp),%xmm2
 4750         movdqa  %xmm7,80(%esp)
 4751         pxor    %xmm1,%xmm7
 4752         movups  16(%ebp),%xmm1
 4753         pxor    16(%esp),%xmm3
 4754         pxor    32(%esp),%xmm4
 4755 .byte   102,15,56,222,209
 4756         pxor    48(%esp),%xmm5
 4757         pxor    64(%esp),%xmm6
 4758 .byte   102,15,56,222,217
 4759         pxor    %xmm0,%xmm7
 4760         movups  32(%ebp),%xmm0
 4761 .byte   102,15,56,222,225
 4762 .byte   102,15,56,222,233
 4763 .byte   102,15,56,222,241
 4764 .byte   102,15,56,222,249
 4765         call    .L_aesni_decrypt6_enter
 4766         movdqa  80(%esp),%xmm1
 4767         pxor    %xmm0,%xmm0
 4768         xorps   (%esp),%xmm2
 4769         pcmpgtd %xmm1,%xmm0
 4770         xorps   16(%esp),%xmm3
 4771         movups  %xmm2,(%edi)
 4772         xorps   32(%esp),%xmm4
 4773         movups  %xmm3,16(%edi)
 4774         xorps   48(%esp),%xmm5
 4775         movups  %xmm4,32(%edi)
 4776         xorps   64(%esp),%xmm6
 4777         movups  %xmm5,48(%edi)
 4778         xorps   %xmm1,%xmm7
 4779         movups  %xmm6,64(%edi)
 4780         pshufd  $19,%xmm0,%xmm2
 4781         movups  %xmm7,80(%edi)
 4782         leal    96(%edi),%edi
 4783         movdqa  96(%esp),%xmm3
 4784         pxor    %xmm0,%xmm0
 4785         paddq   %xmm1,%xmm1
 4786         pand    %xmm3,%xmm2
 4787         pcmpgtd %xmm1,%xmm0
 4788         pxor    %xmm2,%xmm1
 4789         subl    $96,%eax
 4790         jnc     .L061xts_dec_loop6
 4791         movl    240(%ebp),%ecx
 4792         movl    %ebp,%edx
 4793         movl    %ecx,%ebx
 4794 .L060xts_dec_short:
 4795         addl    $96,%eax
 4796         jz      .L062xts_dec_done6x
 4797         movdqa  %xmm1,%xmm5
 4798         cmpl    $32,%eax
 4799         jb      .L063xts_dec_one
 4800         pshufd  $19,%xmm0,%xmm2
 4801         pxor    %xmm0,%xmm0
 4802         paddq   %xmm1,%xmm1
 4803         pand    %xmm3,%xmm2
 4804         pcmpgtd %xmm1,%xmm0
 4805         pxor    %xmm2,%xmm1
 4806         je      .L064xts_dec_two
 4807         pshufd  $19,%xmm0,%xmm2
 4808         pxor    %xmm0,%xmm0
 4809         movdqa  %xmm1,%xmm6
 4810         paddq   %xmm1,%xmm1
 4811         pand    %xmm3,%xmm2
 4812         pcmpgtd %xmm1,%xmm0
 4813         pxor    %xmm2,%xmm1
 4814         cmpl    $64,%eax
 4815         jb      .L065xts_dec_three
 4816         pshufd  $19,%xmm0,%xmm2
 4817         pxor    %xmm0,%xmm0
 4818         movdqa  %xmm1,%xmm7
 4819         paddq   %xmm1,%xmm1
 4820         pand    %xmm3,%xmm2
 4821         pcmpgtd %xmm1,%xmm0
 4822         pxor    %xmm2,%xmm1
 4823         movdqa  %xmm5,(%esp)
 4824         movdqa  %xmm6,16(%esp)
 4825         je      .L066xts_dec_four
 4826         movdqa  %xmm7,32(%esp)
 4827         pshufd  $19,%xmm0,%xmm7
 4828         movdqa  %xmm1,48(%esp)
 4829         paddq   %xmm1,%xmm1
 4830         pand    %xmm3,%xmm7
 4831         pxor    %xmm1,%xmm7
 4832         movdqu  (%esi),%xmm2
 4833         movdqu  16(%esi),%xmm3
 4834         movdqu  32(%esi),%xmm4
 4835         pxor    (%esp),%xmm2
 4836         movdqu  48(%esi),%xmm5
 4837         pxor    16(%esp),%xmm3
 4838         movdqu  64(%esi),%xmm6
 4839         pxor    32(%esp),%xmm4
 4840         leal    80(%esi),%esi
 4841         pxor    48(%esp),%xmm5
 4842         movdqa  %xmm7,64(%esp)
 4843         pxor    %xmm7,%xmm6
 4844         call    _aesni_decrypt6
 4845         movaps  64(%esp),%xmm1
 4846         xorps   (%esp),%xmm2
 4847         xorps   16(%esp),%xmm3
 4848         xorps   32(%esp),%xmm4
 4849         movups  %xmm2,(%edi)
 4850         xorps   48(%esp),%xmm5
 4851         movups  %xmm3,16(%edi)
 4852         xorps   %xmm1,%xmm6
 4853         movups  %xmm4,32(%edi)
 4854         movups  %xmm5,48(%edi)
 4855         movups  %xmm6,64(%edi)
 4856         leal    80(%edi),%edi
 4857         jmp     .L067xts_dec_done
 4858 .align  16
 4859 .L063xts_dec_one:
 4860         movups  (%esi),%xmm2
 4861         leal    16(%esi),%esi
 4862         xorps   %xmm5,%xmm2
 4863         movups  (%edx),%xmm0
 4864         movups  16(%edx),%xmm1
 4865         leal    32(%edx),%edx
 4866         xorps   %xmm0,%xmm2
 4867 .L068dec1_loop_12:
 4868 .byte   102,15,56,222,209
 4869         decl    %ecx
 4870         movups  (%edx),%xmm1
 4871         leal    16(%edx),%edx
 4872         jnz     .L068dec1_loop_12
 4873 .byte   102,15,56,223,209
 4874         xorps   %xmm5,%xmm2
 4875         movups  %xmm2,(%edi)
 4876         leal    16(%edi),%edi
 4877         movdqa  %xmm5,%xmm1
 4878         jmp     .L067xts_dec_done
 4879 .align  16
 4880 .L064xts_dec_two:
 4881         movaps  %xmm1,%xmm6
 4882         movups  (%esi),%xmm2
 4883         movups  16(%esi),%xmm3
 4884         leal    32(%esi),%esi
 4885         xorps   %xmm5,%xmm2
 4886         xorps   %xmm6,%xmm3
 4887         call    _aesni_decrypt2
 4888         xorps   %xmm5,%xmm2
 4889         xorps   %xmm6,%xmm3
 4890         movups  %xmm2,(%edi)
 4891         movups  %xmm3,16(%edi)
 4892         leal    32(%edi),%edi
 4893         movdqa  %xmm6,%xmm1
 4894         jmp     .L067xts_dec_done
 4895 .align  16
 4896 .L065xts_dec_three:
 4897         movaps  %xmm1,%xmm7
 4898         movups  (%esi),%xmm2
 4899         movups  16(%esi),%xmm3
 4900         movups  32(%esi),%xmm4
 4901         leal    48(%esi),%esi
 4902         xorps   %xmm5,%xmm2
 4903         xorps   %xmm6,%xmm3
 4904         xorps   %xmm7,%xmm4
 4905         call    _aesni_decrypt3
 4906         xorps   %xmm5,%xmm2
 4907         xorps   %xmm6,%xmm3
 4908         xorps   %xmm7,%xmm4
 4909         movups  %xmm2,(%edi)
 4910         movups  %xmm3,16(%edi)
 4911         movups  %xmm4,32(%edi)
 4912         leal    48(%edi),%edi
 4913         movdqa  %xmm7,%xmm1
 4914         jmp     .L067xts_dec_done
 4915 .align  16
 4916 .L066xts_dec_four:
 4917         movaps  %xmm1,%xmm6
 4918         movups  (%esi),%xmm2
 4919         movups  16(%esi),%xmm3
 4920         movups  32(%esi),%xmm4
 4921         xorps   (%esp),%xmm2
 4922         movups  48(%esi),%xmm5
 4923         leal    64(%esi),%esi
 4924         xorps   16(%esp),%xmm3
 4925         xorps   %xmm7,%xmm4
 4926         xorps   %xmm6,%xmm5
 4927         call    _aesni_decrypt4
 4928         xorps   (%esp),%xmm2
 4929         xorps   16(%esp),%xmm3
 4930         xorps   %xmm7,%xmm4
 4931         movups  %xmm2,(%edi)
 4932         xorps   %xmm6,%xmm5
 4933         movups  %xmm3,16(%edi)
 4934         movups  %xmm4,32(%edi)
 4935         movups  %xmm5,48(%edi)
 4936         leal    64(%edi),%edi
 4937         movdqa  %xmm6,%xmm1
 4938         jmp     .L067xts_dec_done
 4939 .align  16
 4940 .L062xts_dec_done6x:
 4941         movl    112(%esp),%eax
 4942         andl    $15,%eax
 4943         jz      .L069xts_dec_ret
 4944         movl    %eax,112(%esp)
 4945         jmp     .L070xts_dec_only_one_more
 4946 .align  16
 4947 .L067xts_dec_done:
 4948         movl    112(%esp),%eax
 4949         pxor    %xmm0,%xmm0
 4950         andl    $15,%eax
 4951         jz      .L069xts_dec_ret
 4952         pcmpgtd %xmm1,%xmm0
 4953         movl    %eax,112(%esp)
 4954         pshufd  $19,%xmm0,%xmm2
 4955         pxor    %xmm0,%xmm0
 4956         movdqa  96(%esp),%xmm3
 4957         paddq   %xmm1,%xmm1
 4958         pand    %xmm3,%xmm2
 4959         pcmpgtd %xmm1,%xmm0
 4960         pxor    %xmm2,%xmm1
 4961 .L070xts_dec_only_one_more:
 4962         pshufd  $19,%xmm0,%xmm5
 4963         movdqa  %xmm1,%xmm6
 4964         paddq   %xmm1,%xmm1
 4965         pand    %xmm3,%xmm5
 4966         pxor    %xmm1,%xmm5
 4967         movl    %ebp,%edx
 4968         movl    %ebx,%ecx
 4969         movups  (%esi),%xmm2
 4970         xorps   %xmm5,%xmm2
 4971         movups  (%edx),%xmm0
 4972         movups  16(%edx),%xmm1
 4973         leal    32(%edx),%edx
 4974         xorps   %xmm0,%xmm2
 4975 .L071dec1_loop_13:
 4976 .byte   102,15,56,222,209
 4977         decl    %ecx
 4978         movups  (%edx),%xmm1
 4979         leal    16(%edx),%edx
 4980         jnz     .L071dec1_loop_13
 4981 .byte   102,15,56,223,209
 4982         xorps   %xmm5,%xmm2
 4983         movups  %xmm2,(%edi)
 4984 .L072xts_dec_steal:
 4985         movzbl  16(%esi),%ecx
 4986         movzbl  (%edi),%edx
 4987         leal    1(%esi),%esi
 4988         movb    %cl,(%edi)
 4989         movb    %dl,16(%edi)
 4990         leal    1(%edi),%edi
 4991         subl    $1,%eax
 4992         jnz     .L072xts_dec_steal
 4993         subl    112(%esp),%edi
 4994         movl    %ebp,%edx
 4995         movl    %ebx,%ecx
 4996         movups  (%edi),%xmm2
 4997         xorps   %xmm6,%xmm2
 4998         movups  (%edx),%xmm0
 4999         movups  16(%edx),%xmm1
 5000         leal    32(%edx),%edx
 5001         xorps   %xmm0,%xmm2
 5002 .L073dec1_loop_14:
 5003 .byte   102,15,56,222,209
 5004         decl    %ecx
 5005         movups  (%edx),%xmm1
 5006         leal    16(%edx),%edx
 5007         jnz     .L073dec1_loop_14
 5008 .byte   102,15,56,223,209
 5009         xorps   %xmm6,%xmm2
 5010         movups  %xmm2,(%edi)
 5011 .L069xts_dec_ret:
 5012         pxor    %xmm0,%xmm0
 5013         pxor    %xmm1,%xmm1
 5014         pxor    %xmm2,%xmm2
 5015         movdqa  %xmm0,(%esp)
 5016         pxor    %xmm3,%xmm3
 5017         movdqa  %xmm0,16(%esp)
 5018         pxor    %xmm4,%xmm4
 5019         movdqa  %xmm0,32(%esp)
 5020         pxor    %xmm5,%xmm5
 5021         movdqa  %xmm0,48(%esp)
 5022         pxor    %xmm6,%xmm6
 5023         movdqa  %xmm0,64(%esp)
 5024         pxor    %xmm7,%xmm7
 5025         movdqa  %xmm0,80(%esp)
 5026         movl    116(%esp),%esp
 5027         popl    %edi
 5028         popl    %esi
 5029         popl    %ebx
 5030         popl    %ebp
 5031         ret
 5032 .size   aesni_xts_decrypt,.-.L_aesni_xts_decrypt_begin
 5033 .globl  aesni_ocb_encrypt
 5034 .type   aesni_ocb_encrypt,@function
 5035 .align  16
 5036 aesni_ocb_encrypt:
 5037 .L_aesni_ocb_encrypt_begin:
 5038         pushl   %ebp
 5039         pushl   %ebx
 5040         pushl   %esi
 5041         pushl   %edi
 5042         movl    40(%esp),%ecx
 5043         movl    48(%esp),%ebx
 5044         movl    20(%esp),%esi
 5045         movl    24(%esp),%edi
 5046         movl    28(%esp),%eax
 5047         movl    32(%esp),%edx
 5048         movdqu  (%ecx),%xmm0
 5049         movl    36(%esp),%ebp
 5050         movdqu  (%ebx),%xmm1
 5051         movl    44(%esp),%ebx
 5052         movl    %esp,%ecx
 5053         subl    $132,%esp
 5054         andl    $-16,%esp
 5055         subl    %esi,%edi
 5056         shll    $4,%eax
 5057         leal    -96(%esi,%eax,1),%eax
 5058         movl    %edi,120(%esp)
 5059         movl    %eax,124(%esp)
 5060         movl    %ecx,128(%esp)
 5061         movl    240(%edx),%ecx
 5062         testl   $1,%ebp
 5063         jnz     .L074odd
 5064         bsfl    %ebp,%eax
 5065         addl    $1,%ebp
 5066         shll    $4,%eax
 5067         movdqu  (%ebx,%eax,1),%xmm7
 5068         movl    %edx,%eax
 5069         movdqu  (%esi),%xmm2
 5070         leal    16(%esi),%esi
 5071         pxor    %xmm0,%xmm7
 5072         pxor    %xmm2,%xmm1
 5073         pxor    %xmm7,%xmm2
 5074         movdqa  %xmm1,%xmm6
 5075         movups  (%edx),%xmm0
 5076         movups  16(%edx),%xmm1
 5077         leal    32(%edx),%edx
 5078         xorps   %xmm0,%xmm2
 5079 .L075enc1_loop_15:
 5080 .byte   102,15,56,220,209
 5081         decl    %ecx
 5082         movups  (%edx),%xmm1
 5083         leal    16(%edx),%edx
 5084         jnz     .L075enc1_loop_15
 5085 .byte   102,15,56,221,209
 5086         xorps   %xmm7,%xmm2
 5087         movdqa  %xmm7,%xmm0
 5088         movdqa  %xmm6,%xmm1
 5089         movups  %xmm2,-16(%edi,%esi,1)
 5090         movl    240(%eax),%ecx
 5091         movl    %eax,%edx
 5092         movl    124(%esp),%eax
 5093 .L074odd:
 5094         shll    $4,%ecx
 5095         movl    $16,%edi
 5096         subl    %ecx,%edi
 5097         movl    %edx,112(%esp)
 5098         leal    32(%edx,%ecx,1),%edx
 5099         movl    %edi,116(%esp)
 5100         cmpl    %eax,%esi
 5101         ja      .L076short
 5102         jmp     .L077grandloop
 5103 .align  32
 5104 .L077grandloop:
 5105         leal    1(%ebp),%ecx
 5106         leal    3(%ebp),%eax
 5107         leal    5(%ebp),%edi
 5108         addl    $6,%ebp
 5109         bsfl    %ecx,%ecx
 5110         bsfl    %eax,%eax
 5111         bsfl    %edi,%edi
 5112         shll    $4,%ecx
 5113         shll    $4,%eax
 5114         shll    $4,%edi
 5115         movdqu  (%ebx),%xmm2
 5116         movdqu  (%ebx,%ecx,1),%xmm3
 5117         movl    116(%esp),%ecx
 5118         movdqa  %xmm2,%xmm4
 5119         movdqu  (%ebx,%eax,1),%xmm5
 5120         movdqa  %xmm2,%xmm6
 5121         movdqu  (%ebx,%edi,1),%xmm7
 5122         pxor    %xmm0,%xmm2
 5123         pxor    %xmm2,%xmm3
 5124         movdqa  %xmm2,(%esp)
 5125         pxor    %xmm3,%xmm4
 5126         movdqa  %xmm3,16(%esp)
 5127         pxor    %xmm4,%xmm5
 5128         movdqa  %xmm4,32(%esp)
 5129         pxor    %xmm5,%xmm6
 5130         movdqa  %xmm5,48(%esp)
 5131         pxor    %xmm6,%xmm7
 5132         movdqa  %xmm6,64(%esp)
 5133         movdqa  %xmm7,80(%esp)
 5134         movups  -48(%edx,%ecx,1),%xmm0
 5135         movdqu  (%esi),%xmm2
 5136         movdqu  16(%esi),%xmm3
 5137         movdqu  32(%esi),%xmm4
 5138         movdqu  48(%esi),%xmm5
 5139         movdqu  64(%esi),%xmm6
 5140         movdqu  80(%esi),%xmm7
 5141         leal    96(%esi),%esi
 5142         pxor    %xmm2,%xmm1
 5143         pxor    %xmm0,%xmm2
 5144         pxor    %xmm3,%xmm1
 5145         pxor    %xmm0,%xmm3
 5146         pxor    %xmm4,%xmm1
 5147         pxor    %xmm0,%xmm4
 5148         pxor    %xmm5,%xmm1
 5149         pxor    %xmm0,%xmm5
 5150         pxor    %xmm6,%xmm1
 5151         pxor    %xmm0,%xmm6
 5152         pxor    %xmm7,%xmm1
 5153         pxor    %xmm0,%xmm7
 5154         movdqa  %xmm1,96(%esp)
 5155         movups  -32(%edx,%ecx,1),%xmm1
 5156         pxor    (%esp),%xmm2
 5157         pxor    16(%esp),%xmm3
 5158         pxor    32(%esp),%xmm4
 5159         pxor    48(%esp),%xmm5
 5160         pxor    64(%esp),%xmm6
 5161         pxor    80(%esp),%xmm7
 5162         movups  -16(%edx,%ecx,1),%xmm0
 5163 .byte   102,15,56,220,209
 5164 .byte   102,15,56,220,217
 5165 .byte   102,15,56,220,225
 5166 .byte   102,15,56,220,233
 5167 .byte   102,15,56,220,241
 5168 .byte   102,15,56,220,249
 5169         movl    120(%esp),%edi
 5170         movl    124(%esp),%eax
 5171         call    .L_aesni_encrypt6_enter
 5172         movdqa  80(%esp),%xmm0
 5173         pxor    (%esp),%xmm2
 5174         pxor    16(%esp),%xmm3
 5175         pxor    32(%esp),%xmm4
 5176         pxor    48(%esp),%xmm5
 5177         pxor    64(%esp),%xmm6
 5178         pxor    %xmm0,%xmm7
 5179         movdqa  96(%esp),%xmm1
 5180         movdqu  %xmm2,-96(%edi,%esi,1)
 5181         movdqu  %xmm3,-80(%edi,%esi,1)
 5182         movdqu  %xmm4,-64(%edi,%esi,1)
 5183         movdqu  %xmm5,-48(%edi,%esi,1)
 5184         movdqu  %xmm6,-32(%edi,%esi,1)
 5185         movdqu  %xmm7,-16(%edi,%esi,1)
 5186         cmpl    %eax,%esi
 5187         jbe     .L077grandloop
 5188 .L076short:
 5189         addl    $96,%eax
 5190         subl    %esi,%eax
 5191         jz      .L078done
 5192         cmpl    $32,%eax
 5193         jb      .L079one
 5194         je      .L080two
 5195         cmpl    $64,%eax
 5196         jb      .L081three
 5197         je      .L082four
 5198         leal    1(%ebp),%ecx
 5199         leal    3(%ebp),%eax
 5200         bsfl    %ecx,%ecx
 5201         bsfl    %eax,%eax
 5202         shll    $4,%ecx
 5203         shll    $4,%eax
 5204         movdqu  (%ebx),%xmm2
 5205         movdqu  (%ebx,%ecx,1),%xmm3
 5206         movl    116(%esp),%ecx
 5207         movdqa  %xmm2,%xmm4
 5208         movdqu  (%ebx,%eax,1),%xmm5
 5209         movdqa  %xmm2,%xmm6
 5210         pxor    %xmm0,%xmm2
 5211         pxor    %xmm2,%xmm3
 5212         movdqa  %xmm2,(%esp)
 5213         pxor    %xmm3,%xmm4
 5214         movdqa  %xmm3,16(%esp)
 5215         pxor    %xmm4,%xmm5
 5216         movdqa  %xmm4,32(%esp)
 5217         pxor    %xmm5,%xmm6
 5218         movdqa  %xmm5,48(%esp)
 5219         pxor    %xmm6,%xmm7
 5220         movdqa  %xmm6,64(%esp)
 5221         movups  -48(%edx,%ecx,1),%xmm0
 5222         movdqu  (%esi),%xmm2
 5223         movdqu  16(%esi),%xmm3
 5224         movdqu  32(%esi),%xmm4
 5225         movdqu  48(%esi),%xmm5
 5226         movdqu  64(%esi),%xmm6
 5227         pxor    %xmm7,%xmm7
 5228         pxor    %xmm2,%xmm1
 5229         pxor    %xmm0,%xmm2
 5230         pxor    %xmm3,%xmm1
 5231         pxor    %xmm0,%xmm3
 5232         pxor    %xmm4,%xmm1
 5233         pxor    %xmm0,%xmm4
 5234         pxor    %xmm5,%xmm1
 5235         pxor    %xmm0,%xmm5
 5236         pxor    %xmm6,%xmm1
 5237         pxor    %xmm0,%xmm6
 5238         movdqa  %xmm1,96(%esp)
 5239         movups  -32(%edx,%ecx,1),%xmm1
 5240         pxor    (%esp),%xmm2
 5241         pxor    16(%esp),%xmm3
 5242         pxor    32(%esp),%xmm4
 5243         pxor    48(%esp),%xmm5
 5244         pxor    64(%esp),%xmm6
 5245         movups  -16(%edx,%ecx,1),%xmm0
 5246 .byte   102,15,56,220,209
 5247 .byte   102,15,56,220,217
 5248 .byte   102,15,56,220,225
 5249 .byte   102,15,56,220,233
 5250 .byte   102,15,56,220,241
 5251 .byte   102,15,56,220,249
 5252         movl    120(%esp),%edi
 5253         call    .L_aesni_encrypt6_enter
 5254         movdqa  64(%esp),%xmm0
 5255         pxor    (%esp),%xmm2
 5256         pxor    16(%esp),%xmm3
 5257         pxor    32(%esp),%xmm4
 5258         pxor    48(%esp),%xmm5
 5259         pxor    %xmm0,%xmm6
 5260         movdqa  96(%esp),%xmm1
 5261         movdqu  %xmm2,(%edi,%esi,1)
 5262         movdqu  %xmm3,16(%edi,%esi,1)
 5263         movdqu  %xmm4,32(%edi,%esi,1)
 5264         movdqu  %xmm5,48(%edi,%esi,1)
 5265         movdqu  %xmm6,64(%edi,%esi,1)
 5266         jmp     .L078done
 5267 .align  16
 5268 .L079one:
 5269         movdqu  (%ebx),%xmm7
 5270         movl    112(%esp),%edx
 5271         movdqu  (%esi),%xmm2
 5272         movl    240(%edx),%ecx
 5273         pxor    %xmm0,%xmm7
 5274         pxor    %xmm2,%xmm1
 5275         pxor    %xmm7,%xmm2
 5276         movdqa  %xmm1,%xmm6
 5277         movl    120(%esp),%edi
 5278         movups  (%edx),%xmm0
 5279         movups  16(%edx),%xmm1
 5280         leal    32(%edx),%edx
 5281         xorps   %xmm0,%xmm2
 5282 .L083enc1_loop_16:
 5283 .byte   102,15,56,220,209
 5284         decl    %ecx
 5285         movups  (%edx),%xmm1
 5286         leal    16(%edx),%edx
 5287         jnz     .L083enc1_loop_16
 5288 .byte   102,15,56,221,209
 5289         xorps   %xmm7,%xmm2
 5290         movdqa  %xmm7,%xmm0
 5291         movdqa  %xmm6,%xmm1
 5292         movups  %xmm2,(%edi,%esi,1)
 5293         jmp     .L078done
 5294 .align  16
 5295 .L080two:
 5296         leal    1(%ebp),%ecx
 5297         movl    112(%esp),%edx
 5298         bsfl    %ecx,%ecx
 5299         shll    $4,%ecx
 5300         movdqu  (%ebx),%xmm6
 5301         movdqu  (%ebx,%ecx,1),%xmm7
 5302         movdqu  (%esi),%xmm2
 5303         movdqu  16(%esi),%xmm3
 5304         movl    240(%edx),%ecx
 5305         pxor    %xmm0,%xmm6
 5306         pxor    %xmm6,%xmm7
 5307         pxor    %xmm2,%xmm1
 5308         pxor    %xmm6,%xmm2
 5309         pxor    %xmm3,%xmm1
 5310         pxor    %xmm7,%xmm3
 5311         movdqa  %xmm1,%xmm5
 5312         movl    120(%esp),%edi
 5313         call    _aesni_encrypt2
 5314         xorps   %xmm6,%xmm2
 5315         xorps   %xmm7,%xmm3
 5316         movdqa  %xmm7,%xmm0
 5317         movdqa  %xmm5,%xmm1
 5318         movups  %xmm2,(%edi,%esi,1)
 5319         movups  %xmm3,16(%edi,%esi,1)
 5320         jmp     .L078done
 5321 .align  16
 5322 .L081three:
 5323         leal    1(%ebp),%ecx
 5324         movl    112(%esp),%edx
 5325         bsfl    %ecx,%ecx
 5326         shll    $4,%ecx
 5327         movdqu  (%ebx),%xmm5
 5328         movdqu  (%ebx,%ecx,1),%xmm6
 5329         movdqa  %xmm5,%xmm7
 5330         movdqu  (%esi),%xmm2
 5331         movdqu  16(%esi),%xmm3
 5332         movdqu  32(%esi),%xmm4
 5333         movl    240(%edx),%ecx
 5334         pxor    %xmm0,%xmm5
 5335         pxor    %xmm5,%xmm6
 5336         pxor    %xmm6,%xmm7
 5337         pxor    %xmm2,%xmm1
 5338         pxor    %xmm5,%xmm2
 5339         pxor    %xmm3,%xmm1
 5340         pxor    %xmm6,%xmm3
 5341         pxor    %xmm4,%xmm1
 5342         pxor    %xmm7,%xmm4
 5343         movdqa  %xmm1,96(%esp)
 5344         movl    120(%esp),%edi
 5345         call    _aesni_encrypt3
 5346         xorps   %xmm5,%xmm2
 5347         xorps   %xmm6,%xmm3
 5348         xorps   %xmm7,%xmm4
 5349         movdqa  %xmm7,%xmm0
 5350         movdqa  96(%esp),%xmm1
 5351         movups  %xmm2,(%edi,%esi,1)
 5352         movups  %xmm3,16(%edi,%esi,1)
 5353         movups  %xmm4,32(%edi,%esi,1)
 5354         jmp     .L078done
 5355 .align  16
 5356 .L082four:
 5357         leal    1(%ebp),%ecx
 5358         leal    3(%ebp),%eax
 5359         bsfl    %ecx,%ecx
 5360         bsfl    %eax,%eax
 5361         movl    112(%esp),%edx
 5362         shll    $4,%ecx
 5363         shll    $4,%eax
 5364         movdqu  (%ebx),%xmm4
 5365         movdqu  (%ebx,%ecx,1),%xmm5
 5366         movdqa  %xmm4,%xmm6
 5367         movdqu  (%ebx,%eax,1),%xmm7
 5368         pxor    %xmm0,%xmm4
 5369         movdqu  (%esi),%xmm2
 5370         pxor    %xmm4,%xmm5
 5371         movdqu  16(%esi),%xmm3
 5372         pxor    %xmm5,%xmm6
 5373         movdqa  %xmm4,(%esp)
 5374         pxor    %xmm6,%xmm7
 5375         movdqa  %xmm5,16(%esp)
 5376         movdqu  32(%esi),%xmm4
 5377         movdqu  48(%esi),%xmm5
 5378         movl    240(%edx),%ecx
 5379         pxor    %xmm2,%xmm1
 5380         pxor    (%esp),%xmm2
 5381         pxor    %xmm3,%xmm1
 5382         pxor    16(%esp),%xmm3
 5383         pxor    %xmm4,%xmm1
 5384         pxor    %xmm6,%xmm4
 5385         pxor    %xmm5,%xmm1
 5386         pxor    %xmm7,%xmm5
 5387         movdqa  %xmm1,96(%esp)
 5388         movl    120(%esp),%edi
 5389         call    _aesni_encrypt4
 5390         xorps   (%esp),%xmm2
 5391         xorps   16(%esp),%xmm3
 5392         xorps   %xmm6,%xmm4
 5393         movups  %xmm2,(%edi,%esi,1)
 5394         xorps   %xmm7,%xmm5
 5395         movups  %xmm3,16(%edi,%esi,1)
 5396         movdqa  %xmm7,%xmm0
 5397         movups  %xmm4,32(%edi,%esi,1)
 5398         movdqa  96(%esp),%xmm1
 5399         movups  %xmm5,48(%edi,%esi,1)
 5400 .L078done:
 5401         movl    128(%esp),%edx
 5402         pxor    %xmm2,%xmm2
 5403         pxor    %xmm3,%xmm3
 5404         movdqa  %xmm2,(%esp)
 5405         pxor    %xmm4,%xmm4
 5406         movdqa  %xmm2,16(%esp)
 5407         pxor    %xmm5,%xmm5
 5408         movdqa  %xmm2,32(%esp)
 5409         pxor    %xmm6,%xmm6
 5410         movdqa  %xmm2,48(%esp)
 5411         pxor    %xmm7,%xmm7
 5412         movdqa  %xmm2,64(%esp)
 5413         movdqa  %xmm2,80(%esp)
 5414         movdqa  %xmm2,96(%esp)
 5415         leal    (%edx),%esp
 5416         movl    40(%esp),%ecx
 5417         movl    48(%esp),%ebx
 5418         movdqu  %xmm0,(%ecx)
 5419         pxor    %xmm0,%xmm0
 5420         movdqu  %xmm1,(%ebx)
 5421         pxor    %xmm1,%xmm1
 5422         popl    %edi
 5423         popl    %esi
 5424         popl    %ebx
 5425         popl    %ebp
 5426         ret
 5427 .size   aesni_ocb_encrypt,.-.L_aesni_ocb_encrypt_begin
 5428 .globl  aesni_ocb_decrypt
 5429 .type   aesni_ocb_decrypt,@function
 5430 .align  16
 5431 aesni_ocb_decrypt:
 5432 .L_aesni_ocb_decrypt_begin:
 5433         pushl   %ebp
 5434         pushl   %ebx
 5435         pushl   %esi
 5436         pushl   %edi
 5437         movl    40(%esp),%ecx
 5438         movl    48(%esp),%ebx
 5439         movl    20(%esp),%esi
 5440         movl    24(%esp),%edi
 5441         movl    28(%esp),%eax
 5442         movl    32(%esp),%edx
 5443         movdqu  (%ecx),%xmm0
 5444         movl    36(%esp),%ebp
 5445         movdqu  (%ebx),%xmm1
 5446         movl    44(%esp),%ebx
 5447         movl    %esp,%ecx
 5448         subl    $132,%esp
 5449         andl    $-16,%esp
 5450         subl    %esi,%edi
 5451         shll    $4,%eax
 5452         leal    -96(%esi,%eax,1),%eax
 5453         movl    %edi,120(%esp)
 5454         movl    %eax,124(%esp)
 5455         movl    %ecx,128(%esp)
 5456         movl    240(%edx),%ecx
 5457         testl   $1,%ebp
 5458         jnz     .L084odd
 5459         bsfl    %ebp,%eax
 5460         addl    $1,%ebp
 5461         shll    $4,%eax
 5462         movdqu  (%ebx,%eax,1),%xmm7
 5463         movl    %edx,%eax
 5464         movdqu  (%esi),%xmm2
 5465         leal    16(%esi),%esi
 5466         pxor    %xmm0,%xmm7
 5467         pxor    %xmm7,%xmm2
 5468         movdqa  %xmm1,%xmm6
 5469         movups  (%edx),%xmm0
 5470         movups  16(%edx),%xmm1
 5471         leal    32(%edx),%edx
 5472         xorps   %xmm0,%xmm2
 5473 .L085dec1_loop_17:
 5474 .byte   102,15,56,222,209
 5475         decl    %ecx
 5476         movups  (%edx),%xmm1
 5477         leal    16(%edx),%edx
 5478         jnz     .L085dec1_loop_17
 5479 .byte   102,15,56,223,209
 5480         xorps   %xmm7,%xmm2
 5481         movaps  %xmm6,%xmm1
 5482         movdqa  %xmm7,%xmm0
 5483         xorps   %xmm2,%xmm1
 5484         movups  %xmm2,-16(%edi,%esi,1)
 5485         movl    240(%eax),%ecx
 5486         movl    %eax,%edx
 5487         movl    124(%esp),%eax
 5488 .L084odd:
 5489         shll    $4,%ecx
 5490         movl    $16,%edi
 5491         subl    %ecx,%edi
 5492         movl    %edx,112(%esp)
 5493         leal    32(%edx,%ecx,1),%edx
 5494         movl    %edi,116(%esp)
 5495         cmpl    %eax,%esi
 5496         ja      .L086short
 5497         jmp     .L087grandloop
 5498 .align  32
 5499 .L087grandloop:
 5500         leal    1(%ebp),%ecx
 5501         leal    3(%ebp),%eax
 5502         leal    5(%ebp),%edi
 5503         addl    $6,%ebp
 5504         bsfl    %ecx,%ecx
 5505         bsfl    %eax,%eax
 5506         bsfl    %edi,%edi
 5507         shll    $4,%ecx
 5508         shll    $4,%eax
 5509         shll    $4,%edi
 5510         movdqu  (%ebx),%xmm2
 5511         movdqu  (%ebx,%ecx,1),%xmm3
 5512         movl    116(%esp),%ecx
 5513         movdqa  %xmm2,%xmm4
 5514         movdqu  (%ebx,%eax,1),%xmm5
 5515         movdqa  %xmm2,%xmm6
 5516         movdqu  (%ebx,%edi,1),%xmm7
 5517         pxor    %xmm0,%xmm2
 5518         pxor    %xmm2,%xmm3
 5519         movdqa  %xmm2,(%esp)
 5520         pxor    %xmm3,%xmm4
 5521         movdqa  %xmm3,16(%esp)
 5522         pxor    %xmm4,%xmm5
 5523         movdqa  %xmm4,32(%esp)
 5524         pxor    %xmm5,%xmm6
 5525         movdqa  %xmm5,48(%esp)
 5526         pxor    %xmm6,%xmm7
 5527         movdqa  %xmm6,64(%esp)
 5528         movdqa  %xmm7,80(%esp)
 5529         movups  -48(%edx,%ecx,1),%xmm0
 5530         movdqu  (%esi),%xmm2
 5531         movdqu  16(%esi),%xmm3
 5532         movdqu  32(%esi),%xmm4
 5533         movdqu  48(%esi),%xmm5
 5534         movdqu  64(%esi),%xmm6
 5535         movdqu  80(%esi),%xmm7
 5536         leal    96(%esi),%esi
 5537         movdqa  %xmm1,96(%esp)
 5538         pxor    %xmm0,%xmm2
 5539         pxor    %xmm0,%xmm3
 5540         pxor    %xmm0,%xmm4
 5541         pxor    %xmm0,%xmm5
 5542         pxor    %xmm0,%xmm6
 5543         pxor    %xmm0,%xmm7
 5544         movups  -32(%edx,%ecx,1),%xmm1
 5545         pxor    (%esp),%xmm2
 5546         pxor    16(%esp),%xmm3
 5547         pxor    32(%esp),%xmm4
 5548         pxor    48(%esp),%xmm5
 5549         pxor    64(%esp),%xmm6
 5550         pxor    80(%esp),%xmm7
 5551         movups  -16(%edx,%ecx,1),%xmm0
 5552 .byte   102,15,56,222,209
 5553 .byte   102,15,56,222,217
 5554 .byte   102,15,56,222,225
 5555 .byte   102,15,56,222,233
 5556 .byte   102,15,56,222,241
 5557 .byte   102,15,56,222,249
 5558         movl    120(%esp),%edi
 5559         movl    124(%esp),%eax
 5560         call    .L_aesni_decrypt6_enter
 5561         movdqa  80(%esp),%xmm0
 5562         pxor    (%esp),%xmm2
 5563         movdqa  96(%esp),%xmm1
 5564         pxor    16(%esp),%xmm3
 5565         pxor    32(%esp),%xmm4
 5566         pxor    48(%esp),%xmm5
 5567         pxor    64(%esp),%xmm6
 5568         pxor    %xmm0,%xmm7
 5569         pxor    %xmm2,%xmm1
 5570         movdqu  %xmm2,-96(%edi,%esi,1)
 5571         pxor    %xmm3,%xmm1
 5572         movdqu  %xmm3,-80(%edi,%esi,1)
 5573         pxor    %xmm4,%xmm1
 5574         movdqu  %xmm4,-64(%edi,%esi,1)
 5575         pxor    %xmm5,%xmm1
 5576         movdqu  %xmm5,-48(%edi,%esi,1)
 5577         pxor    %xmm6,%xmm1
 5578         movdqu  %xmm6,-32(%edi,%esi,1)
 5579         pxor    %xmm7,%xmm1
 5580         movdqu  %xmm7,-16(%edi,%esi,1)
 5581         cmpl    %eax,%esi
 5582         jbe     .L087grandloop
 5583 .L086short:
 5584         addl    $96,%eax
 5585         subl    %esi,%eax
 5586         jz      .L088done
 5587         cmpl    $32,%eax
 5588         jb      .L089one
 5589         je      .L090two
 5590         cmpl    $64,%eax
 5591         jb      .L091three
 5592         je      .L092four
 5593         leal    1(%ebp),%ecx
 5594         leal    3(%ebp),%eax
 5595         bsfl    %ecx,%ecx
 5596         bsfl    %eax,%eax
 5597         shll    $4,%ecx
 5598         shll    $4,%eax
 5599         movdqu  (%ebx),%xmm2
 5600         movdqu  (%ebx,%ecx,1),%xmm3
 5601         movl    116(%esp),%ecx
 5602         movdqa  %xmm2,%xmm4
 5603         movdqu  (%ebx,%eax,1),%xmm5
 5604         movdqa  %xmm2,%xmm6
 5605         pxor    %xmm0,%xmm2
 5606         pxor    %xmm2,%xmm3
 5607         movdqa  %xmm2,(%esp)
 5608         pxor    %xmm3,%xmm4
 5609         movdqa  %xmm3,16(%esp)
 5610         pxor    %xmm4,%xmm5
 5611         movdqa  %xmm4,32(%esp)
 5612         pxor    %xmm5,%xmm6
 5613         movdqa  %xmm5,48(%esp)
 5614         pxor    %xmm6,%xmm7
 5615         movdqa  %xmm6,64(%esp)
 5616         movups  -48(%edx,%ecx,1),%xmm0
 5617         movdqu  (%esi),%xmm2
 5618         movdqu  16(%esi),%xmm3
 5619         movdqu  32(%esi),%xmm4
 5620         movdqu  48(%esi),%xmm5
 5621         movdqu  64(%esi),%xmm6
 5622         pxor    %xmm7,%xmm7
 5623         movdqa  %xmm1,96(%esp)
 5624         pxor    %xmm0,%xmm2
 5625         pxor    %xmm0,%xmm3
 5626         pxor    %xmm0,%xmm4
 5627         pxor    %xmm0,%xmm5
 5628         pxor    %xmm0,%xmm6
 5629         movups  -32(%edx,%ecx,1),%xmm1
 5630         pxor    (%esp),%xmm2
 5631         pxor    16(%esp),%xmm3
 5632         pxor    32(%esp),%xmm4
 5633         pxor    48(%esp),%xmm5
 5634         pxor    64(%esp),%xmm6
 5635         movups  -16(%edx,%ecx,1),%xmm0
 5636 .byte   102,15,56,222,209
 5637 .byte   102,15,56,222,217
 5638 .byte   102,15,56,222,225
 5639 .byte   102,15,56,222,233
 5640 .byte   102,15,56,222,241
 5641 .byte   102,15,56,222,249
 5642         movl    120(%esp),%edi
 5643         call    .L_aesni_decrypt6_enter
 5644         movdqa  64(%esp),%xmm0
 5645         pxor    (%esp),%xmm2
 5646         movdqa  96(%esp),%xmm1
 5647         pxor    16(%esp),%xmm3
 5648         pxor    32(%esp),%xmm4
 5649         pxor    48(%esp),%xmm5
 5650         pxor    %xmm0,%xmm6
 5651         pxor    %xmm2,%xmm1
 5652         movdqu  %xmm2,(%edi,%esi,1)
 5653         pxor    %xmm3,%xmm1
 5654         movdqu  %xmm3,16(%edi,%esi,1)
 5655         pxor    %xmm4,%xmm1
 5656         movdqu  %xmm4,32(%edi,%esi,1)
 5657         pxor    %xmm5,%xmm1
 5658         movdqu  %xmm5,48(%edi,%esi,1)
 5659         pxor    %xmm6,%xmm1
 5660         movdqu  %xmm6,64(%edi,%esi,1)
 5661         jmp     .L088done
 5662 .align  16
 5663 .L089one:
 5664         movdqu  (%ebx),%xmm7
 5665         movl    112(%esp),%edx
 5666         movdqu  (%esi),%xmm2
 5667         movl    240(%edx),%ecx
 5668         pxor    %xmm0,%xmm7
 5669         pxor    %xmm7,%xmm2
 5670         movdqa  %xmm1,%xmm6
 5671         movl    120(%esp),%edi
 5672         movups  (%edx),%xmm0
 5673         movups  16(%edx),%xmm1
 5674         leal    32(%edx),%edx
 5675         xorps   %xmm0,%xmm2
 5676 .L093dec1_loop_18:
 5677 .byte   102,15,56,222,209
 5678         decl    %ecx
 5679         movups  (%edx),%xmm1
 5680         leal    16(%edx),%edx
 5681         jnz     .L093dec1_loop_18
 5682 .byte   102,15,56,223,209
 5683         xorps   %xmm7,%xmm2
 5684         movaps  %xmm6,%xmm1
 5685         movdqa  %xmm7,%xmm0
 5686         xorps   %xmm2,%xmm1
 5687         movups  %xmm2,(%edi,%esi,1)
 5688         jmp     .L088done
 5689 .align  16
 5690 .L090two:
 5691         leal    1(%ebp),%ecx
 5692         movl    112(%esp),%edx
 5693         bsfl    %ecx,%ecx
 5694         shll    $4,%ecx
 5695         movdqu  (%ebx),%xmm6
 5696         movdqu  (%ebx,%ecx,1),%xmm7
 5697         movdqu  (%esi),%xmm2
 5698         movdqu  16(%esi),%xmm3
 5699         movl    240(%edx),%ecx
 5700         movdqa  %xmm1,%xmm5
 5701         pxor    %xmm0,%xmm6
 5702         pxor    %xmm6,%xmm7
 5703         pxor    %xmm6,%xmm2
 5704         pxor    %xmm7,%xmm3
 5705         movl    120(%esp),%edi
 5706         call    _aesni_decrypt2
 5707         xorps   %xmm6,%xmm2
 5708         xorps   %xmm7,%xmm3
 5709         movdqa  %xmm7,%xmm0
 5710         xorps   %xmm2,%xmm5
 5711         movups  %xmm2,(%edi,%esi,1)
 5712         xorps   %xmm3,%xmm5
 5713         movups  %xmm3,16(%edi,%esi,1)
 5714         movaps  %xmm5,%xmm1
 5715         jmp     .L088done
 5716 .align  16
 5717 .L091three:
 5718         leal    1(%ebp),%ecx
 5719         movl    112(%esp),%edx
 5720         bsfl    %ecx,%ecx
 5721         shll    $4,%ecx
 5722         movdqu  (%ebx),%xmm5
 5723         movdqu  (%ebx,%ecx,1),%xmm6
 5724         movdqa  %xmm5,%xmm7
 5725         movdqu  (%esi),%xmm2
 5726         movdqu  16(%esi),%xmm3
 5727         movdqu  32(%esi),%xmm4
 5728         movl    240(%edx),%ecx
 5729         movdqa  %xmm1,96(%esp)
 5730         pxor    %xmm0,%xmm5
 5731         pxor    %xmm5,%xmm6
 5732         pxor    %xmm6,%xmm7
 5733         pxor    %xmm5,%xmm2
 5734         pxor    %xmm6,%xmm3
 5735         pxor    %xmm7,%xmm4
 5736         movl    120(%esp),%edi
 5737         call    _aesni_decrypt3
 5738         movdqa  96(%esp),%xmm1
 5739         xorps   %xmm5,%xmm2
 5740         xorps   %xmm6,%xmm3
 5741         xorps   %xmm7,%xmm4
 5742         movups  %xmm2,(%edi,%esi,1)
 5743         pxor    %xmm2,%xmm1
 5744         movdqa  %xmm7,%xmm0
 5745         movups  %xmm3,16(%edi,%esi,1)
 5746         pxor    %xmm3,%xmm1
 5747         movups  %xmm4,32(%edi,%esi,1)
 5748         pxor    %xmm4,%xmm1
 5749         jmp     .L088done
 5750 .align  16
 5751 .L092four:
 5752         leal    1(%ebp),%ecx
 5753         leal    3(%ebp),%eax
 5754         bsfl    %ecx,%ecx
 5755         bsfl    %eax,%eax
 5756         movl    112(%esp),%edx
 5757         shll    $4,%ecx
 5758         shll    $4,%eax
 5759         movdqu  (%ebx),%xmm4
 5760         movdqu  (%ebx,%ecx,1),%xmm5
 5761         movdqa  %xmm4,%xmm6
 5762         movdqu  (%ebx,%eax,1),%xmm7
 5763         pxor    %xmm0,%xmm4
 5764         movdqu  (%esi),%xmm2
 5765         pxor    %xmm4,%xmm5
 5766         movdqu  16(%esi),%xmm3
 5767         pxor    %xmm5,%xmm6
 5768         movdqa  %xmm4,(%esp)
 5769         pxor    %xmm6,%xmm7
 5770         movdqa  %xmm5,16(%esp)
 5771         movdqu  32(%esi),%xmm4
 5772         movdqu  48(%esi),%xmm5
 5773         movl    240(%edx),%ecx
 5774         movdqa  %xmm1,96(%esp)
 5775         pxor    (%esp),%xmm2
 5776         pxor    16(%esp),%xmm3
 5777         pxor    %xmm6,%xmm4
 5778         pxor    %xmm7,%xmm5
 5779         movl    120(%esp),%edi
 5780         call    _aesni_decrypt4
 5781         movdqa  96(%esp),%xmm1
 5782         xorps   (%esp),%xmm2
 5783         xorps   16(%esp),%xmm3
 5784         xorps   %xmm6,%xmm4
 5785         movups  %xmm2,(%edi,%esi,1)
 5786         pxor    %xmm2,%xmm1
 5787         xorps   %xmm7,%xmm5
 5788         movups  %xmm3,16(%edi,%esi,1)
 5789         pxor    %xmm3,%xmm1
 5790         movdqa  %xmm7,%xmm0
 5791         movups  %xmm4,32(%edi,%esi,1)
 5792         pxor    %xmm4,%xmm1
 5793         movups  %xmm5,48(%edi,%esi,1)
 5794         pxor    %xmm5,%xmm1
 5795 .L088done:
 5796         movl    128(%esp),%edx
 5797         pxor    %xmm2,%xmm2
 5798         pxor    %xmm3,%xmm3
 5799         movdqa  %xmm2,(%esp)
 5800         pxor    %xmm4,%xmm4
 5801         movdqa  %xmm2,16(%esp)
 5802         pxor    %xmm5,%xmm5
 5803         movdqa  %xmm2,32(%esp)
 5804         pxor    %xmm6,%xmm6
 5805         movdqa  %xmm2,48(%esp)
 5806         pxor    %xmm7,%xmm7
 5807         movdqa  %xmm2,64(%esp)
 5808         movdqa  %xmm2,80(%esp)
 5809         movdqa  %xmm2,96(%esp)
 5810         leal    (%edx),%esp
 5811         movl    40(%esp),%ecx
 5812         movl    48(%esp),%ebx
 5813         movdqu  %xmm0,(%ecx)
 5814         pxor    %xmm0,%xmm0
 5815         movdqu  %xmm1,(%ebx)
 5816         pxor    %xmm1,%xmm1
 5817         popl    %edi
 5818         popl    %esi
 5819         popl    %ebx
 5820         popl    %ebp
 5821         ret
 5822 .size   aesni_ocb_decrypt,.-.L_aesni_ocb_decrypt_begin
 5823 .globl  aesni_cbc_encrypt
 5824 .type   aesni_cbc_encrypt,@function
 5825 .align  16
 5826 aesni_cbc_encrypt:
 5827 .L_aesni_cbc_encrypt_begin:
 5828         pushl   %ebp
 5829         pushl   %ebx
 5830         pushl   %esi
 5831         pushl   %edi
 5832         movl    20(%esp),%esi
 5833         movl    %esp,%ebx
 5834         movl    24(%esp),%edi
 5835         subl    $24,%ebx
 5836         movl    28(%esp),%eax
 5837         andl    $-16,%ebx
 5838         movl    32(%esp),%edx
 5839         movl    36(%esp),%ebp
 5840         testl   %eax,%eax
 5841         jz      .L094cbc_abort
 5842         cmpl    $0,40(%esp)
 5843         xchgl   %esp,%ebx
 5844         movups  (%ebp),%xmm7
 5845         movl    240(%edx),%ecx
 5846         movl    %edx,%ebp
 5847         movl    %ebx,16(%esp)
 5848         movl    %ecx,%ebx
 5849         je      .L095cbc_decrypt
 5850         movaps  %xmm7,%xmm2
 5851         cmpl    $16,%eax
 5852         jb      .L096cbc_enc_tail
 5853         subl    $16,%eax
 5854         jmp     .L097cbc_enc_loop
 5855 .align  16
 5856 .L097cbc_enc_loop:
 5857         movups  (%esi),%xmm7
 5858         leal    16(%esi),%esi
 5859         movups  (%edx),%xmm0
 5860         movups  16(%edx),%xmm1
 5861         xorps   %xmm0,%xmm7
 5862         leal    32(%edx),%edx
 5863         xorps   %xmm7,%xmm2
 5864 .L098enc1_loop_19:
 5865 .byte   102,15,56,220,209
 5866         decl    %ecx
 5867         movups  (%edx),%xmm1
 5868         leal    16(%edx),%edx
 5869         jnz     .L098enc1_loop_19
 5870 .byte   102,15,56,221,209
 5871         movl    %ebx,%ecx
 5872         movl    %ebp,%edx
 5873         movups  %xmm2,(%edi)
 5874         leal    16(%edi),%edi
 5875         subl    $16,%eax
 5876         jnc     .L097cbc_enc_loop
 5877         addl    $16,%eax
 5878         jnz     .L096cbc_enc_tail
 5879         movaps  %xmm2,%xmm7
 5880         pxor    %xmm2,%xmm2
 5881         jmp     .L099cbc_ret
 5882 .L096cbc_enc_tail:
 5883         movl    %eax,%ecx
 5884 .long   2767451785
 5885         movl    $16,%ecx
 5886         subl    %eax,%ecx
 5887         xorl    %eax,%eax
 5888 .long   2868115081
 5889         leal    -16(%edi),%edi
 5890         movl    %ebx,%ecx
 5891         movl    %edi,%esi
 5892         movl    %ebp,%edx
 5893         jmp     .L097cbc_enc_loop
 5894 .align  16
 5895 .L095cbc_decrypt:
 5896         cmpl    $80,%eax
 5897         jbe     .L100cbc_dec_tail
 5898         movaps  %xmm7,(%esp)
 5899         subl    $80,%eax
 5900         jmp     .L101cbc_dec_loop6_enter
 5901 .align  16
 5902 .L102cbc_dec_loop6:
 5903         movaps  %xmm0,(%esp)
 5904         movups  %xmm7,(%edi)
 5905         leal    16(%edi),%edi
 5906 .L101cbc_dec_loop6_enter:
 5907         movdqu  (%esi),%xmm2
 5908         movdqu  16(%esi),%xmm3
 5909         movdqu  32(%esi),%xmm4
 5910         movdqu  48(%esi),%xmm5
 5911         movdqu  64(%esi),%xmm6
 5912         movdqu  80(%esi),%xmm7
 5913         call    _aesni_decrypt6
 5914         movups  (%esi),%xmm1
 5915         movups  16(%esi),%xmm0
 5916         xorps   (%esp),%xmm2
 5917         xorps   %xmm1,%xmm3
 5918         movups  32(%esi),%xmm1
 5919         xorps   %xmm0,%xmm4
 5920         movups  48(%esi),%xmm0
 5921         xorps   %xmm1,%xmm5
 5922         movups  64(%esi),%xmm1
 5923         xorps   %xmm0,%xmm6
 5924         movups  80(%esi),%xmm0
 5925         xorps   %xmm1,%xmm7
 5926         movups  %xmm2,(%edi)
 5927         movups  %xmm3,16(%edi)
 5928         leal    96(%esi),%esi
 5929         movups  %xmm4,32(%edi)
 5930         movl    %ebx,%ecx
 5931         movups  %xmm5,48(%edi)
 5932         movl    %ebp,%edx
 5933         movups  %xmm6,64(%edi)
 5934         leal    80(%edi),%edi
 5935         subl    $96,%eax
 5936         ja      .L102cbc_dec_loop6
 5937         movaps  %xmm7,%xmm2
 5938         movaps  %xmm0,%xmm7
 5939         addl    $80,%eax
 5940         jle     .L103cbc_dec_clear_tail_collected
 5941         movups  %xmm2,(%edi)
 5942         leal    16(%edi),%edi
 5943 .L100cbc_dec_tail:
 5944         movups  (%esi),%xmm2
 5945         movaps  %xmm2,%xmm6
 5946         cmpl    $16,%eax
 5947         jbe     .L104cbc_dec_one
 5948         movups  16(%esi),%xmm3
 5949         movaps  %xmm3,%xmm5
 5950         cmpl    $32,%eax
 5951         jbe     .L105cbc_dec_two
 5952         movups  32(%esi),%xmm4
 5953         cmpl    $48,%eax
 5954         jbe     .L106cbc_dec_three
 5955         movups  48(%esi),%xmm5
 5956         cmpl    $64,%eax
 5957         jbe     .L107cbc_dec_four
 5958         movups  64(%esi),%xmm6
 5959         movaps  %xmm7,(%esp)
 5960         movups  (%esi),%xmm2
 5961         xorps   %xmm7,%xmm7
 5962         call    _aesni_decrypt6
 5963         movups  (%esi),%xmm1
 5964         movups  16(%esi),%xmm0
 5965         xorps   (%esp),%xmm2
 5966         xorps   %xmm1,%xmm3
 5967         movups  32(%esi),%xmm1
 5968         xorps   %xmm0,%xmm4
 5969         movups  48(%esi),%xmm0
 5970         xorps   %xmm1,%xmm5
 5971         movups  64(%esi),%xmm7
 5972         xorps   %xmm0,%xmm6
 5973         movups  %xmm2,(%edi)
 5974         movups  %xmm3,16(%edi)
 5975         pxor    %xmm3,%xmm3
 5976         movups  %xmm4,32(%edi)
 5977         pxor    %xmm4,%xmm4
 5978         movups  %xmm5,48(%edi)
 5979         pxor    %xmm5,%xmm5
 5980         leal    64(%edi),%edi
 5981         movaps  %xmm6,%xmm2
 5982         pxor    %xmm6,%xmm6
 5983         subl    $80,%eax
 5984         jmp     .L108cbc_dec_tail_collected
 5985 .align  16
 5986 .L104cbc_dec_one:
 5987         movups  (%edx),%xmm0
 5988         movups  16(%edx),%xmm1
 5989         leal    32(%edx),%edx
 5990         xorps   %xmm0,%xmm2
 5991 .L109dec1_loop_20:
 5992 .byte   102,15,56,222,209
 5993         decl    %ecx
 5994         movups  (%edx),%xmm1
 5995         leal    16(%edx),%edx
 5996         jnz     .L109dec1_loop_20
 5997 .byte   102,15,56,223,209
 5998         xorps   %xmm7,%xmm2
 5999         movaps  %xmm6,%xmm7
 6000         subl    $16,%eax
 6001         jmp     .L108cbc_dec_tail_collected
 6002 .align  16
 6003 .L105cbc_dec_two:
 6004         call    _aesni_decrypt2
 6005         xorps   %xmm7,%xmm2
 6006         xorps   %xmm6,%xmm3
 6007         movups  %xmm2,(%edi)
 6008         movaps  %xmm3,%xmm2
 6009         pxor    %xmm3,%xmm3
 6010         leal    16(%edi),%edi
 6011         movaps  %xmm5,%xmm7
 6012         subl    $32,%eax
 6013         jmp     .L108cbc_dec_tail_collected
 6014 .align  16
 6015 .L106cbc_dec_three:
 6016         call    _aesni_decrypt3
 6017         xorps   %xmm7,%xmm2
 6018         xorps   %xmm6,%xmm3
 6019         xorps   %xmm5,%xmm4
 6020         movups  %xmm2,(%edi)
 6021         movaps  %xmm4,%xmm2
 6022         pxor    %xmm4,%xmm4
 6023         movups  %xmm3,16(%edi)
 6024         pxor    %xmm3,%xmm3
 6025         leal    32(%edi),%edi
 6026         movups  32(%esi),%xmm7
 6027         subl    $48,%eax
 6028         jmp     .L108cbc_dec_tail_collected
 6029 .align  16
 6030 .L107cbc_dec_four:
 6031         call    _aesni_decrypt4
 6032         movups  16(%esi),%xmm1
 6033         movups  32(%esi),%xmm0
 6034         xorps   %xmm7,%xmm2
 6035         movups  48(%esi),%xmm7
 6036         xorps   %xmm6,%xmm3
 6037         movups  %xmm2,(%edi)
 6038         xorps   %xmm1,%xmm4
 6039         movups  %xmm3,16(%edi)
 6040         pxor    %xmm3,%xmm3
 6041         xorps   %xmm0,%xmm5
 6042         movups  %xmm4,32(%edi)
 6043         pxor    %xmm4,%xmm4
 6044         leal    48(%edi),%edi
 6045         movaps  %xmm5,%xmm2
 6046         pxor    %xmm5,%xmm5
 6047         subl    $64,%eax
 6048         jmp     .L108cbc_dec_tail_collected
 6049 .align  16
 6050 .L103cbc_dec_clear_tail_collected:
 6051         pxor    %xmm3,%xmm3
 6052         pxor    %xmm4,%xmm4
 6053         pxor    %xmm5,%xmm5
 6054         pxor    %xmm6,%xmm6
 6055 .L108cbc_dec_tail_collected:
 6056         andl    $15,%eax
 6057         jnz     .L110cbc_dec_tail_partial
 6058         movups  %xmm2,(%edi)
 6059         pxor    %xmm0,%xmm0
 6060         jmp     .L099cbc_ret
 6061 .align  16
 6062 .L110cbc_dec_tail_partial:
 6063         movaps  %xmm2,(%esp)
 6064         pxor    %xmm0,%xmm0
 6065         movl    $16,%ecx
 6066         movl    %esp,%esi
 6067         subl    %eax,%ecx
 6068 .long   2767451785
 6069         movdqa  %xmm2,(%esp)
 6070 .L099cbc_ret:
 6071         movl    16(%esp),%esp
 6072         movl    36(%esp),%ebp
 6073         pxor    %xmm2,%xmm2
 6074         pxor    %xmm1,%xmm1
 6075         movups  %xmm7,(%ebp)
 6076         pxor    %xmm7,%xmm7
 6077 .L094cbc_abort:
 6078         popl    %edi
 6079         popl    %esi
 6080         popl    %ebx
 6081         popl    %ebp
 6082         ret
 6083 .size   aesni_cbc_encrypt,.-.L_aesni_cbc_encrypt_begin
 6084 .type   _aesni_set_encrypt_key,@function
 6085 .align  16
 6086 _aesni_set_encrypt_key:
 6087         pushl   %ebp
 6088         pushl   %ebx
 6089         testl   %eax,%eax
 6090         jz      .L111bad_pointer
 6091         testl   %edx,%edx
 6092         jz      .L111bad_pointer
 6093         call    .L112pic
 6094 .L112pic:
 6095         popl    %ebx
 6096         leal    .Lkey_const-.L112pic(%ebx),%ebx
 6097         leal    OPENSSL_ia32cap_P,%ebp
 6098         movups  (%eax),%xmm0
 6099         xorps   %xmm4,%xmm4
 6100         movl    4(%ebp),%ebp
 6101         leal    16(%edx),%edx
 6102         andl    $268437504,%ebp
 6103         cmpl    $256,%ecx
 6104         je      .L11314rounds
 6105         cmpl    $192,%ecx
 6106         je      .L11412rounds
 6107         cmpl    $128,%ecx
 6108         jne     .L115bad_keybits
 6109 .align  16
 6110 .L11610rounds:
 6111         cmpl    $268435456,%ebp
 6112         je      .L11710rounds_alt
 6113         movl    $9,%ecx
 6114         movups  %xmm0,-16(%edx)
 6115 .byte   102,15,58,223,200,1
 6116         call    .L118key_128_cold
 6117 .byte   102,15,58,223,200,2
 6118         call    .L119key_128
 6119 .byte   102,15,58,223,200,4
 6120         call    .L119key_128
 6121 .byte   102,15,58,223,200,8
 6122         call    .L119key_128
 6123 .byte   102,15,58,223,200,16
 6124         call    .L119key_128
 6125 .byte   102,15,58,223,200,32
 6126         call    .L119key_128
 6127 .byte   102,15,58,223,200,64
 6128         call    .L119key_128
 6129 .byte   102,15,58,223,200,128
 6130         call    .L119key_128
 6131 .byte   102,15,58,223,200,27
 6132         call    .L119key_128
 6133 .byte   102,15,58,223,200,54
 6134         call    .L119key_128
 6135         movups  %xmm0,(%edx)
 6136         movl    %ecx,80(%edx)
 6137         jmp     .L120good_key
 6138 .align  16
 6139 .L119key_128:
 6140         movups  %xmm0,(%edx)
 6141         leal    16(%edx),%edx
 6142 .L118key_128_cold:
 6143         shufps  $16,%xmm0,%xmm4
 6144         xorps   %xmm4,%xmm0
 6145         shufps  $140,%xmm0,%xmm4
 6146         xorps   %xmm4,%xmm0
 6147         shufps  $255,%xmm1,%xmm1
 6148         xorps   %xmm1,%xmm0
 6149         ret
 6150 .align  16
 6151 .L11710rounds_alt:
 6152         movdqa  (%ebx),%xmm5
 6153         movl    $8,%ecx
 6154         movdqa  32(%ebx),%xmm4
 6155         movdqa  %xmm0,%xmm2
 6156         movdqu  %xmm0,-16(%edx)
 6157 .L121loop_key128:
 6158 .byte   102,15,56,0,197
 6159 .byte   102,15,56,221,196
 6160         pslld   $1,%xmm4
 6161         leal    16(%edx),%edx
 6162         movdqa  %xmm2,%xmm3
 6163         pslldq  $4,%xmm2
 6164         pxor    %xmm2,%xmm3
 6165         pslldq  $4,%xmm2
 6166         pxor    %xmm2,%xmm3
 6167         pslldq  $4,%xmm2
 6168         pxor    %xmm3,%xmm2
 6169         pxor    %xmm2,%xmm0
 6170         movdqu  %xmm0,-16(%edx)
 6171         movdqa  %xmm0,%xmm2
 6172         decl    %ecx
 6173         jnz     .L121loop_key128
 6174         movdqa  48(%ebx),%xmm4
 6175 .byte   102,15,56,0,197
 6176 .byte   102,15,56,221,196
 6177         pslld   $1,%xmm4
 6178         movdqa  %xmm2,%xmm3
 6179         pslldq  $4,%xmm2
 6180         pxor    %xmm2,%xmm3
 6181         pslldq  $4,%xmm2
 6182         pxor    %xmm2,%xmm3
 6183         pslldq  $4,%xmm2
 6184         pxor    %xmm3,%xmm2
 6185         pxor    %xmm2,%xmm0
 6186         movdqu  %xmm0,(%edx)
 6187         movdqa  %xmm0,%xmm2
 6188 .byte   102,15,56,0,197
 6189 .byte   102,15,56,221,196
 6190         movdqa  %xmm2,%xmm3
 6191         pslldq  $4,%xmm2
 6192         pxor    %xmm2,%xmm3
 6193         pslldq  $4,%xmm2
 6194         pxor    %xmm2,%xmm3
 6195         pslldq  $4,%xmm2
 6196         pxor    %xmm3,%xmm2
 6197         pxor    %xmm2,%xmm0
 6198         movdqu  %xmm0,16(%edx)
 6199         movl    $9,%ecx
 6200         movl    %ecx,96(%edx)
 6201         jmp     .L120good_key
 6202 .align  16
 6203 .L11412rounds:
 6204         movq    16(%eax),%xmm2
 6205         cmpl    $268435456,%ebp
 6206         je      .L12212rounds_alt
 6207         movl    $11,%ecx
 6208         movups  %xmm0,-16(%edx)
 6209 .byte   102,15,58,223,202,1
 6210         call    .L123key_192a_cold
 6211 .byte   102,15,58,223,202,2
 6212         call    .L124key_192b
 6213 .byte   102,15,58,223,202,4
 6214         call    .L125key_192a
 6215 .byte   102,15,58,223,202,8
 6216         call    .L124key_192b
 6217 .byte   102,15,58,223,202,16
 6218         call    .L125key_192a
 6219 .byte   102,15,58,223,202,32
 6220         call    .L124key_192b
 6221 .byte   102,15,58,223,202,64
 6222         call    .L125key_192a
 6223 .byte   102,15,58,223,202,128
 6224         call    .L124key_192b
 6225         movups  %xmm0,(%edx)
 6226         movl    %ecx,48(%edx)
 6227         jmp     .L120good_key
 6228 .align  16
 6229 .L125key_192a:
 6230         movups  %xmm0,(%edx)
 6231         leal    16(%edx),%edx
 6232 .align  16
 6233 .L123key_192a_cold:
 6234         movaps  %xmm2,%xmm5
 6235 .L126key_192b_warm:
 6236         shufps  $16,%xmm0,%xmm4
 6237         movdqa  %xmm2,%xmm3
 6238         xorps   %xmm4,%xmm0
 6239         shufps  $140,%xmm0,%xmm4
 6240         pslldq  $4,%xmm3
 6241         xorps   %xmm4,%xmm0
 6242         pshufd  $85,%xmm1,%xmm1
 6243         pxor    %xmm3,%xmm2
 6244         pxor    %xmm1,%xmm0
 6245         pshufd  $255,%xmm0,%xmm3
 6246         pxor    %xmm3,%xmm2
 6247         ret
 6248 .align  16
 6249 .L124key_192b:
 6250         movaps  %xmm0,%xmm3
 6251         shufps  $68,%xmm0,%xmm5
 6252         movups  %xmm5,(%edx)
 6253         shufps  $78,%xmm2,%xmm3
 6254         movups  %xmm3,16(%edx)
 6255         leal    32(%edx),%edx
 6256         jmp     .L126key_192b_warm
 6257 .align  16
 6258 .L12212rounds_alt:
 6259         movdqa  16(%ebx),%xmm5
 6260         movdqa  32(%ebx),%xmm4
 6261         movl    $8,%ecx
 6262         movdqu  %xmm0,-16(%edx)
 6263 .L127loop_key192:
 6264         movq    %xmm2,(%edx)
 6265         movdqa  %xmm2,%xmm1
 6266 .byte   102,15,56,0,213
 6267 .byte   102,15,56,221,212
 6268         pslld   $1,%xmm4
 6269         leal    24(%edx),%edx
 6270         movdqa  %xmm0,%xmm3
 6271         pslldq  $4,%xmm0
 6272         pxor    %xmm0,%xmm3
 6273         pslldq  $4,%xmm0
 6274         pxor    %xmm0,%xmm3
 6275         pslldq  $4,%xmm0
 6276         pxor    %xmm3,%xmm0
 6277         pshufd  $255,%xmm0,%xmm3
 6278         pxor    %xmm1,%xmm3
 6279         pslldq  $4,%xmm1
 6280         pxor    %xmm1,%xmm3
 6281         pxor    %xmm2,%xmm0
 6282         pxor    %xmm3,%xmm2
 6283         movdqu  %xmm0,-16(%edx)
 6284         decl    %ecx
 6285         jnz     .L127loop_key192
 6286         movl    $11,%ecx
 6287         movl    %ecx,32(%edx)
 6288         jmp     .L120good_key
 6289 .align  16
 6290 .L11314rounds:
 6291         movups  16(%eax),%xmm2
 6292         leal    16(%edx),%edx
 6293         cmpl    $268435456,%ebp
 6294         je      .L12814rounds_alt
 6295         movl    $13,%ecx
 6296         movups  %xmm0,-32(%edx)
 6297         movups  %xmm2,-16(%edx)
 6298 .byte   102,15,58,223,202,1
 6299         call    .L129key_256a_cold
 6300 .byte   102,15,58,223,200,1
 6301         call    .L130key_256b
 6302 .byte   102,15,58,223,202,2
 6303         call    .L131key_256a
 6304 .byte   102,15,58,223,200,2
 6305         call    .L130key_256b
 6306 .byte   102,15,58,223,202,4
 6307         call    .L131key_256a
 6308 .byte   102,15,58,223,200,4
 6309         call    .L130key_256b
 6310 .byte   102,15,58,223,202,8
 6311         call    .L131key_256a
 6312 .byte   102,15,58,223,200,8
 6313         call    .L130key_256b
 6314 .byte   102,15,58,223,202,16
 6315         call    .L131key_256a
 6316 .byte   102,15,58,223,200,16
 6317         call    .L130key_256b
 6318 .byte   102,15,58,223,202,32
 6319         call    .L131key_256a
 6320 .byte   102,15,58,223,200,32
 6321         call    .L130key_256b
 6322 .byte   102,15,58,223,202,64
 6323         call    .L131key_256a
 6324         movups  %xmm0,(%edx)
 6325         movl    %ecx,16(%edx)
 6326         xorl    %eax,%eax
 6327         jmp     .L120good_key
 6328 .align  16
 6329 .L131key_256a:
 6330         movups  %xmm2,(%edx)
 6331         leal    16(%edx),%edx
 6332 .L129key_256a_cold:
 6333         shufps  $16,%xmm0,%xmm4
 6334         xorps   %xmm4,%xmm0
 6335         shufps  $140,%xmm0,%xmm4
 6336         xorps   %xmm4,%xmm0
 6337         shufps  $255,%xmm1,%xmm1
 6338         xorps   %xmm1,%xmm0
 6339         ret
 6340 .align  16
 6341 .L130key_256b:
 6342         movups  %xmm0,(%edx)
 6343         leal    16(%edx),%edx
 6344         shufps  $16,%xmm2,%xmm4
 6345         xorps   %xmm4,%xmm2
 6346         shufps  $140,%xmm2,%xmm4
 6347         xorps   %xmm4,%xmm2
 6348         shufps  $170,%xmm1,%xmm1
 6349         xorps   %xmm1,%xmm2
 6350         ret
 6351 .align  16
 6352 .L12814rounds_alt:
 6353         movdqa  (%ebx),%xmm5
 6354         movdqa  32(%ebx),%xmm4
 6355         movl    $7,%ecx
 6356         movdqu  %xmm0,-32(%edx)
 6357         movdqa  %xmm2,%xmm1
 6358         movdqu  %xmm2,-16(%edx)
 6359 .L132loop_key256:
 6360 .byte   102,15,56,0,213
 6361 .byte   102,15,56,221,212
 6362         movdqa  %xmm0,%xmm3
 6363         pslldq  $4,%xmm0
 6364         pxor    %xmm0,%xmm3
 6365         pslldq  $4,%xmm0
 6366         pxor    %xmm0,%xmm3
 6367         pslldq  $4,%xmm0
 6368         pxor    %xmm3,%xmm0
 6369         pslld   $1,%xmm4
 6370         pxor    %xmm2,%xmm0
 6371         movdqu  %xmm0,(%edx)
 6372         decl    %ecx
 6373         jz      .L133done_key256
 6374         pshufd  $255,%xmm0,%xmm2
 6375         pxor    %xmm3,%xmm3
 6376 .byte   102,15,56,221,211
 6377         movdqa  %xmm1,%xmm3
 6378         pslldq  $4,%xmm1
 6379         pxor    %xmm1,%xmm3
 6380         pslldq  $4,%xmm1
 6381         pxor    %xmm1,%xmm3
 6382         pslldq  $4,%xmm1
 6383         pxor    %xmm3,%xmm1
 6384         pxor    %xmm1,%xmm2
 6385         movdqu  %xmm2,16(%edx)
 6386         leal    32(%edx),%edx
 6387         movdqa  %xmm2,%xmm1
 6388         jmp     .L132loop_key256
 6389 .L133done_key256:
 6390         movl    $13,%ecx
 6391         movl    %ecx,16(%edx)
 6392 .L120good_key:
 6393         pxor    %xmm0,%xmm0
 6394         pxor    %xmm1,%xmm1
 6395         pxor    %xmm2,%xmm2
 6396         pxor    %xmm3,%xmm3
 6397         pxor    %xmm4,%xmm4
 6398         pxor    %xmm5,%xmm5
 6399         xorl    %eax,%eax
 6400         popl    %ebx
 6401         popl    %ebp
 6402         ret
 6403 .align  4
 6404 .L111bad_pointer:
 6405         movl    $-1,%eax
 6406         popl    %ebx
 6407         popl    %ebp
 6408         ret
 6409 .align  4
 6410 .L115bad_keybits:
 6411         pxor    %xmm0,%xmm0
 6412         movl    $-2,%eax
 6413         popl    %ebx
 6414         popl    %ebp
 6415         ret
 6416 .size   _aesni_set_encrypt_key,.-_aesni_set_encrypt_key
 6417 .globl  aesni_set_encrypt_key
 6418 .type   aesni_set_encrypt_key,@function
 6419 .align  16
 6420 aesni_set_encrypt_key:
 6421 .L_aesni_set_encrypt_key_begin:
 6422         movl    4(%esp),%eax
 6423         movl    8(%esp),%ecx
 6424         movl    12(%esp),%edx
 6425         call    _aesni_set_encrypt_key
 6426         ret
 6427 .size   aesni_set_encrypt_key,.-.L_aesni_set_encrypt_key_begin
 6428 .globl  aesni_set_decrypt_key
 6429 .type   aesni_set_decrypt_key,@function
 6430 .align  16
 6431 aesni_set_decrypt_key:
 6432 .L_aesni_set_decrypt_key_begin:
 6433         movl    4(%esp),%eax
 6434         movl    8(%esp),%ecx
 6435         movl    12(%esp),%edx
 6436         call    _aesni_set_encrypt_key
 6437         movl    12(%esp),%edx
 6438         shll    $4,%ecx
 6439         testl   %eax,%eax
 6440         jnz     .L134dec_key_ret
 6441         leal    16(%edx,%ecx,1),%eax
 6442         movups  (%edx),%xmm0
 6443         movups  (%eax),%xmm1
 6444         movups  %xmm0,(%eax)
 6445         movups  %xmm1,(%edx)
 6446         leal    16(%edx),%edx
 6447         leal    -16(%eax),%eax
 6448 .L135dec_key_inverse:
 6449         movups  (%edx),%xmm0
 6450         movups  (%eax),%xmm1
 6451 .byte   102,15,56,219,192
 6452 .byte   102,15,56,219,201
 6453         leal    16(%edx),%edx
 6454         leal    -16(%eax),%eax
 6455         movups  %xmm0,16(%eax)
 6456         movups  %xmm1,-16(%edx)
 6457         cmpl    %edx,%eax
 6458         ja      .L135dec_key_inverse
 6459         movups  (%edx),%xmm0
 6460 .byte   102,15,56,219,192
 6461         movups  %xmm0,(%edx)
 6462         pxor    %xmm0,%xmm0
 6463         pxor    %xmm1,%xmm1
 6464         xorl    %eax,%eax
 6465 .L134dec_key_ret:
 6466         ret
 6467 .size   aesni_set_decrypt_key,.-.L_aesni_set_decrypt_key_begin
 6468 .align  64
 6469 .Lkey_const:
 6470 .long   202313229,202313229,202313229,202313229
 6471 .long   67569157,67569157,67569157,67569157
 6472 .long   1,1,1,1
 6473 .long   27,27,27,27
 6474 .byte   65,69,83,32,102,111,114,32,73,110,116,101,108,32,65,69
 6475 .byte   83,45,78,73,44,32,67,82,89,80,84,79,71,65,77,83
 6476 .byte   32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115
 6477 .byte   115,108,46,111,114,103,62,0
 6478 .comm   OPENSSL_ia32cap_P,16,4
 6479 #endif

Cache object: 8cb14723e282d7a5c6f5c70c6de3ba2d


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.