Path: blob/main/sys/crypto/openssl/powerpc/aesp8-ppc.S
39483 views
/* Do not modify. This file is auto-generated from aesp8-ppc.pl. */1.machine "any"23.text45.align 76rcon:7.byte 0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x008.byte 0x1b,0x00,0x00,0x00,0x1b,0x00,0x00,0x00,0x1b,0x00,0x00,0x00,0x1b,0x00,0x00,0x009.byte 0x0d,0x0e,0x0f,0x0c,0x0d,0x0e,0x0f,0x0c,0x0d,0x0e,0x0f,0x0c,0x0d,0x0e,0x0f,0x0c10.byte 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0011.long 0x0f102132, 0x43546576, 0x8798a9ba, 0xcbdcedfe12.Lconsts:13mflr 014bcl 20,31,$+415mflr 616addi 6,6,-0x5817mtlr 018blr19.long 020.byte 0,12,0x14,0,0,0,0,021.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,022.align 22324.globl aes_p8_set_encrypt_key25.type aes_p8_set_encrypt_key,@function26.align 527aes_p8_set_encrypt_key:28.Lset_encrypt_key:29mflr 1130stw 11,4(1)3132li 6,-133cmplwi 3,034beq- .Lenc_key_abort35cmplwi 5,036beq- .Lenc_key_abort37li 6,-238cmpwi 4,12839blt- .Lenc_key_abort40cmpwi 4,25641bgt- .Lenc_key_abort42andi. 0,4,0x3f43bne- .Lenc_key_abort4445lis 0,0xfff046mfspr 12,25647mtspr 256,04849bl .Lconsts50mtlr 115152neg 9,353lvx 1,0,354addi 3,3,1555lvsr 3,0,956li 8,0x2057cmpwi 4,19258lvx 2,0,35960lvx 4,0,66162lvx 5,8,663addi 6,6,0x1064vperm 1,1,2,365li 7,866vxor 0,0,067mtctr 76869lvsr 8,0,570vspltisb 9,-171lvx 10,0,572vperm 9,0,9,87374blt .Loop12875addi 3,3,876beq .L19277addi 3,3,878b .L2567980.align 481.Loop128:82vperm 3,1,1,583vsldoi 6,0,1,1284vperm 11,1,1,885vsel 7,10,11,986vor 10,11,1187.long 0x1063250988stvx 7,0,589addi 5,5,169091vxor 1,1,692vsldoi 6,0,6,1293vxor 1,1,694vsldoi 6,0,6,1295vxor 1,1,696vadduwm 4,4,497vxor 1,1,398bdnz .Loop12899100lvx 4,0,6101102vperm 3,1,1,5103vsldoi 6,0,1,12104vperm 11,1,1,8105vsel 7,10,11,9106vor 10,11,11107.long 0x10632509108stvx 7,0,5109addi 5,5,16110111vxor 1,1,6112vsldoi 6,0,6,12113vxor 1,1,6114vsldoi 6,0,6,12115vxor 1,1,6116vadduwm 4,4,4117vxor 1,1,3118119vperm 3,1,1,5120vsldoi 6,0,1,12121vperm 11,1,1,8122vsel 7,10,11,9123vor 10,11,11124.long 0x10632509125stvx 7,0,5126addi 5,5,16127128vxor 1,1,6129vsldoi 6,0,6,12130vxor 1,1,6131vsldoi 6,0,6,12132vxor 1,1,6133vxor 1,1,3134vperm 11,1,1,8135vsel 7,10,11,9136vor 10,11,11137stvx 7,0,5138139addi 3,5,15140addi 5,5,0x50141142li 8,10143b .Ldone144145.align 4146.L192:147lvx 6,0,3148li 7,4149vperm 11,1,1,8150vsel 7,10,11,9151vor 10,11,11152stvx 7,0,5153addi 5,5,16154vperm 2,2,6,3155vspltisb 3,8156mtctr 7157vsububm 5,5,3158159.Loop192:160vperm 3,2,2,5161vsldoi 6,0,1,12162.long 0x10632509163164vxor 1,1,6165vsldoi 6,0,6,12166vxor 1,1,6167vsldoi 6,0,6,12168vxor 1,1,6169170vsldoi 7,0,2,8171vspltw 6,1,3172vxor 6,6,2173vsldoi 2,0,2,12174vadduwm 4,4,4175vxor 2,2,6176vxor 1,1,3177vxor 2,2,3178vsldoi 7,7,1,8179180vperm 3,2,2,5181vsldoi 6,0,1,12182vperm 11,7,7,8183vsel 7,10,11,9184vor 10,11,11185.long 0x10632509186stvx 7,0,5187addi 5,5,16188189vsldoi 7,1,2,8190vxor 1,1,6191vsldoi 6,0,6,12192vperm 11,7,7,8193vsel 7,10,11,9194vor 10,11,11195vxor 1,1,6196vsldoi 6,0,6,12197vxor 1,1,6198stvx 7,0,5199addi 5,5,16200201vspltw 6,1,3202vxor 6,6,2203vsldoi 2,0,2,12204vadduwm 4,4,4205vxor 2,2,6206vxor 1,1,3207vxor 2,2,3208vperm 11,1,1,8209vsel 7,10,11,9210vor 10,11,11211stvx 7,0,5212addi 3,5,15213addi 5,5,16214bdnz .Loop192215216li 8,12217addi 5,5,0x20218b .Ldone219220.align 4221.L256:222lvx 6,0,3223li 7,7224li 8,14225vperm 11,1,1,8226vsel 7,10,11,9227vor 10,11,11228stvx 7,0,5229addi 5,5,16230vperm 2,2,6,3231mtctr 7232233.Loop256:234vperm 3,2,2,5235vsldoi 6,0,1,12236vperm 11,2,2,8237vsel 7,10,11,9238vor 10,11,11239.long 0x10632509240stvx 7,0,5241addi 5,5,16242243vxor 1,1,6244vsldoi 6,0,6,12245vxor 1,1,6246vsldoi 6,0,6,12247vxor 1,1,6248vadduwm 4,4,4249vxor 1,1,3250vperm 11,1,1,8251vsel 7,10,11,9252vor 10,11,11253stvx 7,0,5254addi 3,5,15255addi 5,5,16256bdz .Ldone257258vspltw 3,1,3259vsldoi 6,0,2,12260.long 0x106305C8261262vxor 2,2,6263vsldoi 6,0,6,12264vxor 2,2,6265vsldoi 6,0,6,12266vxor 2,2,6267268vxor 2,2,3269b .Loop256270271.align 4272.Ldone:273lvx 2,0,3274vsel 2,10,2,9275stvx 2,0,3276li 6,0277mtspr 256,12278stw 8,0(5)279280.Lenc_key_abort:281mr 3,6282blr283.long 0284.byte 0,12,0x14,1,0,0,3,0285.long 0286.size aes_p8_set_encrypt_key,.-aes_p8_set_encrypt_key287288.globl aes_p8_set_decrypt_key289.type aes_p8_set_decrypt_key,@function290.align 5291aes_p8_set_decrypt_key:292stwu 1,-32(1)293mflr 10294stw 10,32+4(1)295bl .Lset_encrypt_key296mtlr 10297298cmpwi 3,0299bne- .Ldec_key_abort300301slwi 7,8,4302subi 3,5,240303srwi 8,8,1304add 5,3,7305mtctr 8306307.Ldeckey:308lwz 0, 0(3)309lwz 6, 4(3)310lwz 7, 8(3)311lwz 8, 12(3)312addi 3,3,16313lwz 9, 0(5)314lwz 10,4(5)315lwz 11,8(5)316lwz 12,12(5)317stw 0, 0(5)318stw 6, 4(5)319stw 7, 8(5)320stw 8, 12(5)321subi 5,5,16322stw 9, -16(3)323stw 10,-12(3)324stw 11,-8(3)325stw 12,-4(3)326bdnz .Ldeckey327328xor 3,3,3329.Ldec_key_abort:330addi 1,1,32331blr332.long 0333.byte 0,12,4,1,0x80,0,3,0334.long 0335.size aes_p8_set_decrypt_key,.-aes_p8_set_decrypt_key336.globl aes_p8_encrypt337.type aes_p8_encrypt,@function338.align 5339aes_p8_encrypt:340lwz 6,240(5)341lis 0,0xfc00342mfspr 12,256343li 7,15344mtspr 256,0345346lvx 0,0,3347neg 11,4348lvx 1,7,3349lvsl 2,0,3350351lvsl 3,0,11352353li 7,16354vperm 0,0,1,2355lvx 1,0,5356lvsl 5,0,5357srwi 6,6,1358lvx 2,7,5359addi 7,7,16360subi 6,6,1361vperm 1,1,2,5362363vxor 0,0,1364lvx 1,7,5365addi 7,7,16366mtctr 6367368.Loop_enc:369vperm 2,2,1,5370.long 0x10001508371lvx 2,7,5372addi 7,7,16373vperm 1,1,2,5374.long 0x10000D08375lvx 1,7,5376addi 7,7,16377bdnz .Loop_enc378379vperm 2,2,1,5380.long 0x10001508381lvx 2,7,5382vperm 1,1,2,5383.long 0x10000D09384385vspltisb 2,-1386vxor 1,1,1387li 7,15388vperm 2,1,2,3389390lvx 1,0,4391vperm 0,0,0,3392vsel 1,1,0,2393lvx 4,7,4394stvx 1,0,4395vsel 0,0,4,2396stvx 0,7,4397398mtspr 256,12399blr400.long 0401.byte 0,12,0x14,0,0,0,3,0402.long 0403.size aes_p8_encrypt,.-aes_p8_encrypt404.globl aes_p8_decrypt405.type aes_p8_decrypt,@function406.align 5407aes_p8_decrypt:408lwz 6,240(5)409lis 0,0xfc00410mfspr 12,256411li 7,15412mtspr 256,0413414lvx 0,0,3415neg 11,4416lvx 1,7,3417lvsl 2,0,3418419lvsl 3,0,11420421li 7,16422vperm 0,0,1,2423lvx 1,0,5424lvsl 5,0,5425srwi 6,6,1426lvx 2,7,5427addi 7,7,16428subi 6,6,1429vperm 1,1,2,5430431vxor 0,0,1432lvx 1,7,5433addi 7,7,16434mtctr 6435436.Loop_dec:437vperm 2,2,1,5438.long 0x10001548439lvx 2,7,5440addi 7,7,16441vperm 1,1,2,5442.long 0x10000D48443lvx 1,7,5444addi 7,7,16445bdnz .Loop_dec446447vperm 2,2,1,5448.long 0x10001548449lvx 2,7,5450vperm 1,1,2,5451.long 0x10000D49452453vspltisb 2,-1454vxor 1,1,1455li 7,15456vperm 2,1,2,3457458lvx 1,0,4459vperm 0,0,0,3460vsel 1,1,0,2461lvx 4,7,4462stvx 1,0,4463vsel 0,0,4,2464stvx 0,7,4465466mtspr 256,12467blr468.long 0469.byte 0,12,0x14,0,0,0,3,0470.long 0471.size aes_p8_decrypt,.-aes_p8_decrypt472.globl aes_p8_cbc_encrypt473.type aes_p8_cbc_encrypt,@function474.align 5475aes_p8_cbc_encrypt:476cmplwi 5,16477.long 0x4dc00020478479cmpwi 8,0480lis 0,0xffe0481mfspr 12,256482mtspr 256,0483484li 10,15485vxor 0,0,0486487488lvx 4,0,7489lvsl 6,0,7490lvx 5,10,7491492vperm 4,4,5,6493494neg 11,3495lvsl 10,0,6496lwz 9,240(6)497498lvsr 6,0,11499lvx 5,0,3500addi 3,3,15501502503lvsr 8,0,4504vspltisb 9,-1505lvx 7,0,4506vperm 9,0,9,8507508509srwi 9,9,1510li 10,16511subi 9,9,1512beq .Lcbc_dec513514.Lcbc_enc:515vor 2,5,5516lvx 5,0,3517addi 3,3,16518mtctr 9519subi 5,5,16520521lvx 0,0,6522vperm 2,2,5,6523lvx 1,10,6524addi 10,10,16525vperm 0,0,1,10526vxor 2,2,0527lvx 0,10,6528addi 10,10,16529vxor 2,2,4530531.Loop_cbc_enc:532vperm 1,1,0,10533.long 0x10420D08534lvx 1,10,6535addi 10,10,16536vperm 0,0,1,10537.long 0x10420508538lvx 0,10,6539addi 10,10,16540bdnz .Loop_cbc_enc541542vperm 1,1,0,10543.long 0x10420D08544lvx 1,10,6545li 10,16546vperm 0,0,1,10547.long 0x10820509548cmplwi 5,16549550vperm 3,4,4,8551vsel 2,7,3,9552vor 7,3,3553stvx 2,0,4554addi 4,4,16555bge .Lcbc_enc556557b .Lcbc_done558559.align 4560.Lcbc_dec:561cmplwi 5,128562bge _aesp8_cbc_decrypt8x563vor 3,5,5564lvx 5,0,3565addi 3,3,16566mtctr 9567subi 5,5,16568569lvx 0,0,6570vperm 3,3,5,6571lvx 1,10,6572addi 10,10,16573vperm 0,0,1,10574vxor 2,3,0575lvx 0,10,6576addi 10,10,16577578.Loop_cbc_dec:579vperm 1,1,0,10580.long 0x10420D48581lvx 1,10,6582addi 10,10,16583vperm 0,0,1,10584.long 0x10420548585lvx 0,10,6586addi 10,10,16587bdnz .Loop_cbc_dec588589vperm 1,1,0,10590.long 0x10420D48591lvx 1,10,6592li 10,16593vperm 0,0,1,10594.long 0x10420549595cmplwi 5,16596597vxor 2,2,4598vor 4,3,3599vperm 3,2,2,8600vsel 2,7,3,9601vor 7,3,3602stvx 2,0,4603addi 4,4,16604bge .Lcbc_dec605606.Lcbc_done:607addi 4,4,-1608lvx 2,0,4609vsel 2,7,2,9610stvx 2,0,4611612neg 8,7613li 10,15614vxor 0,0,0615vspltisb 9,-1616617lvsl 8,0,8618vperm 9,0,9,8619620lvx 7,0,7621vperm 4,4,4,8622vsel 2,7,4,9623lvx 5,10,7624stvx 2,0,7625vsel 2,4,5,9626stvx 2,10,7627628mtspr 256,12629blr630.long 0631.byte 0,12,0x14,0,0,0,6,0632.long 0633.align 5634_aesp8_cbc_decrypt8x:635stwu 1,-392(1)636li 10,175637li 11,191638stvx 20,10,1639addi 10,10,32640stvx 21,11,1641addi 11,11,32642stvx 22,10,1643addi 10,10,32644stvx 23,11,1645addi 11,11,32646stvx 24,10,1647addi 10,10,32648stvx 25,11,1649addi 11,11,32650stvx 26,10,1651addi 10,10,32652stvx 27,11,1653addi 11,11,32654stvx 28,10,1655addi 10,10,32656stvx 29,11,1657addi 11,11,32658stvx 30,10,1659stvx 31,11,1660li 0,-1661stw 12,364(1)662li 8,0x10663stw 26,368(1)664li 26,0x20665stw 27,372(1)666li 27,0x30667stw 28,376(1)668li 28,0x40669stw 29,380(1)670li 29,0x50671stw 30,384(1)672li 30,0x60673stw 31,388(1)674li 31,0x70675mtspr 256,0676677subi 9,9,3678subi 5,5,128679680lvx 23,0,6681lvx 30,8,6682addi 6,6,0x20683lvx 31,0,6684vperm 23,23,30,10685addi 11,1,32+15686mtctr 9687688.Load_cbc_dec_key:689vperm 24,30,31,10690lvx 30,8,6691addi 6,6,0x20692stvx 24,0,11693vperm 25,31,30,10694lvx 31,0,6695stvx 25,8,11696addi 11,11,0x20697bdnz .Load_cbc_dec_key698699lvx 26,8,6700vperm 24,30,31,10701lvx 27,26,6702stvx 24,0,11703vperm 25,31,26,10704lvx 28,27,6705stvx 25,8,11706addi 11,1,32+15707vperm 26,26,27,10708lvx 29,28,6709vperm 27,27,28,10710lvx 30,29,6711vperm 28,28,29,10712lvx 31,30,6713vperm 29,29,30,10714lvx 14,31,6715vperm 30,30,31,10716lvx 24,0,11717vperm 31,31,14,10718lvx 25,8,11719720721722subi 3,3,15723724725.long 0x7C001E99726727728.long 0x7C281E99729730.long 0x7C5A1E99731732.long 0x7C7B1E99733734.long 0x7D5C1E99735736vxor 14,0,23737.long 0x7D7D1E99738739vxor 15,1,23740.long 0x7D9E1E99741742vxor 16,2,23743.long 0x7DBF1E99744addi 3,3,0x80745746vxor 17,3,23747748vxor 18,10,23749750vxor 19,11,23751vxor 20,12,23752vxor 21,13,23753754mtctr 9755b .Loop_cbc_dec8x756.align 5757.Loop_cbc_dec8x:758.long 0x11CEC548759.long 0x11EFC548760.long 0x1210C548761.long 0x1231C548762.long 0x1252C548763.long 0x1273C548764.long 0x1294C548765.long 0x12B5C548766lvx 24,26,11767addi 11,11,0x20768769.long 0x11CECD48770.long 0x11EFCD48771.long 0x1210CD48772.long 0x1231CD48773.long 0x1252CD48774.long 0x1273CD48775.long 0x1294CD48776.long 0x12B5CD48777lvx 25,8,11778bdnz .Loop_cbc_dec8x779780subic 5,5,128781.long 0x11CEC548782.long 0x11EFC548783.long 0x1210C548784.long 0x1231C548785.long 0x1252C548786.long 0x1273C548787.long 0x1294C548788.long 0x12B5C548789790subfe. 0,0,0791.long 0x11CECD48792.long 0x11EFCD48793.long 0x1210CD48794.long 0x1231CD48795.long 0x1252CD48796.long 0x1273CD48797.long 0x1294CD48798.long 0x12B5CD48799800and 0,0,5801.long 0x11CED548802.long 0x11EFD548803.long 0x1210D548804.long 0x1231D548805.long 0x1252D548806.long 0x1273D548807.long 0x1294D548808.long 0x12B5D548809810add 3,3,0811812813814.long 0x11CEDD48815.long 0x11EFDD48816.long 0x1210DD48817.long 0x1231DD48818.long 0x1252DD48819.long 0x1273DD48820.long 0x1294DD48821.long 0x12B5DD48822823addi 11,1,32+15824.long 0x11CEE548825.long 0x11EFE548826.long 0x1210E548827.long 0x1231E548828.long 0x1252E548829.long 0x1273E548830.long 0x1294E548831.long 0x12B5E548832lvx 24,0,11833834.long 0x11CEED48835.long 0x11EFED48836.long 0x1210ED48837.long 0x1231ED48838.long 0x1252ED48839.long 0x1273ED48840.long 0x1294ED48841.long 0x12B5ED48842lvx 25,8,11843844.long 0x11CEF548845vxor 4,4,31846.long 0x11EFF548847vxor 0,0,31848.long 0x1210F548849vxor 1,1,31850.long 0x1231F548851vxor 2,2,31852.long 0x1252F548853vxor 3,3,31854.long 0x1273F548855vxor 10,10,31856.long 0x1294F548857vxor 11,11,31858.long 0x12B5F548859vxor 12,12,31860861.long 0x11CE2549862.long 0x11EF0549863.long 0x7C001E99864.long 0x12100D49865.long 0x7C281E99866.long 0x12311549867868.long 0x7C5A1E99869.long 0x12521D49870871.long 0x7C7B1E99872.long 0x12735549873874.long 0x7D5C1E99875.long 0x12945D49876877.long 0x7D7D1E99878.long 0x12B56549879880.long 0x7D9E1E99881vor 4,13,13882883.long 0x7DBF1E99884addi 3,3,0x80885886887888.long 0x7DC02799889890vxor 14,0,23891892.long 0x7DE82799893894vxor 15,1,23895896.long 0x7E1A2799897vxor 16,2,23898899.long 0x7E3B2799900vxor 17,3,23901902.long 0x7E5C2799903vxor 18,10,23904905.long 0x7E7D2799906vxor 19,11,23907908.long 0x7E9E2799909vxor 20,12,23910.long 0x7EBF2799911addi 4,4,0x80912vxor 21,13,23913914mtctr 9915beq .Loop_cbc_dec8x916917addic. 5,5,128918beq .Lcbc_dec8x_done919nop920nop921922.Loop_cbc_dec8x_tail:923.long 0x11EFC548924.long 0x1210C548925.long 0x1231C548926.long 0x1252C548927.long 0x1273C548928.long 0x1294C548929.long 0x12B5C548930lvx 24,26,11931addi 11,11,0x20932933.long 0x11EFCD48934.long 0x1210CD48935.long 0x1231CD48936.long 0x1252CD48937.long 0x1273CD48938.long 0x1294CD48939.long 0x12B5CD48940lvx 25,8,11941bdnz .Loop_cbc_dec8x_tail942943.long 0x11EFC548944.long 0x1210C548945.long 0x1231C548946.long 0x1252C548947.long 0x1273C548948.long 0x1294C548949.long 0x12B5C548950951.long 0x11EFCD48952.long 0x1210CD48953.long 0x1231CD48954.long 0x1252CD48955.long 0x1273CD48956.long 0x1294CD48957.long 0x12B5CD48958959.long 0x11EFD548960.long 0x1210D548961.long 0x1231D548962.long 0x1252D548963.long 0x1273D548964.long 0x1294D548965.long 0x12B5D548966967.long 0x11EFDD48968.long 0x1210DD48969.long 0x1231DD48970.long 0x1252DD48971.long 0x1273DD48972.long 0x1294DD48973.long 0x12B5DD48974975.long 0x11EFE548976.long 0x1210E548977.long 0x1231E548978.long 0x1252E548979.long 0x1273E548980.long 0x1294E548981.long 0x12B5E548982983.long 0x11EFED48984.long 0x1210ED48985.long 0x1231ED48986.long 0x1252ED48987.long 0x1273ED48988.long 0x1294ED48989.long 0x12B5ED48990991.long 0x11EFF548992vxor 4,4,31993.long 0x1210F548994vxor 1,1,31995.long 0x1231F548996vxor 2,2,31997.long 0x1252F548998vxor 3,3,31999.long 0x1273F5481000vxor 10,10,311001.long 0x1294F5481002vxor 11,11,311003.long 0x12B5F5481004vxor 12,12,3110051006cmplwi 5,321007blt .Lcbc_dec8x_one1008nop1009beq .Lcbc_dec8x_two1010cmplwi 5,641011blt .Lcbc_dec8x_three1012nop1013beq .Lcbc_dec8x_four1014cmplwi 5,961015blt .Lcbc_dec8x_five1016nop1017beq .Lcbc_dec8x_six10181019.Lcbc_dec8x_seven:1020.long 0x11EF25491021.long 0x12100D491022.long 0x123115491023.long 0x12521D491024.long 0x127355491025.long 0x12945D491026.long 0x12B565491027vor 4,13,131028102910301031.long 0x7DE0279910321033.long 0x7E08279910341035.long 0x7E3A279910361037.long 0x7E5B279910381039.long 0x7E7C279910401041.long 0x7E9D27991042.long 0x7EBE27991043addi 4,4,0x701044b .Lcbc_dec8x_done10451046.align 51047.Lcbc_dec8x_six:1048.long 0x121025491049.long 0x123115491050.long 0x12521D491051.long 0x127355491052.long 0x12945D491053.long 0x12B565491054vor 4,13,131055105610571058.long 0x7E00279910591060.long 0x7E28279910611062.long 0x7E5A279910631064.long 0x7E7B279910651066.long 0x7E9C27991067.long 0x7EBD27991068addi 4,4,0x601069b .Lcbc_dec8x_done10701071.align 51072.Lcbc_dec8x_five:1073.long 0x123125491074.long 0x12521D491075.long 0x127355491076.long 0x12945D491077.long 0x12B565491078vor 4,13,131079108010811082.long 0x7E20279910831084.long 0x7E48279910851086.long 0x7E7A279910871088.long 0x7E9B27991089.long 0x7EBC27991090addi 4,4,0x501091b .Lcbc_dec8x_done10921093.align 51094.Lcbc_dec8x_four:1095.long 0x125225491096.long 0x127355491097.long 0x12945D491098.long 0x12B565491099vor 4,13,131100110111021103.long 0x7E40279911041105.long 0x7E68279911061107.long 0x7E9A27991108.long 0x7EBB27991109addi 4,4,0x401110b .Lcbc_dec8x_done11111112.align 51113.Lcbc_dec8x_three:1114.long 0x127325491115.long 0x12945D491116.long 0x12B565491117vor 4,13,131118111911201121.long 0x7E60279911221123.long 0x7E8827991124.long 0x7EBA27991125addi 4,4,0x301126b .Lcbc_dec8x_done11271128.align 51129.Lcbc_dec8x_two:1130.long 0x129425491131.long 0x12B565491132vor 4,13,131133113411351136.long 0x7E8027991137.long 0x7EA827991138addi 4,4,0x201139b .Lcbc_dec8x_done11401141.align 51142.Lcbc_dec8x_one:1143.long 0x12B525491144vor 4,13,13114511461147.long 0x7EA027991148addi 4,4,0x1011491150.Lcbc_dec8x_done:11511152.long 0x7C803F9911531154li 10,471155li 11,631156stvx 6,10,11157addi 10,10,321158stvx 6,11,11159addi 11,11,321160stvx 6,10,11161addi 10,10,321162stvx 6,11,11163addi 11,11,321164stvx 6,10,11165addi 10,10,321166stvx 6,11,11167addi 11,11,321168stvx 6,10,11169addi 10,10,321170stvx 6,11,11171addi 11,11,3211721173mtspr 256,121174lvx 20,10,11175addi 10,10,321176lvx 21,11,11177addi 11,11,321178lvx 22,10,11179addi 10,10,321180lvx 23,11,11181addi 11,11,321182lvx 24,10,11183addi 10,10,321184lvx 25,11,11185addi 11,11,321186lvx 26,10,11187addi 10,10,321188lvx 27,11,11189addi 11,11,321190lvx 28,10,11191addi 10,10,321192lvx 29,11,11193addi 11,11,321194lvx 30,10,11195lvx 31,11,11196lwz 26,368(1)1197lwz 27,372(1)1198lwz 28,376(1)1199lwz 29,380(1)1200lwz 30,384(1)1201lwz 31,388(1)1202addi 1,1,3921203blr1204.long 01205.byte 0,12,0x04,0,0x80,6,6,01206.long 01207.size aes_p8_cbc_encrypt,.-aes_p8_cbc_encrypt1208.globl aes_p8_ctr32_encrypt_blocks1209.type aes_p8_ctr32_encrypt_blocks,@function1210.align 51211aes_p8_ctr32_encrypt_blocks:1212cmplwi 5,11213.long 0x4dc0002012141215lis 0,0xfff01216mfspr 12,2561217mtspr 256,012181219li 10,151220vxor 0,0,0122112221223lvx 4,0,71224lvsl 6,0,71225lvx 5,10,71226vspltisb 11,112271228vperm 4,4,5,61229vsldoi 11,0,11,112301231neg 11,31232lvsl 10,0,61233lwz 9,240(6)12341235lvsr 6,0,111236lvx 5,0,31237addi 3,3,15123812391240srwi 9,9,11241li 10,161242subi 9,9,112431244cmplwi 5,81245bge _aesp8_ctr32_encrypt8x12461247lvsr 8,0,41248vspltisb 9,-11249lvx 7,0,41250vperm 9,0,9,8125112521253lvx 0,0,61254mtctr 91255lvx 1,10,61256addi 10,10,161257vperm 0,0,1,101258vxor 2,4,01259lvx 0,10,61260addi 10,10,161261b .Loop_ctr32_enc12621263.align 51264.Loop_ctr32_enc:1265vperm 1,1,0,101266.long 0x10420D081267lvx 1,10,61268addi 10,10,161269vperm 0,0,1,101270.long 0x104205081271lvx 0,10,61272addi 10,10,161273bdnz .Loop_ctr32_enc12741275vadduwm 4,4,111276vor 3,5,51277lvx 5,0,31278addi 3,3,161279subic. 5,5,112801281vperm 1,1,0,101282.long 0x10420D081283lvx 1,10,61284vperm 3,3,5,61285li 10,161286vperm 1,0,1,101287lvx 0,0,61288vxor 3,3,11289.long 0x10421D0912901291lvx 1,10,61292addi 10,10,161293vperm 2,2,2,81294vsel 3,7,2,91295mtctr 91296vperm 0,0,1,101297vor 7,2,21298vxor 2,4,01299lvx 0,10,61300addi 10,10,161301stvx 3,0,41302addi 4,4,161303bne .Loop_ctr32_enc13041305addi 4,4,-11306lvx 2,0,41307vsel 2,7,2,91308stvx 2,0,413091310mtspr 256,121311blr1312.long 01313.byte 0,12,0x14,0,0,0,6,01314.long 01315.align 51316_aesp8_ctr32_encrypt8x:1317stwu 1,-392(1)1318li 10,1751319li 11,1911320stvx 20,10,11321addi 10,10,321322stvx 21,11,11323addi 11,11,321324stvx 22,10,11325addi 10,10,321326stvx 23,11,11327addi 11,11,321328stvx 24,10,11329addi 10,10,321330stvx 25,11,11331addi 11,11,321332stvx 26,10,11333addi 10,10,321334stvx 27,11,11335addi 11,11,321336stvx 28,10,11337addi 10,10,321338stvx 29,11,11339addi 11,11,321340stvx 30,10,11341stvx 31,11,11342li 0,-11343stw 12,364(1)1344li 8,0x101345stw 26,368(1)1346li 26,0x201347stw 27,372(1)1348li 27,0x301349stw 28,376(1)1350li 28,0x401351stw 29,380(1)1352li 29,0x501353stw 30,384(1)1354li 30,0x601355stw 31,388(1)1356li 31,0x701357mtspr 256,013581359subi 9,9,313601361lvx 23,0,61362lvx 30,8,61363addi 6,6,0x201364lvx 31,0,61365vperm 23,23,30,101366addi 11,1,32+151367mtctr 913681369.Load_ctr32_enc_key:1370vperm 24,30,31,101371lvx 30,8,61372addi 6,6,0x201373stvx 24,0,111374vperm 25,31,30,101375lvx 31,0,61376stvx 25,8,111377addi 11,11,0x201378bdnz .Load_ctr32_enc_key13791380lvx 26,8,61381vperm 24,30,31,101382lvx 27,26,61383stvx 24,0,111384vperm 25,31,26,101385lvx 28,27,61386stvx 25,8,111387addi 11,1,32+151388vperm 26,26,27,101389lvx 29,28,61390vperm 27,27,28,101391lvx 30,29,61392vperm 28,28,29,101393lvx 31,30,61394vperm 29,29,30,101395lvx 15,31,61396vperm 30,30,31,101397lvx 24,0,111398vperm 31,31,15,101399lvx 25,8,1114001401vadduwm 7,11,111402subi 3,3,151403slwi 5,5,414041405vadduwm 16,4,111406vadduwm 17,4,71407vxor 15,4,2314081409vadduwm 18,16,71410vxor 16,16,2314111412vadduwm 19,17,71413vxor 17,17,2314141415vadduwm 20,18,71416vxor 18,18,2314171418vadduwm 21,19,71419vxor 19,19,231420vadduwm 22,20,71421vxor 20,20,231422vadduwm 4,21,71423vxor 21,21,231424vxor 22,22,2314251426mtctr 91427b .Loop_ctr32_enc8x1428.align 51429.Loop_ctr32_enc8x:1430.long 0x11EFC5081431.long 0x1210C5081432.long 0x1231C5081433.long 0x1252C5081434.long 0x1273C5081435.long 0x1294C5081436.long 0x12B5C5081437.long 0x12D6C5081438.Loop_ctr32_enc8x_middle:1439lvx 24,26,111440addi 11,11,0x2014411442.long 0x11EFCD081443.long 0x1210CD081444.long 0x1231CD081445.long 0x1252CD081446.long 0x1273CD081447.long 0x1294CD081448.long 0x12B5CD081449.long 0x12D6CD081450lvx 25,8,111451bdnz .Loop_ctr32_enc8x14521453subic 11,5,2561454.long 0x11EFC5081455.long 0x1210C5081456.long 0x1231C5081457.long 0x1252C5081458.long 0x1273C5081459.long 0x1294C5081460.long 0x12B5C5081461.long 0x12D6C50814621463subfe 0,0,01464.long 0x11EFCD081465.long 0x1210CD081466.long 0x1231CD081467.long 0x1252CD081468.long 0x1273CD081469.long 0x1294CD081470.long 0x12B5CD081471.long 0x12D6CD0814721473and 0,0,111474addi 11,1,32+151475.long 0x11EFD5081476.long 0x1210D5081477.long 0x1231D5081478.long 0x1252D5081479.long 0x1273D5081480.long 0x1294D5081481.long 0x12B5D5081482.long 0x12D6D5081483lvx 24,0,1114841485subic 5,5,1291486.long 0x11EFDD081487addi 5,5,11488.long 0x1210DD081489.long 0x1231DD081490.long 0x1252DD081491.long 0x1273DD081492.long 0x1294DD081493.long 0x12B5DD081494.long 0x12D6DD081495lvx 25,8,1114961497.long 0x11EFE5081498.long 0x7C001E991499.long 0x1210E5081500.long 0x7C281E991501.long 0x1231E5081502.long 0x7C5A1E991503.long 0x1252E5081504.long 0x7C7B1E991505.long 0x1273E5081506.long 0x7D5C1E991507.long 0x1294E5081508.long 0x7D9D1E991509.long 0x12B5E5081510.long 0x7DBE1E991511.long 0x12D6E5081512.long 0x7DDF1E991513addi 3,3,0x8015141515.long 0x11EFED0815161517.long 0x1210ED0815181519.long 0x1231ED0815201521.long 0x1252ED0815221523.long 0x1273ED0815241525.long 0x1294ED0815261527.long 0x12B5ED0815281529.long 0x12D6ED08153015311532add 3,3,01533153415351536subfe. 0,0,01537.long 0x11EFF5081538vxor 0,0,311539.long 0x1210F5081540vxor 1,1,311541.long 0x1231F5081542vxor 2,2,311543.long 0x1252F5081544vxor 3,3,311545.long 0x1273F5081546vxor 10,10,311547.long 0x1294F5081548vxor 12,12,311549.long 0x12B5F5081550vxor 13,13,311551.long 0x12D6F5081552vxor 14,14,3115531554bne .Lctr32_enc8x_break15551556.long 0x100F05091557.long 0x10300D091558vadduwm 16,4,111559.long 0x105115091560vadduwm 17,4,71561vxor 15,4,231562.long 0x10721D091563vadduwm 18,16,71564vxor 16,16,231565.long 0x115355091566vadduwm 19,17,71567vxor 17,17,231568.long 0x119465091569vadduwm 20,18,71570vxor 18,18,231571.long 0x11B56D091572vadduwm 21,19,71573vxor 19,19,231574.long 0x11D675091575vadduwm 22,20,71576vxor 20,20,2315771578vadduwm 4,21,71579vxor 21,21,2315801581vxor 22,22,231582mtctr 915831584.long 0x11EFC5081585.long 0x7C00279915861587.long 0x1210C5081588.long 0x7C28279915891590.long 0x1231C5081591.long 0x7C5A279915921593.long 0x1252C5081594.long 0x7C7B279915951596.long 0x1273C5081597.long 0x7D5C279915981599.long 0x1294C5081600.long 0x7D9D279916011602.long 0x12B5C5081603.long 0x7DBE27991604.long 0x12D6C5081605.long 0x7DDF27991606addi 4,4,0x8016071608b .Loop_ctr32_enc8x_middle16091610.align 51611.Lctr32_enc8x_break:1612cmpwi 5,-0x601613blt .Lctr32_enc8x_one1614nop1615beq .Lctr32_enc8x_two1616cmpwi 5,-0x401617blt .Lctr32_enc8x_three1618nop1619beq .Lctr32_enc8x_four1620cmpwi 5,-0x201621blt .Lctr32_enc8x_five1622nop1623beq .Lctr32_enc8x_six1624cmpwi 5,0x001625blt .Lctr32_enc8x_seven16261627.Lctr32_enc8x_eight:1628.long 0x11EF05091629.long 0x12100D091630.long 0x123115091631.long 0x12521D091632.long 0x127355091633.long 0x129465091634.long 0x12B56D091635.long 0x12D675091636163716381639.long 0x7DE0279916401641.long 0x7E08279916421643.long 0x7E3A279916441645.long 0x7E5B279916461647.long 0x7E7C279916481649.long 0x7E9D279916501651.long 0x7EBE27991652.long 0x7EDF27991653addi 4,4,0x801654b .Lctr32_enc8x_done16551656.align 51657.Lctr32_enc8x_seven:1658.long 0x11EF0D091659.long 0x121015091660.long 0x12311D091661.long 0x125255091662.long 0x127365091663.long 0x12946D091664.long 0x12B575091665166616671668.long 0x7DE0279916691670.long 0x7E08279916711672.long 0x7E3A279916731674.long 0x7E5B279916751676.long 0x7E7C279916771678.long 0x7E9D27991679.long 0x7EBE27991680addi 4,4,0x701681b .Lctr32_enc8x_done16821683.align 51684.Lctr32_enc8x_six:1685.long 0x11EF15091686.long 0x12101D091687.long 0x123155091688.long 0x125265091689.long 0x12736D091690.long 0x129475091691169216931694.long 0x7DE0279916951696.long 0x7E08279916971698.long 0x7E3A279916991700.long 0x7E5B279917011702.long 0x7E7C27991703.long 0x7E9D27991704addi 4,4,0x601705b .Lctr32_enc8x_done17061707.align 51708.Lctr32_enc8x_five:1709.long 0x11EF1D091710.long 0x121055091711.long 0x123165091712.long 0x12526D091713.long 0x127375091714171517161717.long 0x7DE0279917181719.long 0x7E08279917201721.long 0x7E3A279917221723.long 0x7E5B27991724.long 0x7E7C27991725addi 4,4,0x501726b .Lctr32_enc8x_done17271728.align 51729.Lctr32_enc8x_four:1730.long 0x11EF55091731.long 0x121065091732.long 0x12316D091733.long 0x125275091734173517361737.long 0x7DE0279917381739.long 0x7E08279917401741.long 0x7E3A27991742.long 0x7E5B27991743addi 4,4,0x401744b .Lctr32_enc8x_done17451746.align 51747.Lctr32_enc8x_three:1748.long 0x11EF65091749.long 0x12106D091750.long 0x123175091751175217531754.long 0x7DE0279917551756.long 0x7E0827991757.long 0x7E3A27991758addi 4,4,0x301759b .Lctr32_enc8x_done17601761.align 51762.Lctr32_enc8x_two:1763.long 0x11EF6D091764.long 0x121075091765176617671768.long 0x7DE027991769.long 0x7E0827991770addi 4,4,0x201771b .Lctr32_enc8x_done17721773.align 51774.Lctr32_enc8x_one:1775.long 0x11EF7509177617771778.long 0x7DE027991779addi 4,4,0x1017801781.Lctr32_enc8x_done:1782li 10,471783li 11,631784stvx 6,10,11785addi 10,10,321786stvx 6,11,11787addi 11,11,321788stvx 6,10,11789addi 10,10,321790stvx 6,11,11791addi 11,11,321792stvx 6,10,11793addi 10,10,321794stvx 6,11,11795addi 11,11,321796stvx 6,10,11797addi 10,10,321798stvx 6,11,11799addi 11,11,3218001801mtspr 256,121802lvx 20,10,11803addi 10,10,321804lvx 21,11,11805addi 11,11,321806lvx 22,10,11807addi 10,10,321808lvx 23,11,11809addi 11,11,321810lvx 24,10,11811addi 10,10,321812lvx 25,11,11813addi 11,11,321814lvx 26,10,11815addi 10,10,321816lvx 27,11,11817addi 11,11,321818lvx 28,10,11819addi 10,10,321820lvx 29,11,11821addi 11,11,321822lvx 30,10,11823lvx 31,11,11824lwz 26,368(1)1825lwz 27,372(1)1826lwz 28,376(1)1827lwz 29,380(1)1828lwz 30,384(1)1829lwz 31,388(1)1830addi 1,1,3921831blr1832.long 01833.byte 0,12,0x04,0,0x80,6,6,01834.long 01835.size aes_p8_ctr32_encrypt_blocks,.-aes_p8_ctr32_encrypt_blocks1836.globl aes_p8_xts_encrypt1837.type aes_p8_xts_encrypt,@function1838.align 51839aes_p8_xts_encrypt:1840mr 10,31841li 3,-11842cmplwi 5,161843.long 0x4dc0002018441845lis 0,0xfff01846mfspr 12,2561847li 11,01848mtspr 256,018491850vspltisb 9,0x0718511852185318541855li 3,151856lvx 8,0,81857lvsl 5,0,81858lvx 4,3,818591860vperm 8,8,4,518611862neg 11,101863lvsr 5,0,111864lvx 2,0,101865addi 10,10,15186618671868cmplwi 7,01869beq .Lxts_enc_no_key218701871lvsl 7,0,71872lwz 9,240(7)1873srwi 9,9,11874subi 9,9,11875li 3,1618761877lvx 0,0,71878lvx 1,3,71879addi 3,3,161880vperm 0,0,1,71881vxor 8,8,01882lvx 0,3,71883addi 3,3,161884mtctr 918851886.Ltweak_xts_enc:1887vperm 1,1,0,71888.long 0x11080D081889lvx 1,3,71890addi 3,3,161891vperm 0,0,1,71892.long 0x110805081893lvx 0,3,71894addi 3,3,161895bdnz .Ltweak_xts_enc18961897vperm 1,1,0,71898.long 0x11080D081899lvx 1,3,71900vperm 0,0,1,71901.long 0x1108050919021903li 8,01904b .Lxts_enc19051906.Lxts_enc_no_key2:1907li 3,-161908and 5,5,3190919101911.Lxts_enc:1912lvx 4,0,101913addi 10,10,1619141915lvsl 7,0,61916lwz 9,240(6)1917srwi 9,9,11918subi 9,9,11919li 3,1619201921vslb 10,9,91922vor 10,10,91923vspltisb 11,11924vsldoi 10,10,11,1519251926cmplwi 5,961927bge _aesp8_xts_encrypt6x19281929andi. 7,5,151930subic 0,5,321931subi 7,7,161932subfe 0,0,01933and 0,0,71934add 10,10,019351936lvx 0,0,61937lvx 1,3,61938addi 3,3,161939vperm 2,2,4,51940vperm 0,0,1,71941vxor 2,2,81942vxor 2,2,01943lvx 0,3,61944addi 3,3,161945mtctr 91946b .Loop_xts_enc19471948.align 51949.Loop_xts_enc:1950vperm 1,1,0,71951.long 0x10420D081952lvx 1,3,61953addi 3,3,161954vperm 0,0,1,71955.long 0x104205081956lvx 0,3,61957addi 3,3,161958bdnz .Loop_xts_enc19591960vperm 1,1,0,71961.long 0x10420D081962lvx 1,3,61963li 3,161964vperm 0,0,1,71965vxor 0,0,81966.long 0x10620509196719681969nop19701971.long 0x7C6027991972addi 4,4,1619731974subic. 5,5,161975beq .Lxts_enc_done19761977vor 2,4,41978lvx 4,0,101979addi 10,10,161980lvx 0,0,61981lvx 1,3,61982addi 3,3,1619831984subic 0,5,321985subfe 0,0,01986and 0,0,71987add 10,10,019881989vsrab 11,8,91990vaddubm 8,8,81991vsldoi 11,11,11,151992vand 11,11,101993vxor 8,8,1119941995vperm 2,2,4,51996vperm 0,0,1,71997vxor 2,2,81998vxor 3,3,01999vxor 2,2,02000lvx 0,3,62001addi 3,3,1620022003mtctr 92004cmplwi 5,162005bge .Loop_xts_enc20062007vxor 3,3,82008lvsr 5,0,52009vxor 4,4,42010vspltisb 11,-12011vperm 4,4,11,52012vsel 2,2,3,420132014subi 11,4,172015subi 4,4,162016mtctr 52017li 5,162018.Loop_xts_enc_steal:2019lbzu 0,1(11)2020stb 0,16(11)2021bdnz .Loop_xts_enc_steal20222023mtctr 92024b .Loop_xts_enc20252026.Lxts_enc_done:2027cmplwi 8,02028beq .Lxts_enc_ret20292030vsrab 11,8,92031vaddubm 8,8,82032vsldoi 11,11,11,152033vand 11,11,102034vxor 8,8,11203520362037.long 0x7D00479920382039.Lxts_enc_ret:2040mtspr 256,122041li 3,02042blr2043.long 02044.byte 0,12,0x04,0,0x80,6,6,02045.long 02046.size aes_p8_xts_encrypt,.-aes_p8_xts_encrypt20472048.globl aes_p8_xts_decrypt2049.type aes_p8_xts_decrypt,@function2050.align 52051aes_p8_xts_decrypt:2052mr 10,32053li 3,-12054cmplwi 5,162055.long 0x4dc0002020562057lis 0,0xfff82058mfspr 12,2562059li 11,02060mtspr 256,020612062andi. 0,5,152063neg 0,02064andi. 0,0,162065sub 5,5,020662067vspltisb 9,0x0720682069207020712072li 3,152073lvx 8,0,82074lvsl 5,0,82075lvx 4,3,820762077vperm 8,8,4,520782079neg 11,102080lvsr 5,0,112081lvx 2,0,102082addi 10,10,15208320842085cmplwi 7,02086beq .Lxts_dec_no_key220872088lvsl 7,0,72089lwz 9,240(7)2090srwi 9,9,12091subi 9,9,12092li 3,1620932094lvx 0,0,72095lvx 1,3,72096addi 3,3,162097vperm 0,0,1,72098vxor 8,8,02099lvx 0,3,72100addi 3,3,162101mtctr 921022103.Ltweak_xts_dec:2104vperm 1,1,0,72105.long 0x11080D082106lvx 1,3,72107addi 3,3,162108vperm 0,0,1,72109.long 0x110805082110lvx 0,3,72111addi 3,3,162112bdnz .Ltweak_xts_dec21132114vperm 1,1,0,72115.long 0x11080D082116lvx 1,3,72117vperm 0,0,1,72118.long 0x1108050921192120li 8,02121b .Lxts_dec21222123.Lxts_dec_no_key2:2124neg 3,52125andi. 3,3,152126add 5,5,3212721282129.Lxts_dec:2130lvx 4,0,102131addi 10,10,1621322133lvsl 7,0,62134lwz 9,240(6)2135srwi 9,9,12136subi 9,9,12137li 3,1621382139vslb 10,9,92140vor 10,10,92141vspltisb 11,12142vsldoi 10,10,11,1521432144cmplwi 5,962145bge _aesp8_xts_decrypt6x21462147lvx 0,0,62148lvx 1,3,62149addi 3,3,162150vperm 2,2,4,52151vperm 0,0,1,72152vxor 2,2,82153vxor 2,2,02154lvx 0,3,62155addi 3,3,162156mtctr 921572158cmplwi 5,162159blt .Ltail_xts_dec2160b .Loop_xts_dec21612162.align 52163.Loop_xts_dec:2164vperm 1,1,0,72165.long 0x10420D482166lvx 1,3,62167addi 3,3,162168vperm 0,0,1,72169.long 0x104205482170lvx 0,3,62171addi 3,3,162172bdnz .Loop_xts_dec21732174vperm 1,1,0,72175.long 0x10420D482176lvx 1,3,62177li 3,162178vperm 0,0,1,72179vxor 0,0,82180.long 0x10620549218121822183nop21842185.long 0x7C6027992186addi 4,4,1621872188subic. 5,5,162189beq .Lxts_dec_done21902191vor 2,4,42192lvx 4,0,102193addi 10,10,162194lvx 0,0,62195lvx 1,3,62196addi 3,3,1621972198vsrab 11,8,92199vaddubm 8,8,82200vsldoi 11,11,11,152201vand 11,11,102202vxor 8,8,1122032204vperm 2,2,4,52205vperm 0,0,1,72206vxor 2,2,82207vxor 2,2,02208lvx 0,3,62209addi 3,3,1622102211mtctr 92212cmplwi 5,162213bge .Loop_xts_dec22142215.Ltail_xts_dec:2216vsrab 11,8,92217vaddubm 12,8,82218vsldoi 11,11,11,152219vand 11,11,102220vxor 12,12,1122212222subi 10,10,162223add 10,10,522242225vxor 2,2,82226vxor 2,2,1222272228.Loop_xts_dec_short:2229vperm 1,1,0,72230.long 0x10420D482231lvx 1,3,62232addi 3,3,162233vperm 0,0,1,72234.long 0x104205482235lvx 0,3,62236addi 3,3,162237bdnz .Loop_xts_dec_short22382239vperm 1,1,0,72240.long 0x10420D482241lvx 1,3,62242li 3,162243vperm 0,0,1,72244vxor 0,0,122245.long 0x10620549224622472248nop22492250.long 0x7C60279922512252vor 2,4,42253lvx 4,0,1022542255lvx 0,0,62256lvx 1,3,62257addi 3,3,162258vperm 2,2,4,52259vperm 0,0,1,722602261lvsr 5,0,52262vxor 4,4,42263vspltisb 11,-12264vperm 4,4,11,52265vsel 2,2,3,422662267vxor 0,0,82268vxor 2,2,02269lvx 0,3,62270addi 3,3,1622712272subi 11,4,12273mtctr 52274li 5,162275.Loop_xts_dec_steal:2276lbzu 0,1(11)2277stb 0,16(11)2278bdnz .Loop_xts_dec_steal22792280mtctr 92281b .Loop_xts_dec22822283.Lxts_dec_done:2284cmplwi 8,02285beq .Lxts_dec_ret22862287vsrab 11,8,92288vaddubm 8,8,82289vsldoi 11,11,11,152290vand 11,11,102291vxor 8,8,11229222932294.long 0x7D00479922952296.Lxts_dec_ret:2297mtspr 256,122298li 3,02299blr2300.long 02301.byte 0,12,0x04,0,0x80,6,6,02302.long 02303.size aes_p8_xts_decrypt,.-aes_p8_xts_decrypt2304.align 52305_aesp8_xts_encrypt6x:2306stwu 1,-392(1)2307mflr 112308li 7,1752309li 3,1912310stw 11,396(1)2311stvx 20,7,12312addi 7,7,322313stvx 21,3,12314addi 3,3,322315stvx 22,7,12316addi 7,7,322317stvx 23,3,12318addi 3,3,322319stvx 24,7,12320addi 7,7,322321stvx 25,3,12322addi 3,3,322323stvx 26,7,12324addi 7,7,322325stvx 27,3,12326addi 3,3,322327stvx 28,7,12328addi 7,7,322329stvx 29,3,12330addi 3,3,322331stvx 30,7,12332stvx 31,3,12333li 0,-12334stw 12,364(1)2335li 3,0x102336stw 26,368(1)2337li 26,0x202338stw 27,372(1)2339li 27,0x302340stw 28,376(1)2341li 28,0x402342stw 29,380(1)2343li 29,0x502344stw 30,384(1)2345li 30,0x602346stw 31,388(1)2347li 31,0x702348mtspr 256,0234923502351xxlor 2, 32+10, 32+102352vsldoi 10,11,10,12353xxlor 1, 32+10, 32+10235423552356mr 31, 62357bl .Lconsts2358lxvw4x 0, 28, 62359mr 6, 312360li 31,0x7023612362subi 9,9,323632364lvx 23,0,62365lvx 30,3,62366addi 6,6,0x202367lvx 31,0,62368vperm 23,23,30,72369addi 7,1,32+152370mtctr 923712372.Load_xts_enc_key:2373vperm 24,30,31,72374lvx 30,3,62375addi 6,6,0x202376stvx 24,0,72377vperm 25,31,30,72378lvx 31,0,62379stvx 25,3,72380addi 7,7,0x202381bdnz .Load_xts_enc_key23822383lvx 26,3,62384vperm 24,30,31,72385lvx 27,26,62386stvx 24,0,72387vperm 25,31,26,72388lvx 28,27,62389stvx 25,3,72390addi 7,1,32+152391vperm 26,26,27,72392lvx 29,28,62393vperm 27,27,28,72394lvx 30,29,62395vperm 28,28,29,72396lvx 31,30,62397vperm 29,29,30,72398lvx 22,31,62399vperm 30,30,31,72400lvx 24,0,72401vperm 31,31,22,72402lvx 25,3,72403240424052406240724082409241024112412vperm 0,2,4,52413subi 10,10,312414vxor 17,8,232415vsrab 11,8,92416vaddubm 8,8,82417vand 11,11,102418vxor 7,0,172419xxlor 32+1, 0, 02420vpermxor 8, 8, 11, 124212422.long 0x7C2356992423vxor 18,8,232424vsrab 11,8,92425vaddubm 8,8,824262427vand 11,11,102428vxor 12,1,182429xxlor 32+2, 0, 02430vpermxor 8, 8, 11, 224312432.long 0x7C5A56992433andi. 31,5,152434vxor 19,8,232435vsrab 11,8,92436vaddubm 8,8,824372438vand 11,11,102439vxor 13,2,192440xxlor 32+3, 0, 02441vpermxor 8, 8, 11, 324422443.long 0x7C7B56992444sub 5,5,312445vxor 20,8,232446vsrab 11,8,92447vaddubm 8,8,824482449vand 11,11,102450vxor 14,3,202451xxlor 32+4, 0, 02452vpermxor 8, 8, 11, 424532454.long 0x7C9C56992455subi 5,5,0x602456vxor 21,8,232457vsrab 11,8,92458vaddubm 8,8,824592460vand 11,11,102461vxor 15,4,212462xxlor 32+5, 0, 02463vpermxor 8, 8, 11, 524642465.long 0x7CBD56992466addi 10,10,0x602467vxor 22,8,232468vsrab 11,8,92469vaddubm 8,8,824702471vand 11,11,102472vxor 16,5,222473xxlor 32+0, 0, 02474vpermxor 8, 8, 11, 024752476vxor 31,31,232477mtctr 92478b .Loop_xts_enc6x24792480.align 52481.Loop_xts_enc6x:2482.long 0x10E7C5082483.long 0x118CC5082484.long 0x11ADC5082485.long 0x11CEC5082486.long 0x11EFC5082487.long 0x1210C5082488lvx 24,26,72489addi 7,7,0x2024902491.long 0x10E7CD082492.long 0x118CCD082493.long 0x11ADCD082494.long 0x11CECD082495.long 0x11EFCD082496.long 0x1210CD082497lvx 25,3,72498bdnz .Loop_xts_enc6x24992500xxlor 32+10, 1, 125012502subic 5,5,962503vxor 0,17,312504.long 0x10E7C5082505.long 0x118CC5082506vsrab 11,8,92507vxor 17,8,232508vaddubm 8,8,82509.long 0x11ADC5082510.long 0x11CEC5082511.long 0x11EFC5082512.long 0x1210C50825132514subfe. 0,0,02515vand 11,11,102516.long 0x10E7CD082517.long 0x118CCD082518xxlor 32+1, 0, 02519vpermxor 8, 8, 11, 12520.long 0x11ADCD082521.long 0x11CECD082522vxor 1,18,312523vsrab 11,8,92524vxor 18,8,232525.long 0x11EFCD082526.long 0x1210CD0825272528and 0,0,52529vaddubm 8,8,82530.long 0x10E7D5082531.long 0x118CD5082532vand 11,11,102533.long 0x11ADD5082534.long 0x11CED5082535xxlor 32+2, 0, 02536vpermxor 8, 8, 11, 22537.long 0x11EFD5082538.long 0x1210D50825392540add 10,10,02541254225432544vxor 2,19,312545vsrab 11,8,92546vxor 19,8,232547vaddubm 8,8,82548.long 0x10E7DD082549.long 0x118CDD082550.long 0x11ADDD082551.long 0x11CEDD082552vand 11,11,102553.long 0x11EFDD082554.long 0x1210DD0825552556addi 7,1,32+152557xxlor 32+3, 0, 02558vpermxor 8, 8, 11, 32559.long 0x10E7E5082560.long 0x118CE5082561vxor 3,20,312562vsrab 11,8,92563vxor 20,8,232564.long 0x11ADE5082565.long 0x11CEE5082566vaddubm 8,8,82567.long 0x11EFE5082568.long 0x1210E5082569lvx 24,0,72570vand 11,11,1025712572.long 0x10E7ED082573.long 0x118CED082574xxlor 32+4, 0, 02575vpermxor 8, 8, 11, 42576.long 0x11ADED082577.long 0x11CEED082578vxor 4,21,312579vsrab 11,8,92580vxor 21,8,232581.long 0x11EFED082582.long 0x1210ED082583lvx 25,3,72584vaddubm 8,8,825852586.long 0x10E7F5082587.long 0x118CF5082588vand 11,11,102589.long 0x11ADF5082590.long 0x11CEF5082591xxlor 32+5, 0, 02592vpermxor 8, 8, 11, 52593.long 0x11EFF5082594.long 0x1210F5082595vxor 5,22,312596vsrab 11,8,92597vxor 22,8,2325982599.long 0x10E705092600.long 0x7C0056992601vaddubm 8,8,82602.long 0x118C0D092603.long 0x7C2356992604.long 0x11AD150926052606.long 0x7C5A56992607vand 11,11,102608.long 0x11CE1D0926092610.long 0x7C7B56992611.long 0x11EF250926122613.long 0x7C9C56992614xxlor 10, 32+0, 32+02615xxlor 32+0, 0, 02616vpermxor 8, 8, 11, 02617xxlor 32+0, 10, 102618.long 0x11702D09261926202621.long 0x7CBD56992622addi 10,10,0x60262326242625262626272628.long 0x7CE027992629vxor 7,0,1726302631.long 0x7D8327992632vxor 12,1,1826332634.long 0x7DBA27992635vxor 13,2,1926362637.long 0x7DDB27992638vxor 14,3,2026392640.long 0x7DFC27992641vxor 15,4,2126422643.long 0x7D7D27992644vxor 16,5,222645addi 4,4,0x6026462647mtctr 92648beq .Loop_xts_enc6x26492650xxlor 32+10, 2, 226512652addic. 5,5,0x602653beq .Lxts_enc6x_zero2654cmpwi 5,0x202655blt .Lxts_enc6x_one2656nop2657beq .Lxts_enc6x_two2658cmpwi 5,0x402659blt .Lxts_enc6x_three2660nop2661beq .Lxts_enc6x_four26622663.Lxts_enc6x_five:2664vxor 7,1,172665vxor 12,2,182666vxor 13,3,192667vxor 14,4,202668vxor 15,5,2126692670bl _aesp8_xts_enc5x267126722673vor 17,22,2226742675.long 0x7CE0279926762677.long 0x7D83279926782679.long 0x7DBA27992680vxor 11,15,2226812682.long 0x7DDB27992683.long 0x7DFC27992684addi 4,4,0x502685bne .Lxts_enc6x_steal2686b .Lxts_enc6x_done26872688.align 42689.Lxts_enc6x_four:2690vxor 7,2,172691vxor 12,3,182692vxor 13,4,192693vxor 14,5,202694vxor 15,15,1526952696bl _aesp8_xts_enc5x269726982699vor 17,21,2127002701.long 0x7CE0279927022703.long 0x7D8327992704vxor 11,14,2127052706.long 0x7DBA27992707.long 0x7DDB27992708addi 4,4,0x402709bne .Lxts_enc6x_steal2710b .Lxts_enc6x_done27112712.align 42713.Lxts_enc6x_three:2714vxor 7,3,172715vxor 12,4,182716vxor 13,5,192717vxor 14,14,142718vxor 15,15,1527192720bl _aesp8_xts_enc5x272127222723vor 17,20,2027242725.long 0x7CE027992726vxor 11,13,2027272728.long 0x7D8327992729.long 0x7DBA27992730addi 4,4,0x302731bne .Lxts_enc6x_steal2732b .Lxts_enc6x_done27332734.align 42735.Lxts_enc6x_two:2736vxor 7,4,172737vxor 12,5,182738vxor 13,13,132739vxor 14,14,142740vxor 15,15,1527412742bl _aesp8_xts_enc5x274327442745vor 17,19,192746vxor 11,12,1927472748.long 0x7CE027992749.long 0x7D8327992750addi 4,4,0x202751bne .Lxts_enc6x_steal2752b .Lxts_enc6x_done27532754.align 42755.Lxts_enc6x_one:2756vxor 7,5,172757nop2758.Loop_xts_enc1x:2759.long 0x10E7C5082760lvx 24,26,72761addi 7,7,0x2027622763.long 0x10E7CD082764lvx 25,3,72765bdnz .Loop_xts_enc1x27662767add 10,10,312768cmpwi 31,02769.long 0x10E7C50827702771subi 10,10,162772.long 0x10E7CD0827732774lvsr 5,0,312775.long 0x10E7D50827762777.long 0x7C0056992778.long 0x10E7DD0827792780addi 7,1,32+152781.long 0x10E7E5082782lvx 24,0,727832784.long 0x10E7ED082785lvx 25,3,72786vxor 17,17,31278727882789.long 0x10E7F50827902791vperm 0,0,0,52792.long 0x10E78D0927932794vor 17,18,182795vxor 11,7,1827962797.long 0x7CE027992798addi 4,4,0x102799bne .Lxts_enc6x_steal2800b .Lxts_enc6x_done28012802.align 42803.Lxts_enc6x_zero:2804cmpwi 31,02805beq .Lxts_enc6x_done28062807add 10,10,312808subi 10,10,162809.long 0x7C0056992810lvsr 5,0,3128112812vperm 0,0,0,52813vxor 11,11,172814.Lxts_enc6x_steal:2815vxor 0,0,172816vxor 7,7,72817vspltisb 12,-12818vperm 7,7,12,52819vsel 7,0,11,728202821subi 30,4,172822subi 4,4,162823mtctr 312824.Loop_xts_enc6x_steal:2825lbzu 0,1(30)2826stb 0,16(30)2827bdnz .Loop_xts_enc6x_steal28282829li 31,02830mtctr 92831b .Loop_xts_enc1x28322833.align 42834.Lxts_enc6x_done:2835cmplwi 8,02836beq .Lxts_enc6x_ret28372838vxor 8,17,2328392840.long 0x7D00479928412842.Lxts_enc6x_ret:2843mtlr 112844li 10,472845li 11,632846stvx 9,10,12847addi 10,10,322848stvx 9,11,12849addi 11,11,322850stvx 9,10,12851addi 10,10,322852stvx 9,11,12853addi 11,11,322854stvx 9,10,12855addi 10,10,322856stvx 9,11,12857addi 11,11,322858stvx 9,10,12859addi 10,10,322860stvx 9,11,12861addi 11,11,3228622863mtspr 256,122864lvx 20,10,12865addi 10,10,322866lvx 21,11,12867addi 11,11,322868lvx 22,10,12869addi 10,10,322870lvx 23,11,12871addi 11,11,322872lvx 24,10,12873addi 10,10,322874lvx 25,11,12875addi 11,11,322876lvx 26,10,12877addi 10,10,322878lvx 27,11,12879addi 11,11,322880lvx 28,10,12881addi 10,10,322882lvx 29,11,12883addi 11,11,322884lvx 30,10,12885lvx 31,11,12886lwz 26,368(1)2887lwz 27,372(1)2888lwz 28,376(1)2889lwz 29,380(1)2890lwz 30,384(1)2891lwz 31,388(1)2892addi 1,1,3922893blr2894.long 02895.byte 0,12,0x04,1,0x80,6,6,02896.long 028972898.align 52899_aesp8_xts_enc5x:2900.long 0x10E7C5082901.long 0x118CC5082902.long 0x11ADC5082903.long 0x11CEC5082904.long 0x11EFC5082905lvx 24,26,72906addi 7,7,0x2029072908.long 0x10E7CD082909.long 0x118CCD082910.long 0x11ADCD082911.long 0x11CECD082912.long 0x11EFCD082913lvx 25,3,72914bdnz _aesp8_xts_enc5x29152916add 10,10,312917cmpwi 31,02918.long 0x10E7C5082919.long 0x118CC5082920.long 0x11ADC5082921.long 0x11CEC5082922.long 0x11EFC50829232924subi 10,10,162925.long 0x10E7CD082926.long 0x118CCD082927.long 0x11ADCD082928.long 0x11CECD082929.long 0x11EFCD082930vxor 17,17,3129312932.long 0x10E7D5082933lvsr 5,0,312934.long 0x118CD5082935.long 0x11ADD5082936.long 0x11CED5082937.long 0x11EFD5082938vxor 1,18,3129392940.long 0x10E7DD082941.long 0x7C0056992942.long 0x118CDD082943.long 0x11ADDD082944.long 0x11CEDD082945.long 0x11EFDD082946vxor 2,19,3129472948addi 7,1,32+152949.long 0x10E7E5082950.long 0x118CE5082951.long 0x11ADE5082952.long 0x11CEE5082953.long 0x11EFE5082954lvx 24,0,72955vxor 3,20,3129562957.long 0x10E7ED0829582959.long 0x118CED082960.long 0x11ADED082961.long 0x11CEED082962.long 0x11EFED082963lvx 25,3,72964vxor 4,21,3129652966.long 0x10E7F5082967vperm 0,0,0,52968.long 0x118CF5082969.long 0x11ADF5082970.long 0x11CEF5082971.long 0x11EFF50829722973.long 0x10E78D092974.long 0x118C0D092975.long 0x11AD15092976.long 0x11CE1D092977.long 0x11EF25092978blr2979.long 02980.byte 0,12,0x14,0,0,0,0,029812982.align 52983_aesp8_xts_decrypt6x:2984stwu 1,-392(1)2985mflr 112986li 7,1752987li 3,1912988stw 11,396(1)2989stvx 20,7,12990addi 7,7,322991stvx 21,3,12992addi 3,3,322993stvx 22,7,12994addi 7,7,322995stvx 23,3,12996addi 3,3,322997stvx 24,7,12998addi 7,7,322999stvx 25,3,13000addi 3,3,323001stvx 26,7,13002addi 7,7,323003stvx 27,3,13004addi 3,3,323005stvx 28,7,13006addi 7,7,323007stvx 29,3,13008addi 3,3,323009stvx 30,7,13010stvx 31,3,13011li 0,-13012stw 12,364(1)3013li 3,0x103014stw 26,368(1)3015li 26,0x203016stw 27,372(1)3017li 27,0x303018stw 28,376(1)3019li 28,0x403020stw 29,380(1)3021li 29,0x503022stw 30,384(1)3023li 30,0x603024stw 31,388(1)3025li 31,0x703026mtspr 256,0302730283029xxlor 2, 32+10, 32+103030vsldoi 10,11,10,13031xxlor 1, 32+10, 32+10303230333034mr 31, 63035bl .Lconsts3036lxvw4x 0, 28, 63037mr 6, 313038li 31,0x7030393040subi 9,9,330413042lvx 23,0,63043lvx 30,3,63044addi 6,6,0x203045lvx 31,0,63046vperm 23,23,30,73047addi 7,1,32+153048mtctr 930493050.Load_xts_dec_key:3051vperm 24,30,31,73052lvx 30,3,63053addi 6,6,0x203054stvx 24,0,73055vperm 25,31,30,73056lvx 31,0,63057stvx 25,3,73058addi 7,7,0x203059bdnz .Load_xts_dec_key30603061lvx 26,3,63062vperm 24,30,31,73063lvx 27,26,63064stvx 24,0,73065vperm 25,31,26,73066lvx 28,27,63067stvx 25,3,73068addi 7,1,32+153069vperm 26,26,27,73070lvx 29,28,63071vperm 27,27,28,73072lvx 30,29,63073vperm 28,28,29,73074lvx 31,30,63075vperm 29,29,30,73076lvx 22,31,63077vperm 30,30,31,73078lvx 24,0,73079vperm 31,31,22,73080lvx 25,3,730813082vperm 0,2,4,53083subi 10,10,313084vxor 17,8,233085vsrab 11,8,93086vaddubm 8,8,83087vand 11,11,103088vxor 7,0,173089xxlor 32+1, 0, 03090vpermxor 8, 8, 11, 130913092.long 0x7C2356993093vxor 18,8,233094vsrab 11,8,93095vaddubm 8,8,830963097vand 11,11,103098vxor 12,1,183099xxlor 32+2, 0, 03100vpermxor 8, 8, 11, 231013102.long 0x7C5A56993103andi. 31,5,153104vxor 19,8,233105vsrab 11,8,93106vaddubm 8,8,831073108vand 11,11,103109vxor 13,2,193110xxlor 32+3, 0, 03111vpermxor 8, 8, 11, 331123113.long 0x7C7B56993114sub 5,5,313115vxor 20,8,233116vsrab 11,8,93117vaddubm 8,8,831183119vand 11,11,103120vxor 14,3,203121xxlor 32+4, 0, 03122vpermxor 8, 8, 11, 431233124.long 0x7C9C56993125subi 5,5,0x603126vxor 21,8,233127vsrab 11,8,93128vaddubm 8,8,831293130vand 11,11,103131vxor 15,4,213132xxlor 32+5, 0, 03133vpermxor 8, 8, 11, 531343135.long 0x7CBD56993136addi 10,10,0x603137vxor 22,8,233138vsrab 11,8,93139vaddubm 8,8,831403141vand 11,11,103142vxor 16,5,223143xxlor 32+0, 0, 03144vpermxor 8, 8, 11, 031453146vxor 31,31,233147mtctr 93148b .Loop_xts_dec6x31493150.align 53151.Loop_xts_dec6x:3152.long 0x10E7C5483153.long 0x118CC5483154.long 0x11ADC5483155.long 0x11CEC5483156.long 0x11EFC5483157.long 0x1210C5483158lvx 24,26,73159addi 7,7,0x2031603161.long 0x10E7CD483162.long 0x118CCD483163.long 0x11ADCD483164.long 0x11CECD483165.long 0x11EFCD483166.long 0x1210CD483167lvx 25,3,73168bdnz .Loop_xts_dec6x31693170xxlor 32+10, 1, 131713172subic 5,5,963173vxor 0,17,313174.long 0x10E7C5483175.long 0x118CC5483176vsrab 11,8,93177vxor 17,8,233178vaddubm 8,8,83179.long 0x11ADC5483180.long 0x11CEC5483181.long 0x11EFC5483182.long 0x1210C54831833184subfe. 0,0,03185vand 11,11,103186.long 0x10E7CD483187.long 0x118CCD483188xxlor 32+1, 0, 03189vpermxor 8, 8, 11, 13190.long 0x11ADCD483191.long 0x11CECD483192vxor 1,18,313193vsrab 11,8,93194vxor 18,8,233195.long 0x11EFCD483196.long 0x1210CD4831973198and 0,0,53199vaddubm 8,8,83200.long 0x10E7D5483201.long 0x118CD5483202vand 11,11,103203.long 0x11ADD5483204.long 0x11CED5483205xxlor 32+2, 0, 03206vpermxor 8, 8, 11, 23207.long 0x11EFD5483208.long 0x1210D54832093210add 10,10,03211321232133214vxor 2,19,313215vsrab 11,8,93216vxor 19,8,233217vaddubm 8,8,83218.long 0x10E7DD483219.long 0x118CDD483220.long 0x11ADDD483221.long 0x11CEDD483222vand 11,11,103223.long 0x11EFDD483224.long 0x1210DD4832253226addi 7,1,32+153227xxlor 32+3, 0, 03228vpermxor 8, 8, 11, 33229.long 0x10E7E5483230.long 0x118CE5483231vxor 3,20,313232vsrab 11,8,93233vxor 20,8,233234.long 0x11ADE5483235.long 0x11CEE5483236vaddubm 8,8,83237.long 0x11EFE5483238.long 0x1210E5483239lvx 24,0,73240vand 11,11,1032413242.long 0x10E7ED483243.long 0x118CED483244xxlor 32+4, 0, 03245vpermxor 8, 8, 11, 43246.long 0x11ADED483247.long 0x11CEED483248vxor 4,21,313249vsrab 11,8,93250vxor 21,8,233251.long 0x11EFED483252.long 0x1210ED483253lvx 25,3,73254vaddubm 8,8,832553256.long 0x10E7F5483257.long 0x118CF5483258vand 11,11,103259.long 0x11ADF5483260.long 0x11CEF5483261xxlor 32+5, 0, 03262vpermxor 8, 8, 11, 53263.long 0x11EFF5483264.long 0x1210F5483265vxor 5,22,313266vsrab 11,8,93267vxor 22,8,2332683269.long 0x10E705493270.long 0x7C0056993271vaddubm 8,8,83272.long 0x118C0D493273.long 0x7C2356993274.long 0x11AD154932753276.long 0x7C5A56993277vand 11,11,103278.long 0x11CE1D4932793280.long 0x7C7B56993281.long 0x11EF254932823283.long 0x7C9C56993284xxlor 10, 32+0, 32+03285xxlor 32+0, 0, 03286vpermxor 8, 8, 11, 03287xxlor 32+0, 10, 103288.long 0x12102D4932893290.long 0x7CBD56993291addi 10,10,0x60329232933294329532963297.long 0x7CE027993298vxor 7,0,1732993300.long 0x7D8327993301vxor 12,1,1833023303.long 0x7DBA27993304vxor 13,2,1933053306.long 0x7DDB27993307vxor 14,3,2033083309.long 0x7DFC27993310vxor 15,4,213311.long 0x7E1D27993312vxor 16,5,223313addi 4,4,0x6033143315mtctr 93316beq .Loop_xts_dec6x33173318xxlor 32+10, 2, 233193320addic. 5,5,0x603321beq .Lxts_dec6x_zero3322cmpwi 5,0x203323blt .Lxts_dec6x_one3324nop3325beq .Lxts_dec6x_two3326cmpwi 5,0x403327blt .Lxts_dec6x_three3328nop3329beq .Lxts_dec6x_four33303331.Lxts_dec6x_five:3332vxor 7,1,173333vxor 12,2,183334vxor 13,3,193335vxor 14,4,203336vxor 15,5,2133373338bl _aesp8_xts_dec5x333933403341vor 17,22,223342vxor 18,8,2333433344.long 0x7CE027993345vxor 7,0,1833463347.long 0x7D83279933483349.long 0x7DBA279933503351.long 0x7DDB27993352.long 0x7DFC27993353addi 4,4,0x503354bne .Lxts_dec6x_steal3355b .Lxts_dec6x_done33563357.align 43358.Lxts_dec6x_four:3359vxor 7,2,173360vxor 12,3,183361vxor 13,4,193362vxor 14,5,203363vxor 15,15,1533643365bl _aesp8_xts_dec5x336633673368vor 17,21,213369vor 18,22,2233703371.long 0x7CE027993372vxor 7,0,2233733374.long 0x7D83279933753376.long 0x7DBA27993377.long 0x7DDB27993378addi 4,4,0x403379bne .Lxts_dec6x_steal3380b .Lxts_dec6x_done33813382.align 43383.Lxts_dec6x_three:3384vxor 7,3,173385vxor 12,4,183386vxor 13,5,193387vxor 14,14,143388vxor 15,15,1533893390bl _aesp8_xts_dec5x339133923393vor 17,20,203394vor 18,21,2133953396.long 0x7CE027993397vxor 7,0,2133983399.long 0x7D8327993400.long 0x7DBA27993401addi 4,4,0x303402bne .Lxts_dec6x_steal3403b .Lxts_dec6x_done34043405.align 43406.Lxts_dec6x_two:3407vxor 7,4,173408vxor 12,5,183409vxor 13,13,133410vxor 14,14,143411vxor 15,15,1534123413bl _aesp8_xts_dec5x341434153416vor 17,19,193417vor 18,20,2034183419.long 0x7CE027993420vxor 7,0,203421.long 0x7D8327993422addi 4,4,0x203423bne .Lxts_dec6x_steal3424b .Lxts_dec6x_done34253426.align 43427.Lxts_dec6x_one:3428vxor 7,5,173429nop3430.Loop_xts_dec1x:3431.long 0x10E7C5483432lvx 24,26,73433addi 7,7,0x2034343435.long 0x10E7CD483436lvx 25,3,73437bdnz .Loop_xts_dec1x34383439subi 0,31,13440.long 0x10E7C54834413442andi. 0,0,163443cmpwi 31,03444.long 0x10E7CD4834453446sub 10,10,03447.long 0x10E7D54834483449.long 0x7C0056993450.long 0x10E7DD4834513452addi 7,1,32+153453.long 0x10E7E5483454lvx 24,0,734553456.long 0x10E7ED483457lvx 25,3,73458vxor 17,17,31345934603461.long 0x10E7F54834623463mtctr 93464.long 0x10E78D4934653466vor 17,18,183467vor 18,19,1934683469.long 0x7CE027993470addi 4,4,0x103471vxor 7,0,193472bne .Lxts_dec6x_steal3473b .Lxts_dec6x_done34743475.align 43476.Lxts_dec6x_zero:3477cmpwi 31,03478beq .Lxts_dec6x_done34793480.long 0x7C00569934813482vxor 7,0,183483.Lxts_dec6x_steal:3484.long 0x10E7C5483485lvx 24,26,73486addi 7,7,0x2034873488.long 0x10E7CD483489lvx 25,3,73490bdnz .Lxts_dec6x_steal34913492add 10,10,313493.long 0x10E7C54834943495cmpwi 31,03496.long 0x10E7CD4834973498.long 0x7C0056993499.long 0x10E7D54835003501lvsr 5,0,313502.long 0x10E7DD4835033504addi 7,1,32+153505.long 0x10E7E5483506lvx 24,0,735073508.long 0x10E7ED483509lvx 25,3,73510vxor 18,18,31351135123513.long 0x10E7F54835143515vperm 0,0,0,53516.long 0x116795493517351835193520.long 0x7D60279935213522vxor 7,7,73523vspltisb 12,-13524vperm 7,7,12,53525vsel 7,0,11,73526vxor 7,7,1735273528subi 30,4,13529mtctr 313530.Loop_xts_dec6x_steal:3531lbzu 0,1(30)3532stb 0,16(30)3533bdnz .Loop_xts_dec6x_steal35343535li 31,03536mtctr 93537b .Loop_xts_dec1x35383539.align 43540.Lxts_dec6x_done:3541cmplwi 8,03542beq .Lxts_dec6x_ret35433544vxor 8,17,2335453546.long 0x7D00479935473548.Lxts_dec6x_ret:3549mtlr 113550li 10,473551li 11,633552stvx 9,10,13553addi 10,10,323554stvx 9,11,13555addi 11,11,323556stvx 9,10,13557addi 10,10,323558stvx 9,11,13559addi 11,11,323560stvx 9,10,13561addi 10,10,323562stvx 9,11,13563addi 11,11,323564stvx 9,10,13565addi 10,10,323566stvx 9,11,13567addi 11,11,3235683569mtspr 256,123570lvx 20,10,13571addi 10,10,323572lvx 21,11,13573addi 11,11,323574lvx 22,10,13575addi 10,10,323576lvx 23,11,13577addi 11,11,323578lvx 24,10,13579addi 10,10,323580lvx 25,11,13581addi 11,11,323582lvx 26,10,13583addi 10,10,323584lvx 27,11,13585addi 11,11,323586lvx 28,10,13587addi 10,10,323588lvx 29,11,13589addi 11,11,323590lvx 30,10,13591lvx 31,11,13592lwz 26,368(1)3593lwz 27,372(1)3594lwz 28,376(1)3595lwz 29,380(1)3596lwz 30,384(1)3597lwz 31,388(1)3598addi 1,1,3923599blr3600.long 03601.byte 0,12,0x04,1,0x80,6,6,03602.long 036033604.align 53605_aesp8_xts_dec5x:3606.long 0x10E7C5483607.long 0x118CC5483608.long 0x11ADC5483609.long 0x11CEC5483610.long 0x11EFC5483611lvx 24,26,73612addi 7,7,0x2036133614.long 0x10E7CD483615.long 0x118CCD483616.long 0x11ADCD483617.long 0x11CECD483618.long 0x11EFCD483619lvx 25,3,73620bdnz _aesp8_xts_dec5x36213622subi 0,31,13623.long 0x10E7C5483624.long 0x118CC5483625.long 0x11ADC5483626.long 0x11CEC5483627.long 0x11EFC54836283629andi. 0,0,163630cmpwi 31,03631.long 0x10E7CD483632.long 0x118CCD483633.long 0x11ADCD483634.long 0x11CECD483635.long 0x11EFCD483636vxor 17,17,3136373638sub 10,10,03639.long 0x10E7D5483640.long 0x118CD5483641.long 0x11ADD5483642.long 0x11CED5483643.long 0x11EFD5483644vxor 1,18,3136453646.long 0x10E7DD483647.long 0x7C0056993648.long 0x118CDD483649.long 0x11ADDD483650.long 0x11CEDD483651.long 0x11EFDD483652vxor 2,19,3136533654addi 7,1,32+153655.long 0x10E7E5483656.long 0x118CE5483657.long 0x11ADE5483658.long 0x11CEE5483659.long 0x11EFE5483660lvx 24,0,73661vxor 3,20,3136623663.long 0x10E7ED4836643665.long 0x118CED483666.long 0x11ADED483667.long 0x11CEED483668.long 0x11EFED483669lvx 25,3,73670vxor 4,21,3136713672.long 0x10E7F5483673.long 0x118CF5483674.long 0x11ADF5483675.long 0x11CEF5483676.long 0x11EFF54836773678.long 0x10E78D493679.long 0x118C0D493680.long 0x11AD15493681.long 0x11CE1D493682.long 0x11EF25493683mtctr 93684blr3685.long 03686.byte 0,12,0x14,0,0,0,0,0368736883689