Path: blob/main/sys/crypto/openssl/powerpc64/aes-gcm-ppc.S
39482 views
/* Do not modify. This file is auto-generated from aes-gcm-ppc.pl. */1.machine "any"2.abiversion 23.text456789.macro .Loop_aes_middle4x10xxlor 19+32, 1, 111xxlor 20+32, 2, 212xxlor 21+32, 3, 313xxlor 22+32, 4, 41415.long 0x11EF9D0816.long 0x12109D0817.long 0x12319D0818.long 0x12529D081920.long 0x11EFA50821.long 0x1210A50822.long 0x1231A50823.long 0x1252A5082425.long 0x11EFAD0826.long 0x1210AD0827.long 0x1231AD0828.long 0x1252AD082930.long 0x11EFB50831.long 0x1210B50832.long 0x1231B50833.long 0x1252B5083435xxlor 19+32, 5, 536xxlor 20+32, 6, 637xxlor 21+32, 7, 738xxlor 22+32, 8, 83940.long 0x11EF9D0841.long 0x12109D0842.long 0x12319D0843.long 0x12529D084445.long 0x11EFA50846.long 0x1210A50847.long 0x1231A50848.long 0x1252A5084950.long 0x11EFAD0851.long 0x1210AD0852.long 0x1231AD0853.long 0x1252AD085455.long 0x11EFB50856.long 0x1210B50857.long 0x1231B50858.long 0x1252B5085960xxlor 23+32, 9, 961.long 0x11EFBD0862.long 0x1210BD0863.long 0x1231BD0864.long 0x1252BD0865.endm666768697071.macro .Loop_aes_middle8x72xxlor 23+32, 1, 173xxlor 24+32, 2, 274xxlor 25+32, 3, 375xxlor 26+32, 4, 47677.long 0x11EFBD0878.long 0x1210BD0879.long 0x1231BD0880.long 0x1252BD0881.long 0x1273BD0882.long 0x1294BD0883.long 0x12B5BD0884.long 0x12D6BD088586.long 0x11EFC50887.long 0x1210C50888.long 0x1231C50889.long 0x1252C50890.long 0x1273C50891.long 0x1294C50892.long 0x12B5C50893.long 0x12D6C5089495.long 0x11EFCD0896.long 0x1210CD0897.long 0x1231CD0898.long 0x1252CD0899.long 0x1273CD08100.long 0x1294CD08101.long 0x12B5CD08102.long 0x12D6CD08103104.long 0x11EFD508105.long 0x1210D508106.long 0x1231D508107.long 0x1252D508108.long 0x1273D508109.long 0x1294D508110.long 0x12B5D508111.long 0x12D6D508112113xxlor 23+32, 5, 5114xxlor 24+32, 6, 6115xxlor 25+32, 7, 7116xxlor 26+32, 8, 8117118.long 0x11EFBD08119.long 0x1210BD08120.long 0x1231BD08121.long 0x1252BD08122.long 0x1273BD08123.long 0x1294BD08124.long 0x12B5BD08125.long 0x12D6BD08126127.long 0x11EFC508128.long 0x1210C508129.long 0x1231C508130.long 0x1252C508131.long 0x1273C508132.long 0x1294C508133.long 0x12B5C508134.long 0x12D6C508135136.long 0x11EFCD08137.long 0x1210CD08138.long 0x1231CD08139.long 0x1252CD08140.long 0x1273CD08141.long 0x1294CD08142.long 0x12B5CD08143.long 0x12D6CD08144145.long 0x11EFD508146.long 0x1210D508147.long 0x1231D508148.long 0x1252D508149.long 0x1273D508150.long 0x1294D508151.long 0x12B5D508152.long 0x12D6D508153154xxlor 23+32, 9, 9155.long 0x11EFBD08156.long 0x1210BD08157.long 0x1231BD08158.long 0x1252BD08159.long 0x1273BD08160.long 0x1294BD08161.long 0x12B5BD08162.long 0x12D6BD08163.endm164165166167168ppc_aes_gcm_ghash:169vxor 15, 15, 0170171xxlxor 29, 29, 29172173.long 0x12EC7CC8174.long 0x130984C8175.long 0x13268CC8176.long 0x134394C8177178vxor 23, 23, 24179vxor 23, 23, 25180vxor 23, 23, 26181182.long 0x130D7CC8183.long 0x132A84C8184.long 0x13478CC8185.long 0x136494C8186187vxor 24, 24, 25188vxor 24, 24, 26189vxor 24, 24, 27190191192.long 0x139714C8193194xxlor 29+32, 29, 29195vsldoi 26, 24, 29, 8196vsldoi 29, 29, 24, 8197vxor 23, 23, 26198199vsldoi 23, 23, 23, 8200vxor 23, 23, 28201202.long 0x130E7CC8203.long 0x132B84C8204.long 0x13488CC8205.long 0x136594C8206207vxor 24, 24, 25208vxor 24, 24, 26209vxor 24, 24, 27210211vxor 24, 24, 29212213214vsldoi 27, 23, 23, 8215.long 0x12F714C8216vxor 27, 27, 24217vxor 23, 23, 27218219xxlor 32, 23+32, 23+32220221blr222223224225226227.macro ppc_aes_gcm_ghash2_4x228229vxor 15, 15, 0230231xxlxor 29, 29, 29232233.long 0x12EC7CC8234.long 0x130984C8235.long 0x13268CC8236.long 0x134394C8237238vxor 23, 23, 24239vxor 23, 23, 25240vxor 23, 23, 26241242.long 0x130D7CC8243.long 0x132A84C8244.long 0x13478CC8245.long 0x136494C8246247vxor 24, 24, 25248vxor 24, 24, 26249250251.long 0x139714C8252253xxlor 29+32, 29, 29254255vxor 24, 24, 27256vsldoi 26, 24, 29, 8257vsldoi 29, 29, 24, 8258vxor 23, 23, 26259260vsldoi 23, 23, 23, 8261vxor 23, 23, 28262263.long 0x130E7CC8264.long 0x132B84C8265.long 0x13488CC8266.long 0x136594C8267268vxor 24, 24, 25269vxor 24, 24, 26270vxor 24, 24, 27271272vxor 24, 24, 29273274275vsldoi 27, 23, 23, 8276.long 0x12F714C8277vxor 27, 27, 24278vxor 27, 23, 27279280281.long 0x1309A4C8282.long 0x1326ACC8283.long 0x1343B4C8284vxor 19, 19, 27285.long 0x12EC9CC8286287vxor 23, 23, 24288vxor 23, 23, 25289vxor 23, 23, 26290291.long 0x130D9CC8292.long 0x132AA4C8293.long 0x1347ACC8294.long 0x1364B4C8295296vxor 24, 24, 25297vxor 24, 24, 26298299300.long 0x139714C8301302xxlor 29+32, 29, 29303304vxor 24, 24, 27305vsldoi 26, 24, 29, 8306vsldoi 29, 29, 24, 8307vxor 23, 23, 26308309vsldoi 23, 23, 23, 8310vxor 23, 23, 28311312.long 0x130E9CC8313.long 0x132BA4C8314.long 0x1348ACC8315.long 0x1365B4C8316317vxor 24, 24, 25318vxor 24, 24, 26319vxor 24, 24, 27320321vxor 24, 24, 29322323324vsldoi 27, 23, 23, 8325.long 0x12F714C8326vxor 27, 27, 24327vxor 23, 23, 27328329xxlor 32, 23+32, 23+32330331.endm332333334335336.macro ppc_update_hash_1x337vxor 28, 28, 0338339vxor 19, 19, 19340341.long 0x12C3E4C8342.long 0x12E4E4C8343.long 0x1305E4C8344345.long 0x137614C8346347vsldoi 25, 23, 19, 8348vsldoi 26, 19, 23, 8349vxor 22, 22, 25350vxor 24, 24, 26351352vsldoi 22, 22, 22, 8353vxor 22, 22, 27354355vsldoi 20, 22, 22, 8356.long 0x12D614C8357vxor 20, 20, 24358vxor 22, 22, 20359360vor 0,22,22361362.endm363364365366367368369370371372373374375376.global ppc_aes_gcm_encrypt377.align 5378ppc_aes_gcm_encrypt:379_ppc_aes_gcm_encrypt:380381stdu 1,-512(1)382mflr 0383384std 14,112(1)385std 15,120(1)386std 16,128(1)387std 17,136(1)388std 18,144(1)389std 19,152(1)390std 20,160(1)391std 21,168(1)392li 9, 256393stvx 20, 9, 1394addi 9, 9, 16395stvx 21, 9, 1396addi 9, 9, 16397stvx 22, 9, 1398addi 9, 9, 16399stvx 23, 9, 1400addi 9, 9, 16401stvx 24, 9, 1402addi 9, 9, 16403stvx 25, 9, 1404addi 9, 9, 16405stvx 26, 9, 1406addi 9, 9, 16407stvx 27, 9, 1408addi 9, 9, 16409stvx 28, 9, 1410addi 9, 9, 16411stvx 29, 9, 1412addi 9, 9, 16413stvx 30, 9, 1414addi 9, 9, 16415stvx 31, 9, 1416std 0, 528(1)417418419lxvb16x 32, 0, 8420421422li 10, 32423lxvd2x 2+32, 10, 8424li 10, 48425lxvd2x 3+32, 10, 8426li 10, 64427lxvd2x 4+32, 10, 8428li 10, 80429lxvd2x 5+32, 10, 8430431li 10, 96432lxvd2x 6+32, 10, 8433li 10, 112434lxvd2x 7+32, 10, 8435li 10, 128436lxvd2x 8+32, 10, 8437438li 10, 144439lxvd2x 9+32, 10, 8440li 10, 160441lxvd2x 10+32, 10, 8442li 10, 176443lxvd2x 11+32, 10, 8444445li 10, 192446lxvd2x 12+32, 10, 8447li 10, 208448lxvd2x 13+32, 10, 8449li 10, 224450lxvd2x 14+32, 10, 8451452453lxvb16x 30+32, 0, 7454455mr 12, 5456li 11, 0457458459vxor 31, 31, 31460vspltisb 22,1461vsldoi 31, 31, 22,1462463464lxv 0, 0(6)465lxv 1, 0x10(6)466lxv 2, 0x20(6)467lxv 3, 0x30(6)468lxv 4, 0x40(6)469lxv 5, 0x50(6)470lxv 6, 0x60(6)471lxv 7, 0x70(6)472lxv 8, 0x80(6)473lxv 9, 0x90(6)474lxv 10, 0xa0(6)475476477lwz 9,240(6)478479480481xxlor 32+29, 0, 0482vxor 15, 30, 29483484cmpdi 9, 10485beq .Loop_aes_gcm_8x486487488lxv 11, 0xb0(6)489lxv 12, 0xc0(6)490491cmpdi 9, 12492beq .Loop_aes_gcm_8x493494495lxv 13, 0xd0(6)496lxv 14, 0xe0(6)497cmpdi 9, 14498beq .Loop_aes_gcm_8x499500b aes_gcm_out501502.align 5503.Loop_aes_gcm_8x:504mr 14, 3505mr 9, 4506507508li 10, 128509divdu 10, 5, 10510cmpdi 10, 0511beq .Loop_last_block512513.long 0x13DEF8C0514vxor 16, 30, 29515.long 0x13DEF8C0516vxor 17, 30, 29517.long 0x13DEF8C0518vxor 18, 30, 29519.long 0x13DEF8C0520vxor 19, 30, 29521.long 0x13DEF8C0522vxor 20, 30, 29523.long 0x13DEF8C0524vxor 21, 30, 29525.long 0x13DEF8C0526vxor 22, 30, 29527528mtctr 10529530li 15, 16531li 16, 32532li 17, 48533li 18, 64534li 19, 80535li 20, 96536li 21, 112537538lwz 10, 240(6)539540.Loop_8x_block:541542lxvb16x 15, 0, 14543lxvb16x 16, 15, 14544lxvb16x 17, 16, 14545lxvb16x 18, 17, 14546lxvb16x 19, 18, 14547lxvb16x 20, 19, 14548lxvb16x 21, 20, 14549lxvb16x 22, 21, 14550addi 14, 14, 128551552.Loop_aes_middle8x553554xxlor 23+32, 10, 10555556cmpdi 10, 10557beq Do_next_ghash558559560xxlor 24+32, 11, 11561562.long 0x11EFBD08563.long 0x1210BD08564.long 0x1231BD08565.long 0x1252BD08566.long 0x1273BD08567.long 0x1294BD08568.long 0x12B5BD08569.long 0x12D6BD08570571.long 0x11EFC508572.long 0x1210C508573.long 0x1231C508574.long 0x1252C508575.long 0x1273C508576.long 0x1294C508577.long 0x12B5C508578.long 0x12D6C508579580xxlor 23+32, 12, 12581582cmpdi 10, 12583beq Do_next_ghash584585586xxlor 24+32, 13, 13587588.long 0x11EFBD08589.long 0x1210BD08590.long 0x1231BD08591.long 0x1252BD08592.long 0x1273BD08593.long 0x1294BD08594.long 0x12B5BD08595.long 0x12D6BD08596597.long 0x11EFC508598.long 0x1210C508599.long 0x1231C508600.long 0x1252C508601.long 0x1273C508602.long 0x1294C508603.long 0x12B5C508604.long 0x12D6C508605606xxlor 23+32, 14, 14607608cmpdi 10, 14609beq Do_next_ghash610b aes_gcm_out611612Do_next_ghash:613614615616.long 0x11EFBD09617.long 0x1210BD09618619xxlxor 47, 47, 15620stxvb16x 47, 0, 9621xxlxor 48, 48, 16622stxvb16x 48, 15, 9623624.long 0x1231BD09625.long 0x1252BD09626627xxlxor 49, 49, 17628stxvb16x 49, 16, 9629xxlxor 50, 50, 18630stxvb16x 50, 17, 9631632.long 0x1273BD09633.long 0x1294BD09634635xxlxor 51, 51, 19636stxvb16x 51, 18, 9637xxlxor 52, 52, 20638stxvb16x 52, 19, 9639640.long 0x12B5BD09641.long 0x12D6BD09642643xxlxor 53, 53, 21644stxvb16x 53, 20, 9645xxlxor 54, 54, 22646stxvb16x 54, 21, 9647648addi 9, 9, 128649650651ppc_aes_gcm_ghash2_4x652653xxlor 27+32, 0, 0654.long 0x13DEF8C0655vor 29,30,30656vxor 15, 30, 27657.long 0x13DEF8C0658vxor 16, 30, 27659.long 0x13DEF8C0660vxor 17, 30, 27661.long 0x13DEF8C0662vxor 18, 30, 27663.long 0x13DEF8C0664vxor 19, 30, 27665.long 0x13DEF8C0666vxor 20, 30, 27667.long 0x13DEF8C0668vxor 21, 30, 27669.long 0x13DEF8C0670vxor 22, 30, 27671672addi 12, 12, -128673addi 11, 11, 128674675bdnz .Loop_8x_block676677vor 30,29,29678679.Loop_last_block:680cmpdi 12, 0681beq aes_gcm_out682683684li 10, 16685divdu 10, 12, 10686687mtctr 10688689lwz 10, 240(6)690691cmpdi 12, 16692blt Final_block693694.macro .Loop_aes_middle_1x695xxlor 19+32, 1, 1696xxlor 20+32, 2, 2697xxlor 21+32, 3, 3698xxlor 22+32, 4, 4699700.long 0x11EF9D08701.long 0x11EFA508702.long 0x11EFAD08703.long 0x11EFB508704705xxlor 19+32, 5, 5706xxlor 20+32, 6, 6707xxlor 21+32, 7, 7708xxlor 22+32, 8, 8709710.long 0x11EF9D08711.long 0x11EFA508712.long 0x11EFAD08713.long 0x11EFB508714715xxlor 19+32, 9, 9716.long 0x11EF9D08717.endm718719Next_rem_block:720lxvb16x 15, 0, 14721722.Loop_aes_middle_1x723724xxlor 23+32, 10, 10725726cmpdi 10, 10727beq Do_next_1x728729730xxlor 24+32, 11, 11731732.long 0x11EFBD08733.long 0x11EFC508734735xxlor 23+32, 12, 12736737cmpdi 10, 12738beq Do_next_1x739740741xxlor 24+32, 13, 13742743.long 0x11EFBD08744.long 0x11EFC508745746xxlor 23+32, 14, 14747748cmpdi 10, 14749beq Do_next_1x750751Do_next_1x:752.long 0x11EFBD09753754xxlxor 47, 47, 15755stxvb16x 47, 0, 9756addi 14, 14, 16757addi 9, 9, 16758759vor 28,15,15760ppc_update_hash_1x761762addi 12, 12, -16763addi 11, 11, 16764xxlor 19+32, 0, 0765.long 0x13DEF8C0766vxor 15, 30, 19767768bdnz Next_rem_block769770cmpdi 12, 0771beq aes_gcm_out772773Final_block:774.Loop_aes_middle_1x775776xxlor 23+32, 10, 10777778cmpdi 10, 10779beq Do_final_1x780781782xxlor 24+32, 11, 11783784.long 0x11EFBD08785.long 0x11EFC508786787xxlor 23+32, 12, 12788789cmpdi 10, 12790beq Do_final_1x791792793xxlor 24+32, 13, 13794795.long 0x11EFBD08796.long 0x11EFC508797798xxlor 23+32, 14, 14799800cmpdi 10, 14801beq Do_final_1x802803Do_final_1x:804.long 0x11EFBD09805806lxvb16x 15, 0, 14807xxlxor 47, 47, 15808809810li 15, 16811sub 15, 15, 12812813vspltisb 16,-1814vspltisb 17,0815li 10, 192816stvx 16, 10, 1817addi 10, 10, 16818stvx 17, 10, 1819820addi 10, 1, 192821lxvb16x 16, 15, 10822xxland 47, 47, 16823824vor 28,15,15825ppc_update_hash_1x826827828bl Write_partial_block829830b aes_gcm_out831832833834835836837838Write_partial_block:839li 10, 192840stxvb16x 15+32, 10, 1841842843addi 10, 9, -1844addi 16, 1, 191845846mtctr 12847li 15, 0848849Write_last_byte:850lbzu 14, 1(16)851stbu 14, 1(10)852bdnz Write_last_byte853blr854855aes_gcm_out:856857stxvb16x 32, 0, 8858add 3, 11, 12859860li 9, 256861lvx 20, 9, 1862addi 9, 9, 16863lvx 21, 9, 1864addi 9, 9, 16865lvx 22, 9, 1866addi 9, 9, 16867lvx 23, 9, 1868addi 9, 9, 16869lvx 24, 9, 1870addi 9, 9, 16871lvx 25, 9, 1872addi 9, 9, 16873lvx 26, 9, 1874addi 9, 9, 16875lvx 27, 9, 1876addi 9, 9, 16877lvx 28, 9, 1878addi 9, 9, 16879lvx 29, 9, 1880addi 9, 9, 16881lvx 30, 9, 1882addi 9, 9, 16883lvx 31, 9, 1884885ld 0, 528(1)886ld 14,112(1)887ld 15,120(1)888ld 16,128(1)889ld 17,136(1)890ld 18,144(1)891ld 19,152(1)892ld 20,160(1)893ld 21,168(1)894895mtlr 0896addi 1, 1, 512897blr898899900901902.global ppc_aes_gcm_decrypt903.align 5904ppc_aes_gcm_decrypt:905_ppc_aes_gcm_decrypt:906907stdu 1,-512(1)908mflr 0909910std 14,112(1)911std 15,120(1)912std 16,128(1)913std 17,136(1)914std 18,144(1)915std 19,152(1)916std 20,160(1)917std 21,168(1)918li 9, 256919stvx 20, 9, 1920addi 9, 9, 16921stvx 21, 9, 1922addi 9, 9, 16923stvx 22, 9, 1924addi 9, 9, 16925stvx 23, 9, 1926addi 9, 9, 16927stvx 24, 9, 1928addi 9, 9, 16929stvx 25, 9, 1930addi 9, 9, 16931stvx 26, 9, 1932addi 9, 9, 16933stvx 27, 9, 1934addi 9, 9, 16935stvx 28, 9, 1936addi 9, 9, 16937stvx 29, 9, 1938addi 9, 9, 16939stvx 30, 9, 1940addi 9, 9, 16941stvx 31, 9, 1942std 0, 528(1)943944945lxvb16x 32, 0, 8946947948li 10, 32949lxvd2x 2+32, 10, 8950li 10, 48951lxvd2x 3+32, 10, 8952li 10, 64953lxvd2x 4+32, 10, 8954li 10, 80955lxvd2x 5+32, 10, 8956957li 10, 96958lxvd2x 6+32, 10, 8959li 10, 112960lxvd2x 7+32, 10, 8961li 10, 128962lxvd2x 8+32, 10, 8963964li 10, 144965lxvd2x 9+32, 10, 8966li 10, 160967lxvd2x 10+32, 10, 8968li 10, 176969lxvd2x 11+32, 10, 8970971li 10, 192972lxvd2x 12+32, 10, 8973li 10, 208974lxvd2x 13+32, 10, 8975li 10, 224976lxvd2x 14+32, 10, 8977978979lxvb16x 30+32, 0, 7980981mr 12, 5982li 11, 0983984985vxor 31, 31, 31986vspltisb 22,1987vsldoi 31, 31, 22,1988989990lxv 0, 0(6)991lxv 1, 0x10(6)992lxv 2, 0x20(6)993lxv 3, 0x30(6)994lxv 4, 0x40(6)995lxv 5, 0x50(6)996lxv 6, 0x60(6)997lxv 7, 0x70(6)998lxv 8, 0x80(6)999lxv 9, 0x90(6)1000lxv 10, 0xa0(6)100110021003lwz 9,240(6)1004100510061007xxlor 32+29, 0, 01008vxor 15, 30, 2910091010cmpdi 9, 101011beq .Loop_aes_gcm_8x_dec101210131014lxv 11, 0xb0(6)1015lxv 12, 0xc0(6)10161017cmpdi 9, 121018beq .Loop_aes_gcm_8x_dec101910201021lxv 13, 0xd0(6)1022lxv 14, 0xe0(6)1023cmpdi 9, 141024beq .Loop_aes_gcm_8x_dec10251026b aes_gcm_out10271028.align 51029.Loop_aes_gcm_8x_dec:1030mr 14, 31031mr 9, 4103210331034li 10, 1281035divdu 10, 5, 101036cmpdi 10, 01037beq .Loop_last_block_dec10381039.long 0x13DEF8C01040vxor 16, 30, 291041.long 0x13DEF8C01042vxor 17, 30, 291043.long 0x13DEF8C01044vxor 18, 30, 291045.long 0x13DEF8C01046vxor 19, 30, 291047.long 0x13DEF8C01048vxor 20, 30, 291049.long 0x13DEF8C01050vxor 21, 30, 291051.long 0x13DEF8C01052vxor 22, 30, 2910531054mtctr 1010551056li 15, 161057li 16, 321058li 17, 481059li 18, 641060li 19, 801061li 20, 961062li 21, 11210631064lwz 10, 240(6)10651066.Loop_8x_block_dec:10671068lxvb16x 15, 0, 141069lxvb16x 16, 15, 141070lxvb16x 17, 16, 141071lxvb16x 18, 17, 141072lxvb16x 19, 18, 141073lxvb16x 20, 19, 141074lxvb16x 21, 20, 141075lxvb16x 22, 21, 141076addi 14, 14, 12810771078.Loop_aes_middle8x10791080xxlor 23+32, 10, 1010811082cmpdi 10, 101083beq Do_last_aes_dec108410851086xxlor 24+32, 11, 1110871088.long 0x11EFBD081089.long 0x1210BD081090.long 0x1231BD081091.long 0x1252BD081092.long 0x1273BD081093.long 0x1294BD081094.long 0x12B5BD081095.long 0x12D6BD0810961097.long 0x11EFC5081098.long 0x1210C5081099.long 0x1231C5081100.long 0x1252C5081101.long 0x1273C5081102.long 0x1294C5081103.long 0x12B5C5081104.long 0x12D6C50811051106xxlor 23+32, 12, 1211071108cmpdi 10, 121109beq Do_last_aes_dec111011111112xxlor 24+32, 13, 1311131114.long 0x11EFBD081115.long 0x1210BD081116.long 0x1231BD081117.long 0x1252BD081118.long 0x1273BD081119.long 0x1294BD081120.long 0x12B5BD081121.long 0x12D6BD0811221123.long 0x11EFC5081124.long 0x1210C5081125.long 0x1231C5081126.long 0x1252C5081127.long 0x1273C5081128.long 0x1294C5081129.long 0x12B5C5081130.long 0x12D6C50811311132xxlor 23+32, 14, 1411331134cmpdi 10, 141135beq Do_last_aes_dec1136b aes_gcm_out11371138Do_last_aes_dec:1139114011411142.long 0x11EFBD091143.long 0x1210BD0911441145xxlxor 47, 47, 151146stxvb16x 47, 0, 91147xxlxor 48, 48, 161148stxvb16x 48, 15, 911491150.long 0x1231BD091151.long 0x1252BD0911521153xxlxor 49, 49, 171154stxvb16x 49, 16, 91155xxlxor 50, 50, 181156stxvb16x 50, 17, 911571158.long 0x1273BD091159.long 0x1294BD0911601161xxlxor 51, 51, 191162stxvb16x 51, 18, 91163xxlxor 52, 52, 201164stxvb16x 52, 19, 911651166.long 0x12B5BD091167.long 0x12D6BD0911681169xxlxor 53, 53, 211170stxvb16x 53, 20, 91171xxlxor 54, 54, 221172stxvb16x 54, 21, 911731174addi 9, 9, 12811751176xxlor 15+32, 15, 151177xxlor 16+32, 16, 161178xxlor 17+32, 17, 171179xxlor 18+32, 18, 181180xxlor 19+32, 19, 191181xxlor 20+32, 20, 201182xxlor 21+32, 21, 211183xxlor 22+32, 22, 22118411851186ppc_aes_gcm_ghash2_4x11871188xxlor 27+32, 0, 01189.long 0x13DEF8C01190vor 29,30,301191vxor 15, 30, 271192.long 0x13DEF8C01193vxor 16, 30, 271194.long 0x13DEF8C01195vxor 17, 30, 271196.long 0x13DEF8C01197vxor 18, 30, 271198.long 0x13DEF8C01199vxor 19, 30, 271200.long 0x13DEF8C01201vxor 20, 30, 271202.long 0x13DEF8C01203vxor 21, 30, 271204.long 0x13DEF8C01205vxor 22, 30, 271206addi 12, 12, -1281207addi 11, 11, 12812081209bdnz .Loop_8x_block_dec12101211vor 30,29,2912121213.Loop_last_block_dec:1214cmpdi 12, 01215beq aes_gcm_out121612171218li 10, 161219divdu 10, 12, 1012201221mtctr 1012221223lwz 10,240(6)12241225cmpdi 12, 161226blt Final_block_dec12271228Next_rem_block_dec:1229lxvb16x 15, 0, 1412301231.Loop_aes_middle_1x12321233xxlor 23+32, 10, 1012341235cmpdi 10, 101236beq Do_next_1x_dec123712381239xxlor 24+32, 11, 1112401241.long 0x11EFBD081242.long 0x11EFC50812431244xxlor 23+32, 12, 1212451246cmpdi 10, 121247beq Do_next_1x_dec124812491250xxlor 24+32, 13, 1312511252.long 0x11EFBD081253.long 0x11EFC50812541255xxlor 23+32, 14, 1412561257cmpdi 10, 141258beq Do_next_1x_dec12591260Do_next_1x_dec:1261.long 0x11EFBD0912621263xxlxor 47, 47, 151264stxvb16x 47, 0, 91265addi 14, 14, 161266addi 9, 9, 1612671268xxlor 28+32, 15, 151269ppc_update_hash_1x12701271addi 12, 12, -161272addi 11, 11, 161273xxlor 19+32, 0, 01274.long 0x13DEF8C01275vxor 15, 30, 1912761277bdnz Next_rem_block_dec12781279cmpdi 12, 01280beq aes_gcm_out12811282Final_block_dec:1283.Loop_aes_middle_1x12841285xxlor 23+32, 10, 1012861287cmpdi 10, 101288beq Do_final_1x_dec128912901291xxlor 24+32, 11, 1112921293.long 0x11EFBD081294.long 0x11EFC50812951296xxlor 23+32, 12, 1212971298cmpdi 10, 121299beq Do_final_1x_dec130013011302xxlor 24+32, 13, 1313031304.long 0x11EFBD081305.long 0x11EFC50813061307xxlor 23+32, 14, 1413081309cmpdi 10, 141310beq Do_final_1x_dec13111312Do_final_1x_dec:1313.long 0x11EFBD0913141315lxvb16x 15, 0, 141316xxlxor 47, 47, 15131713181319li 15, 161320sub 15, 15, 1213211322vspltisb 16,-11323vspltisb 17,01324li 10, 1921325stvx 16, 10, 11326addi 10, 10, 161327stvx 17, 10, 113281329addi 10, 1, 1921330lxvb16x 16, 15, 101331xxland 47, 47, 1613321333xxlor 28+32, 15, 151334ppc_update_hash_1x133513361337bl Write_partial_block13381339b aes_gcm_out134013411342