Path: blob/main/sys/crypto/openssl/powerpc/vpaes-ppc.S
39482 views
/* Do not modify. This file is auto-generated from vpaes-ppc.pl. */1.machine "any"23.text45.align 76_vpaes_consts:7.Lk_mc_forward:8.byte 0x01,0x02,0x03,0x00,0x05,0x06,0x07,0x04,0x09,0x0a,0x0b,0x08,0x0d,0x0e,0x0f,0x0c9.byte 0x05,0x06,0x07,0x04,0x09,0x0a,0x0b,0x08,0x0d,0x0e,0x0f,0x0c,0x01,0x02,0x03,0x0010.byte 0x09,0x0a,0x0b,0x08,0x0d,0x0e,0x0f,0x0c,0x01,0x02,0x03,0x00,0x05,0x06,0x07,0x0411.byte 0x0d,0x0e,0x0f,0x0c,0x01,0x02,0x03,0x00,0x05,0x06,0x07,0x04,0x09,0x0a,0x0b,0x0812.Lk_mc_backward:13.byte 0x03,0x00,0x01,0x02,0x07,0x04,0x05,0x06,0x0b,0x08,0x09,0x0a,0x0f,0x0c,0x0d,0x0e14.byte 0x0f,0x0c,0x0d,0x0e,0x03,0x00,0x01,0x02,0x07,0x04,0x05,0x06,0x0b,0x08,0x09,0x0a15.byte 0x0b,0x08,0x09,0x0a,0x0f,0x0c,0x0d,0x0e,0x03,0x00,0x01,0x02,0x07,0x04,0x05,0x0616.byte 0x07,0x04,0x05,0x06,0x0b,0x08,0x09,0x0a,0x0f,0x0c,0x0d,0x0e,0x03,0x00,0x01,0x0217.Lk_sr:18.byte 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f19.byte 0x00,0x05,0x0a,0x0f,0x04,0x09,0x0e,0x03,0x08,0x0d,0x02,0x07,0x0c,0x01,0x06,0x0b20.byte 0x00,0x09,0x02,0x0b,0x04,0x0d,0x06,0x0f,0x08,0x01,0x0a,0x03,0x0c,0x05,0x0e,0x0721.byte 0x00,0x0d,0x0a,0x07,0x04,0x01,0x0e,0x0b,0x08,0x05,0x02,0x0f,0x0c,0x09,0x06,0x032223242526.Lk_inv:27.byte 0xf0,0x01,0x08,0x0d,0x0f,0x06,0x05,0x0e,0x02,0x0c,0x0b,0x0a,0x09,0x03,0x07,0x0428.byte 0xf0,0x07,0x0b,0x0f,0x06,0x0a,0x04,0x01,0x09,0x08,0x05,0x02,0x0c,0x0e,0x0d,0x0329.Lk_ipt:30.byte 0x00,0x70,0x2a,0x5a,0x98,0xe8,0xb2,0xc2,0x08,0x78,0x22,0x52,0x90,0xe0,0xba,0xca31.byte 0x00,0x4d,0x7c,0x31,0x7d,0x30,0x01,0x4c,0x81,0xcc,0xfd,0xb0,0xfc,0xb1,0x80,0xcd32.Lk_sbo:33.byte 0x00,0xc7,0xbd,0x6f,0x17,0x6d,0xd2,0xd0,0x78,0xa8,0x02,0xc5,0x7a,0xbf,0xaa,0x1534.byte 0x00,0x6a,0xbb,0x5f,0xa5,0x74,0xe4,0xcf,0xfa,0x35,0x2b,0x41,0xd1,0x90,0x1e,0x8e35.Lk_sb1:36.byte 0x00,0x23,0xe2,0xfa,0x15,0xd4,0x18,0x36,0xef,0xd9,0x2e,0x0d,0xc1,0xcc,0xf7,0x3b37.byte 0x00,0x3e,0x50,0xcb,0x8f,0xe1,0x9b,0xb1,0x44,0xf5,0x2a,0x14,0x6e,0x7a,0xdf,0xa538.Lk_sb2:39.byte 0x00,0x29,0xe1,0x0a,0x40,0x88,0xeb,0x69,0x4a,0x23,0x82,0xab,0xc8,0x63,0xa1,0xc240.byte 0x00,0x24,0x71,0x0b,0xc6,0x93,0x7a,0xe2,0xcd,0x2f,0x98,0xbc,0x55,0xe9,0xb7,0x5e4142434445.Lk_dipt:46.byte 0x00,0x5f,0x54,0x0b,0x04,0x5b,0x50,0x0f,0x1a,0x45,0x4e,0x11,0x1e,0x41,0x4a,0x1547.byte 0x00,0x65,0x05,0x60,0xe6,0x83,0xe3,0x86,0x94,0xf1,0x91,0xf4,0x72,0x17,0x77,0x1248.Lk_dsbo:49.byte 0x00,0x40,0xf9,0x7e,0x53,0xea,0x87,0x13,0x2d,0x3e,0x94,0xd4,0xb9,0x6d,0xaa,0xc750.byte 0x00,0x1d,0x44,0x93,0x0f,0x56,0xd7,0x12,0x9c,0x8e,0xc5,0xd8,0x59,0x81,0x4b,0xca51.Lk_dsb9:52.byte 0x00,0xd6,0x86,0x9a,0x53,0x03,0x1c,0x85,0xc9,0x4c,0x99,0x4f,0x50,0x1f,0xd5,0xca53.byte 0x00,0x49,0xd7,0xec,0x89,0x17,0x3b,0xc0,0x65,0xa5,0xfb,0xb2,0x9e,0x2c,0x5e,0x7254.Lk_dsbd:55.byte 0x00,0xa2,0xb1,0xe6,0xdf,0xcc,0x57,0x7d,0x39,0x44,0x2a,0x88,0x13,0x9b,0x6e,0xf556.byte 0x00,0xcb,0xc6,0x24,0xf7,0xfa,0xe2,0x3c,0xd3,0xef,0xde,0x15,0x0d,0x18,0x31,0x2957.Lk_dsbb:58.byte 0x00,0x42,0xb4,0x96,0x92,0x64,0x22,0xd0,0x04,0xd4,0xf2,0xb0,0xf6,0x46,0x26,0x6059.byte 0x00,0x67,0x59,0xcd,0xa6,0x98,0x94,0xc1,0x6b,0xaa,0x55,0x32,0x3e,0x0c,0xff,0xf360.Lk_dsbe:61.byte 0x00,0xd0,0xd4,0x26,0x96,0x92,0xf2,0x46,0xb0,0xf6,0xb4,0x64,0x04,0x60,0x42,0x2262.byte 0x00,0xc1,0xaa,0xff,0xcd,0xa6,0x55,0x0c,0x32,0x3e,0x59,0x98,0x6b,0xf3,0x67,0x946364656667.Lk_dksd:68.byte 0x00,0x47,0xe4,0xa3,0x5d,0x1a,0xb9,0xfe,0xf9,0xbe,0x1d,0x5a,0xa4,0xe3,0x40,0x0769.byte 0x00,0x83,0x36,0xb5,0xf4,0x77,0xc2,0x41,0x1e,0x9d,0x28,0xab,0xea,0x69,0xdc,0x5f70.Lk_dksb:71.byte 0x00,0xd5,0x50,0x85,0x1f,0xca,0x4f,0x9a,0x99,0x4c,0xc9,0x1c,0x86,0x53,0xd6,0x0372.byte 0x00,0x4a,0xfc,0xb6,0xa7,0xed,0x5b,0x11,0xc8,0x82,0x34,0x7e,0x6f,0x25,0x93,0xd973.Lk_dkse:74.byte 0x00,0xd6,0xc9,0x1f,0xca,0x1c,0x03,0xd5,0x86,0x50,0x4f,0x99,0x4c,0x9a,0x85,0x5375.byte 0xe8,0x7b,0xdc,0x4f,0x05,0x96,0x31,0xa2,0x87,0x14,0xb3,0x20,0x6a,0xf9,0x5e,0xcd76.Lk_dks9:77.byte 0x00,0xa7,0xd9,0x7e,0xc8,0x6f,0x11,0xb6,0xfc,0x5b,0x25,0x82,0x34,0x93,0xed,0x4a78.byte 0x00,0x33,0x14,0x27,0x62,0x51,0x76,0x45,0xce,0xfd,0xda,0xe9,0xac,0x9f,0xb8,0x8b7980.Lk_rcon:81.byte 0xb6,0xee,0x9d,0xaf,0xb9,0x91,0x83,0x1f,0x81,0x7d,0x7c,0x4d,0x08,0x98,0x2a,0x7082.Lk_s63:83.byte 0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b8485.Lk_opt:86.byte 0x00,0x60,0xb6,0xd6,0x29,0x49,0x9f,0xff,0x08,0x68,0xbe,0xde,0x21,0x41,0x97,0xf787.byte 0x00,0xec,0xbc,0x50,0x51,0xbd,0xed,0x01,0xe0,0x0c,0x5c,0xb0,0xb1,0x5d,0x0d,0xe188.Lk_deskew:89.byte 0x00,0xe3,0xa4,0x47,0x40,0xa3,0xe4,0x07,0x1a,0xf9,0xbe,0x5d,0x5a,0xb9,0xfe,0x1d90.byte 0x00,0x69,0xea,0x83,0xdc,0xb5,0x36,0x5f,0x77,0x1e,0x9d,0xf4,0xab,0xc2,0x41,0x2891.align 592.Lconsts:93mflr 094bcl 20,31,$+495mflr 1296addi 12,12,-0x30897mtlr 098blr99.long 0100.byte 0,12,0x14,0,0,0,0,0101.byte 86,101,99,116,111,114,32,80,101,114,109,117,116,97,116,105,111,110,32,65,69,83,32,102,111,114,32,65,108,116,105,86,101,99,44,77,105,107,101,32,72,97,109,98,117,114,103,32,40,83,116,97,110,102,111,114,100,32,85,110,105,118,101,114,115,105,116,121,41,0102.align 2103.align 6104105106107108109110.align 4111_vpaes_encrypt_preheat:112mflr 8113bl .Lconsts114mtlr 8115li 11, 0xc0116li 10, 0xd0117li 9, 0xe0118li 8, 0xf0119vxor 7, 7, 7120vspltisb 8,4121vspltisb 9,0x0f122lvx 10, 12, 11123li 11, 0x100124lvx 11, 12, 10125li 10, 0x110126lvx 12, 12, 9127li 9, 0x120128lvx 13, 12, 8129li 8, 0x130130lvx 14, 12, 11131li 11, 0x140132lvx 15, 12, 10133li 10, 0x150134lvx 16, 12, 9135lvx 17, 12, 8136lvx 18, 12, 11137lvx 19, 12, 10138blr139.long 0140.byte 0,12,0x14,0,0,0,0,0141142143144145146147148149150151152153154155156.align 5157_vpaes_encrypt_core:158lwz 8, 240(5)159li 9, 16160lvx 5, 0, 5161li 11, 0x10162lvx 6, 9, 5163addi 9, 9, 16164vperm 5, 5, 6, 31165addi 10, 11, 0x40166vsrb 1, 0, 8167vperm 0, 12, 12, 0168vperm 1, 13, 13, 1169vxor 0, 0, 5170vxor 0, 0, 1171mtctr 8172b .Lenc_entry173174.align 4175.Lenc_loop:176177vperm 4, 17, 7, 2178lvx 1, 12, 11179addi 11, 11, 16180vperm 0, 16, 7, 3181vxor 4, 4, 5182andi. 11, 11, 0x30183vperm 5, 19, 7, 2184vxor 0, 0, 4185vperm 2, 18, 7, 3186lvx 4, 12, 10187addi 10, 11, 0x40188vperm 3, 0, 7, 1189vxor 2, 2, 5190vperm 0, 0, 7, 4191vxor 3, 3, 2192vperm 4, 3, 7, 1193vxor 0, 0, 3194vxor 0, 0, 4195196.Lenc_entry:197198vsrb 1, 0, 8199vperm 5, 11, 11, 0200vxor 0, 0, 1201vperm 3, 10, 10, 1202vperm 4, 10, 10, 0203vand 0, 0, 9204vxor 3, 3, 5205vxor 4, 4, 5206vperm 2, 10, 7, 3207vor 5,6,6208lvx 6, 9, 5209vperm 3, 10, 7, 4210addi 9, 9, 16211vxor 2, 2, 0212vperm 5, 5, 6, 31213vxor 3, 3, 1214bdnz .Lenc_loop215216217addi 10, 11, 0x80218219220vperm 4, 14, 7, 2221lvx 1, 12, 10222vperm 0, 15, 7, 3223vxor 4, 4, 5224vxor 0, 0, 4225vperm 0, 0, 7, 1226blr227.long 0228.byte 0,12,0x14,0,0,0,0,0229230.globl vpaes_encrypt231.type vpaes_encrypt,@function232.align 5233vpaes_encrypt:234stwu 1,-232(1)235li 10,39236li 11,55237mflr 6238mfspr 7,256239stvx 20,10,1240addi 10,10,32241stvx 21,11,1242addi 11,11,32243stvx 22,10,1244addi 10,10,32245stvx 23,11,1246addi 11,11,32247stvx 24,10,1248addi 10,10,32249stvx 25,11,1250addi 11,11,32251stvx 26,10,1252addi 10,10,32253stvx 27,11,1254addi 11,11,32255stvx 28,10,1256addi 10,10,32257stvx 29,11,1258addi 11,11,32259stvx 30,10,1260stvx 31,11,1261stw 7,228(1)262li 0, -1263stw 6,236(1)264mtspr 256,0265266bl _vpaes_encrypt_preheat267268lvsl 27, 0, 3269lvx 0, 0, 3270addi 3, 3, 15271lvsr 29, 0, 4272lvsl 31, 0, 5273lvx 26, 0, 3274vperm 0, 0, 26, 27275276bl _vpaes_encrypt_core277278andi. 8, 4, 15279li 9, 16280beq .Lenc_out_aligned281282vperm 0, 0, 0, 29283mtctr 9284.Lenc_out_unaligned:285stvebx 0, 0, 4286addi 4, 4, 1287bdnz .Lenc_out_unaligned288b .Lenc_done289290.align 4291.Lenc_out_aligned:292stvx 0, 0, 4293.Lenc_done:294295li 10,39296li 11,55297mtlr 6298mtspr 256,7299lvx 20,10,1300addi 10,10,32301lvx 21,11,1302addi 11,11,32303lvx 22,10,1304addi 10,10,32305lvx 23,11,1306addi 11,11,32307lvx 24,10,1308addi 10,10,32309lvx 25,11,1310addi 11,11,32311lvx 26,10,1312addi 10,10,32313lvx 27,11,1314addi 11,11,32315lvx 28,10,1316addi 10,10,32317lvx 29,11,1318addi 11,11,32319lvx 30,10,1320lvx 31,11,1321addi 1,1,232322blr323.long 0324.byte 0,12,0x04,1,0x80,0,3,0325.long 0326.size vpaes_encrypt,.-vpaes_encrypt327328.align 4329_vpaes_decrypt_preheat:330mflr 8331bl .Lconsts332mtlr 8333li 11, 0xc0334li 10, 0xd0335li 9, 0x160336li 8, 0x170337vxor 7, 7, 7338vspltisb 8,4339vspltisb 9,0x0f340lvx 10, 12, 11341li 11, 0x180342lvx 11, 12, 10343li 10, 0x190344lvx 12, 12, 9345li 9, 0x1a0346lvx 13, 12, 8347li 8, 0x1b0348lvx 14, 12, 11349li 11, 0x1c0350lvx 15, 12, 10351li 10, 0x1d0352lvx 16, 12, 9353li 9, 0x1e0354lvx 17, 12, 8355li 8, 0x1f0356lvx 18, 12, 11357li 11, 0x200358lvx 19, 12, 10359li 10, 0x210360lvx 20, 12, 9361lvx 21, 12, 8362lvx 22, 12, 11363lvx 23, 12, 10364blr365.long 0366.byte 0,12,0x14,0,0,0,0,0367368369370371372373.align 4374_vpaes_decrypt_core:375lwz 8, 240(5)376li 9, 16377lvx 5, 0, 5378li 11, 0x30379lvx 6, 9, 5380addi 9, 9, 16381vperm 5, 5, 6, 31382vsrb 1, 0, 8383vperm 0, 12, 12, 0384vperm 1, 13, 13, 1385vxor 0, 0, 5386vxor 0, 0, 1387mtctr 8388b .Ldec_entry389390.align 4391.Ldec_loop:392393394395lvx 0, 12, 11396397398vperm 4, 16, 7, 2399subi 11, 11, 16400vperm 1, 17, 7, 3401andi. 11, 11, 0x30402vxor 5, 5, 4403404vxor 5, 5, 1405406407vperm 4, 18, 7, 2408vperm 5, 5, 7, 0409vperm 1, 19, 7, 3410vxor 5, 5, 4411412vxor 5, 5, 1413414415vperm 4, 20, 7, 2416vperm 5, 5, 7, 0417vperm 1, 21, 7, 3418vxor 5, 5, 4419420vxor 5, 5, 1421422423vperm 4, 22, 7, 2424vperm 5, 5, 7, 0425vperm 1, 23, 7, 3426vxor 0, 5, 4427vxor 0, 0, 1428429.Ldec_entry:430431vsrb 1, 0, 8432vperm 2, 11, 11, 0433vxor 0, 0, 1434vperm 3, 10, 10, 1435vperm 4, 10, 10, 0436vand 0, 0, 9437vxor 3, 3, 2438vxor 4, 4, 2439vperm 2, 10, 7, 3440vor 5,6,6441lvx 6, 9, 5442vperm 3, 10, 7, 4443addi 9, 9, 16444vxor 2, 2, 0445vperm 5, 5, 6, 31446vxor 3, 3, 1447bdnz .Ldec_loop448449450addi 10, 11, 0x80451452vperm 4, 14, 7, 2453454lvx 2, 12, 10455vperm 1, 15, 7, 3456vxor 4, 4, 5457vxor 0, 1, 4458vperm 0, 0, 7, 2459blr460.long 0461.byte 0,12,0x14,0,0,0,0,0462463.globl vpaes_decrypt464.type vpaes_decrypt,@function465.align 5466vpaes_decrypt:467stwu 1,-232(1)468li 10,39469li 11,55470mflr 6471mfspr 7,256472stvx 20,10,1473addi 10,10,32474stvx 21,11,1475addi 11,11,32476stvx 22,10,1477addi 10,10,32478stvx 23,11,1479addi 11,11,32480stvx 24,10,1481addi 10,10,32482stvx 25,11,1483addi 11,11,32484stvx 26,10,1485addi 10,10,32486stvx 27,11,1487addi 11,11,32488stvx 28,10,1489addi 10,10,32490stvx 29,11,1491addi 11,11,32492stvx 30,10,1493stvx 31,11,1494stw 7,228(1)495li 0, -1496stw 6,236(1)497mtspr 256,0498499bl _vpaes_decrypt_preheat500501lvsl 27, 0, 3502lvx 0, 0, 3503addi 3, 3, 15504lvsr 29, 0, 4505lvsl 31, 0, 5506lvx 26, 0, 3507vperm 0, 0, 26, 27508509bl _vpaes_decrypt_core510511andi. 8, 4, 15512li 9, 16513beq .Ldec_out_aligned514515vperm 0, 0, 0, 29516mtctr 9517.Ldec_out_unaligned:518stvebx 0, 0, 4519addi 4, 4, 1520bdnz .Ldec_out_unaligned521b .Ldec_done522523.align 4524.Ldec_out_aligned:525stvx 0, 0, 4526.Ldec_done:527528li 10,39529li 11,55530mtlr 6531mtspr 256,7532lvx 20,10,1533addi 10,10,32534lvx 21,11,1535addi 11,11,32536lvx 22,10,1537addi 10,10,32538lvx 23,11,1539addi 11,11,32540lvx 24,10,1541addi 10,10,32542lvx 25,11,1543addi 11,11,32544lvx 26,10,1545addi 10,10,32546lvx 27,11,1547addi 11,11,32548lvx 28,10,1549addi 10,10,32550lvx 29,11,1551addi 11,11,32552lvx 30,10,1553lvx 31,11,1554addi 1,1,232555blr556.long 0557.byte 0,12,0x04,1,0x80,0,3,0558.long 0559.size vpaes_decrypt,.-vpaes_decrypt560561.globl vpaes_cbc_encrypt562.type vpaes_cbc_encrypt,@function563.align 5564vpaes_cbc_encrypt:565cmplwi 5,16566.long 0x4dc00020567568stwu 1,-240(1)569mflr 0570li 10,39571li 11,55572mfspr 12,256573stvx 20,10,1574addi 10,10,32575stvx 21,11,1576addi 11,11,32577stvx 22,10,1578addi 10,10,32579stvx 23,11,1580addi 11,11,32581stvx 24,10,1582addi 10,10,32583stvx 25,11,1584addi 11,11,32585stvx 26,10,1586addi 10,10,32587stvx 27,11,1588addi 11,11,32589stvx 28,10,1590addi 10,10,32591stvx 29,11,1592addi 11,11,32593stvx 30,10,1594stvx 31,11,1595stw 12,228(1)596stw 30,232(1)597stw 31,236(1)598li 9, -16599stw 0, 244(1)600601and 30, 5, 9602andi. 9, 4, 15603mr 5, 6604mr 31, 7605li 6, -1606mcrf 1, 0607mr 7, 12608mtspr 256,6609610lvx 24, 0, 31611li 9, 15612lvsl 27, 0, 31613lvx 25, 9, 31614vperm 24, 24, 25, 27615616cmpwi 8, 0617neg 8, 3618vxor 7, 7, 7619lvsl 31, 0, 5620lvsr 29, 0, 4621lvsr 27, 0, 8622vnor 30, 7, 7623lvx 26, 0, 3624vperm 30, 7, 30, 29625addi 3, 3, 15626627beq .Lcbc_decrypt628629bl _vpaes_encrypt_preheat630li 0, 16631632beq 1, .Lcbc_enc_loop633634vor 0,26,26635lvx 26, 0, 3636addi 3, 3, 16637vperm 0, 0, 26, 27638vxor 0, 0, 24639640bl _vpaes_encrypt_core641642andi. 8, 4, 15643vor 24,0,0644sub 9, 4, 8645vperm 28, 0, 0, 29646647.Lcbc_enc_head:648stvebx 28, 8, 9649cmpwi 8, 15650addi 8, 8, 1651bne .Lcbc_enc_head652653sub. 30, 30, 0654addi 4, 4, 16655beq .Lcbc_unaligned_done656657.Lcbc_enc_loop:658vor 0,26,26659lvx 26, 0, 3660addi 3, 3, 16661vperm 0, 0, 26, 27662vxor 0, 0, 24663664bl _vpaes_encrypt_core665666vor 24,0,0667sub. 30, 30, 0668vperm 0, 0, 0, 29669vsel 1,28,0,30670vor 28,0,0671stvx 1, 0, 4672addi 4, 4, 16673bne .Lcbc_enc_loop674675b .Lcbc_done676677.align 5678.Lcbc_decrypt:679bl _vpaes_decrypt_preheat680li 0, 16681682beq 1, .Lcbc_dec_loop683684vor 0,26,26685lvx 26, 0, 3686addi 3, 3, 16687vperm 0, 0, 26, 27688vor 25,0,0689690bl _vpaes_decrypt_core691692andi. 8, 4, 15693vxor 0, 0, 24694vor 24,25,25695sub 9, 4, 8696vperm 28, 0, 0, 29697698.Lcbc_dec_head:699stvebx 28, 8, 9700cmpwi 8, 15701addi 8, 8, 1702bne .Lcbc_dec_head703704sub. 30, 30, 0705addi 4, 4, 16706beq .Lcbc_unaligned_done707708.Lcbc_dec_loop:709vor 0,26,26710lvx 26, 0, 3711addi 3, 3, 16712vperm 0, 0, 26, 27713vor 25,0,0714715bl _vpaes_decrypt_core716717vxor 0, 0, 24718vor 24,25,25719sub. 30, 30, 0720vperm 0, 0, 0, 29721vsel 1,28,0,30722vor 28,0,0723stvx 1, 0, 4724addi 4, 4, 16725bne .Lcbc_dec_loop726727.Lcbc_done:728beq 1, .Lcbc_write_iv729730.Lcbc_unaligned_done:731andi. 8, 4, 15732sub 4, 4, 8733li 9, 0734.Lcbc_tail:735stvebx 28, 9, 4736addi 9, 9, 1737cmpw 9, 8738bne .Lcbc_tail739740.Lcbc_write_iv:741neg 8, 31742li 10, 4743lvsl 29, 0, 8744li 11, 8745li 12, 12746vperm 24, 24, 24, 29747stvewx 24, 0, 31748stvewx 24, 10, 31749stvewx 24, 11, 31750stvewx 24, 12, 31751752mtspr 256,7753li 10,39754li 11,55755lvx 20,10,1756addi 10,10,32757lvx 21,11,1758addi 11,11,32759lvx 22,10,1760addi 10,10,32761lvx 23,11,1762addi 11,11,32763lvx 24,10,1764addi 10,10,32765lvx 25,11,1766addi 11,11,32767lvx 26,10,1768addi 10,10,32769lvx 27,11,1770addi 11,11,32771lvx 28,10,1772addi 10,10,32773lvx 29,11,1774addi 11,11,32775lvx 30,10,1776lvx 31,11,1777.Lcbc_abort:778lwz 0, 244(1)779lwz 30,232(1)780lwz 31,236(1)781mtlr 0782addi 1,1,240783blr784.long 0785.byte 0,12,0x04,1,0x80,2,6,0786.long 0787.size vpaes_cbc_encrypt,.-vpaes_cbc_encrypt788789790791792793.align 4794_vpaes_key_preheat:795mflr 8796bl .Lconsts797mtlr 8798li 11, 0xc0799li 10, 0xd0800li 9, 0xe0801li 8, 0xf0802803vspltisb 8,4804vxor 9,9,9805lvx 10, 12, 11806li 11, 0x120807lvx 11, 12, 10808li 10, 0x130809lvx 12, 12, 9810li 9, 0x220811lvx 13, 12, 8812li 8, 0x230813814lvx 14, 12, 11815li 11, 0x240816lvx 15, 12, 10817li 10, 0x250818819lvx 16, 12, 9820li 9, 0x260821lvx 17, 12, 8822li 8, 0x270823lvx 18, 12, 11824li 11, 0x280825lvx 19, 12, 10826li 10, 0x290827lvx 20, 12, 9828li 9, 0x2a0829lvx 21, 12, 8830li 8, 0x2b0831lvx 22, 12, 11832lvx 23, 12, 10833834lvx 24, 12, 9835lvx 25, 0, 12836lvx 26, 12, 8837blr838.long 0839.byte 0,12,0x14,0,0,0,0,0840841.align 4842_vpaes_schedule_core:843mflr 7844845bl _vpaes_key_preheat846847848neg 8, 3849lvx 0, 0, 3850addi 3, 3, 15851lvsr 27, 0, 8852lvx 6, 0, 3853addi 3, 3, 8854vperm 0, 0, 6, 27855856857vor 3,0,0858bl _vpaes_schedule_transform859vor 7,0,0860861bne 1, .Lschedule_am_decrypting862863864li 8, 0x30865li 9, 4866li 10, 8867li 11, 12868869lvsr 29, 0, 5870vnor 30, 9, 9871vperm 30, 9, 30, 29872873874vperm 28, 0, 0, 29875stvewx 28, 0, 5876stvewx 28, 9, 5877stvewx 28, 10, 5878addi 10, 12, 0x80879stvewx 28, 11, 5880b .Lschedule_go881882.Lschedule_am_decrypting:883srwi 8, 4, 1884andi. 8, 8, 32885xori 8, 8, 32886addi 10, 12, 0x80887888lvx 1, 8, 10889li 9, 4890li 10, 8891li 11, 12892vperm 4, 3, 3, 1893894neg 0, 5895lvsl 29, 0, 0896vnor 30, 9, 9897vperm 30, 30, 9, 29898899900vperm 28, 4, 4, 29901stvewx 28, 0, 5902stvewx 28, 9, 5903stvewx 28, 10, 5904addi 10, 12, 0x80905stvewx 28, 11, 5906addi 5, 5, 15907xori 8, 8, 0x30908909.Lschedule_go:910cmplwi 4, 192911bgt .Lschedule_256912beq .Lschedule_192913914915916917918919920921922923.Lschedule_128:924li 0, 10925mtctr 0926927.Loop_schedule_128:928bl _vpaes_schedule_round929bdz .Lschedule_mangle_last930bl _vpaes_schedule_mangle931b .Loop_schedule_128932933934935936937938939940941942943944945946947948.align 4949.Lschedule_192:950li 0, 4951lvx 0, 0, 3952vperm 0, 6, 0, 27953vsldoi 0, 3, 0, 8954bl _vpaes_schedule_transform955vsldoi 6, 0, 9, 8956vsldoi 6, 9, 6, 8957mtctr 0958959.Loop_schedule_192:960bl _vpaes_schedule_round961vsldoi 0, 6, 0, 8962bl _vpaes_schedule_mangle963bl _vpaes_schedule_192_smear964bl _vpaes_schedule_mangle965bl _vpaes_schedule_round966bdz .Lschedule_mangle_last967bl _vpaes_schedule_mangle968bl _vpaes_schedule_192_smear969b .Loop_schedule_192970971972973974975976977978979980981.align 4982.Lschedule_256:983li 0, 7984addi 3, 3, 8985lvx 0, 0, 3986vperm 0, 6, 0, 27987bl _vpaes_schedule_transform988mtctr 0989990.Loop_schedule_256:991bl _vpaes_schedule_mangle992vor 6,0,0993994995bl _vpaes_schedule_round996bdz .Lschedule_mangle_last997bl _vpaes_schedule_mangle9989991000vspltw 0, 0, 31001vor 5,7,71002vor 7,6,61003bl _vpaes_schedule_low_round1004vor 7,5,510051006b .Loop_schedule_25610071008100910101011101210131014101510161017.align 41018.Lschedule_mangle_last:10191020li 11, 0x2e01021li 9, 0x2f01022bne 1, .Lschedule_mangle_last_dec102310241025lvx 1, 8, 101026li 11, 0x2c01027li 9, 0x2d01028vperm 0, 0, 0, 110291030lvx 12, 11, 121031lvx 13, 9, 121032addi 5, 5, 161033vxor 0, 0, 261034bl _vpaes_schedule_transform103510361037vperm 0, 0, 0, 291038li 10, 41039vsel 2,28,0,301040li 11, 81041stvx 2, 0, 51042li 12, 121043stvewx 0, 0, 51044stvewx 0, 10, 51045stvewx 0, 11, 51046stvewx 0, 12, 51047b .Lschedule_mangle_done10481049.align 41050.Lschedule_mangle_last_dec:1051lvx 12, 11, 121052lvx 13, 9, 121053addi 5, 5, -161054vxor 0, 0, 261055bl _vpaes_schedule_transform105610571058addi 9, 5, -151059vperm 0, 0, 0, 291060li 10, 41061vsel 2,28,0,301062li 11, 81063stvx 2, 0, 51064li 12, 121065stvewx 0, 0, 91066stvewx 0, 10, 91067stvewx 0, 11, 91068stvewx 0, 12, 9106910701071.Lschedule_mangle_done:1072mtlr 710731074vxor 0, 0, 01075vxor 1, 1, 11076vxor 2, 2, 21077vxor 3, 3, 31078vxor 4, 4, 41079vxor 5, 5, 51080vxor 6, 6, 61081vxor 7, 7, 710821083blr1084.long 01085.byte 0,12,0x14,0,0,0,0,01086108710881089109010911092109310941095109610971098109911001101.align 41102_vpaes_schedule_192_smear:1103vspltw 0, 7, 31104vsldoi 1, 9, 6, 121105vsldoi 0, 7, 0, 81106vxor 6, 6, 11107vxor 6, 6, 01108vor 0,6,61109vsldoi 6, 6, 9, 81110vsldoi 6, 9, 6, 81111blr1112.long 01113.byte 0,12,0x14,0,0,0,0,011141115111611171118111911201121112211231124112511261127112811291130113111321133.align 41134_vpaes_schedule_round:113511361137vsldoi 1, 24, 9, 151138vsldoi 24, 24, 24, 151139vxor 7, 7, 1114011411142vspltw 0, 0, 31143vsldoi 0, 0, 0, 111441145114611471148_vpaes_schedule_low_round:11491150vsldoi 1, 9, 7, 121151vxor 7, 7, 11152vspltisb 1,0x0f1153vsldoi 4, 9, 7, 8115411551156vand 1, 1, 01157vsrb 0, 0, 81158vxor 7, 7, 41159vperm 2, 11, 9, 11160vxor 1, 1, 01161vperm 3, 10, 9, 01162vxor 3, 3, 21163vperm 4, 10, 9, 11164vxor 7, 7, 261165vperm 3, 10, 9, 31166vxor 4, 4, 21167vperm 2, 10, 9, 41168vxor 3, 3, 11169vxor 2, 2, 01170vperm 4, 15, 9, 31171vperm 1, 14, 9, 21172vxor 1, 1, 4117311741175vxor 0, 1, 71176vxor 7, 1, 71177blr1178.long 01179.byte 0,12,0x14,0,0,0,0,011801181118211831184118511861187118811891190.align 41191_vpaes_schedule_transform:11921193vsrb 2, 0, 811941195vperm 0, 12, 12, 011961197vperm 2, 13, 13, 21198vxor 0, 0, 21199blr1200.long 01201.byte 0,12,0x14,0,0,0,0,01202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226.align 41227_vpaes_schedule_mangle:122812291230bne 1, .Lschedule_mangle_dec123112321233vxor 4, 0, 261234addi 5, 5, 161235vperm 4, 4, 4, 251236vperm 1, 4, 4, 251237vperm 3, 1, 1, 251238vxor 4, 4, 11239lvx 1, 8, 101240vxor 3, 3, 412411242vperm 3, 3, 3, 11243addi 8, 8, -161244andi. 8, 8, 0x30124512461247vperm 1, 3, 3, 291248vsel 2,28,1,301249vor 28,1,11250stvx 2, 0, 51251blr12521253.align 41254.Lschedule_mangle_dec:125512561257vsrb 1, 0, 81258125912601261vperm 2, 16, 16, 012621263vperm 3, 17, 17, 11264vxor 3, 3, 21265vperm 3, 3, 9, 25126612671268vperm 2, 18, 18, 01269vxor 2, 2, 312701271vperm 3, 19, 19, 11272vxor 3, 3, 21273vperm 3, 3, 9, 25127412751276vperm 2, 20, 20, 01277vxor 2, 2, 312781279vperm 3, 21, 21, 11280vxor 3, 3, 2128112821283vperm 2, 22, 22, 01284vperm 3, 3, 9, 2512851286vperm 4, 23, 23, 11287lvx 1, 8, 101288vxor 2, 2, 31289vxor 3, 4, 212901291addi 5, 5, -1612921293vperm 3, 3, 3, 11294addi 8, 8, -161295andi. 8, 8, 0x30129612971298vperm 1, 3, 3, 291299vsel 2,28,1,301300vor 28,1,11301stvx 2, 0, 51302blr1303.long 01304.byte 0,12,0x14,0,0,0,0,013051306.globl vpaes_set_encrypt_key1307.type vpaes_set_encrypt_key,@function1308.align 51309vpaes_set_encrypt_key:1310stwu 1,-232(1)1311li 10,391312li 11,551313mflr 01314mfspr 6,2561315stvx 20,10,11316addi 10,10,321317stvx 21,11,11318addi 11,11,321319stvx 22,10,11320addi 10,10,321321stvx 23,11,11322addi 11,11,321323stvx 24,10,11324addi 10,10,321325stvx 25,11,11326addi 11,11,321327stvx 26,10,11328addi 10,10,321329stvx 27,11,11330addi 11,11,321331stvx 28,10,11332addi 10,10,321333stvx 29,11,11334addi 11,11,321335stvx 30,10,11336stvx 31,11,11337stw 6,228(1)1338li 7, -11339stw 0, 236(1)1340mtspr 256,713411342srwi 9, 4, 51343addi 9, 9, 61344stw 9, 240(5)13451346.long 0x7c8420401347li 8, 0x301348bl _vpaes_schedule_core13491350lwz 0, 236(1)1351li 10,391352li 11,551353mtspr 256,61354mtlr 01355xor 3, 3, 31356lvx 20,10,11357addi 10,10,321358lvx 21,11,11359addi 11,11,321360lvx 22,10,11361addi 10,10,321362lvx 23,11,11363addi 11,11,321364lvx 24,10,11365addi 10,10,321366lvx 25,11,11367addi 11,11,321368lvx 26,10,11369addi 10,10,321370lvx 27,11,11371addi 11,11,321372lvx 28,10,11373addi 10,10,321374lvx 29,11,11375addi 11,11,321376lvx 30,10,11377lvx 31,11,11378addi 1,1,2321379blr1380.long 01381.byte 0,12,0x04,1,0x80,0,3,01382.long 01383.size vpaes_set_encrypt_key,.-vpaes_set_encrypt_key13841385.globl vpaes_set_decrypt_key1386.type vpaes_set_decrypt_key,@function1387.align 41388vpaes_set_decrypt_key:1389stwu 1,-232(1)1390li 10,391391li 11,551392mflr 01393mfspr 6,2561394stvx 20,10,11395addi 10,10,321396stvx 21,11,11397addi 11,11,321398stvx 22,10,11399addi 10,10,321400stvx 23,11,11401addi 11,11,321402stvx 24,10,11403addi 10,10,321404stvx 25,11,11405addi 11,11,321406stvx 26,10,11407addi 10,10,321408stvx 27,11,11409addi 11,11,321410stvx 28,10,11411addi 10,10,321412stvx 29,11,11413addi 11,11,321414stvx 30,10,11415stvx 31,11,11416stw 6,228(1)1417li 7, -11418stw 0, 236(1)1419mtspr 256,714201421srwi 9, 4, 51422addi 9, 9, 61423stw 9, 240(5)14241425slwi 9, 9, 41426add 5, 5, 914271428cmplwi 1, 4, 01429srwi 8, 4, 11430andi. 8, 8, 321431xori 8, 8, 321432bl _vpaes_schedule_core14331434lwz 0, 236(1)1435li 10,391436li 11,551437mtspr 256,61438mtlr 01439xor 3, 3, 31440lvx 20,10,11441addi 10,10,321442lvx 21,11,11443addi 11,11,321444lvx 22,10,11445addi 10,10,321446lvx 23,11,11447addi 11,11,321448lvx 24,10,11449addi 10,10,321450lvx 25,11,11451addi 11,11,321452lvx 26,10,11453addi 10,10,321454lvx 27,11,11455addi 11,11,321456lvx 28,10,11457addi 10,10,321458lvx 29,11,11459addi 11,11,321460lvx 30,10,11461lvx 31,11,11462addi 1,1,2321463blr1464.long 01465.byte 0,12,0x04,1,0x80,0,3,01466.long 01467.size vpaes_set_decrypt_key,.-vpaes_set_decrypt_key146814691470