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

Cache object: 7e72c83ce51dff154ab21df6f96ce5c3


[ 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.