f15eff55bf
AES_set_{encrypt,decrypt}_key are not provided.
1468 lines
32 KiB
ArmAsm
1468 lines
32 KiB
ArmAsm
.register %g2,#scratch
|
|
.register %g3,#scratch
|
|
.section ".text",#alloc,#execinstr
|
|
|
|
.align 256
|
|
AES_Te:
|
|
.long 0xc66363a5,0xc66363a5
|
|
.long 0xf87c7c84,0xf87c7c84
|
|
.long 0xee777799,0xee777799
|
|
.long 0xf67b7b8d,0xf67b7b8d
|
|
.long 0xfff2f20d,0xfff2f20d
|
|
.long 0xd66b6bbd,0xd66b6bbd
|
|
.long 0xde6f6fb1,0xde6f6fb1
|
|
.long 0x91c5c554,0x91c5c554
|
|
.long 0x60303050,0x60303050
|
|
.long 0x02010103,0x02010103
|
|
.long 0xce6767a9,0xce6767a9
|
|
.long 0x562b2b7d,0x562b2b7d
|
|
.long 0xe7fefe19,0xe7fefe19
|
|
.long 0xb5d7d762,0xb5d7d762
|
|
.long 0x4dababe6,0x4dababe6
|
|
.long 0xec76769a,0xec76769a
|
|
.long 0x8fcaca45,0x8fcaca45
|
|
.long 0x1f82829d,0x1f82829d
|
|
.long 0x89c9c940,0x89c9c940
|
|
.long 0xfa7d7d87,0xfa7d7d87
|
|
.long 0xeffafa15,0xeffafa15
|
|
.long 0xb25959eb,0xb25959eb
|
|
.long 0x8e4747c9,0x8e4747c9
|
|
.long 0xfbf0f00b,0xfbf0f00b
|
|
.long 0x41adadec,0x41adadec
|
|
.long 0xb3d4d467,0xb3d4d467
|
|
.long 0x5fa2a2fd,0x5fa2a2fd
|
|
.long 0x45afafea,0x45afafea
|
|
.long 0x239c9cbf,0x239c9cbf
|
|
.long 0x53a4a4f7,0x53a4a4f7
|
|
.long 0xe4727296,0xe4727296
|
|
.long 0x9bc0c05b,0x9bc0c05b
|
|
.long 0x75b7b7c2,0x75b7b7c2
|
|
.long 0xe1fdfd1c,0xe1fdfd1c
|
|
.long 0x3d9393ae,0x3d9393ae
|
|
.long 0x4c26266a,0x4c26266a
|
|
.long 0x6c36365a,0x6c36365a
|
|
.long 0x7e3f3f41,0x7e3f3f41
|
|
.long 0xf5f7f702,0xf5f7f702
|
|
.long 0x83cccc4f,0x83cccc4f
|
|
.long 0x6834345c,0x6834345c
|
|
.long 0x51a5a5f4,0x51a5a5f4
|
|
.long 0xd1e5e534,0xd1e5e534
|
|
.long 0xf9f1f108,0xf9f1f108
|
|
.long 0xe2717193,0xe2717193
|
|
.long 0xabd8d873,0xabd8d873
|
|
.long 0x62313153,0x62313153
|
|
.long 0x2a15153f,0x2a15153f
|
|
.long 0x0804040c,0x0804040c
|
|
.long 0x95c7c752,0x95c7c752
|
|
.long 0x46232365,0x46232365
|
|
.long 0x9dc3c35e,0x9dc3c35e
|
|
.long 0x30181828,0x30181828
|
|
.long 0x379696a1,0x379696a1
|
|
.long 0x0a05050f,0x0a05050f
|
|
.long 0x2f9a9ab5,0x2f9a9ab5
|
|
.long 0x0e070709,0x0e070709
|
|
.long 0x24121236,0x24121236
|
|
.long 0x1b80809b,0x1b80809b
|
|
.long 0xdfe2e23d,0xdfe2e23d
|
|
.long 0xcdebeb26,0xcdebeb26
|
|
.long 0x4e272769,0x4e272769
|
|
.long 0x7fb2b2cd,0x7fb2b2cd
|
|
.long 0xea75759f,0xea75759f
|
|
.long 0x1209091b,0x1209091b
|
|
.long 0x1d83839e,0x1d83839e
|
|
.long 0x582c2c74,0x582c2c74
|
|
.long 0x341a1a2e,0x341a1a2e
|
|
.long 0x361b1b2d,0x361b1b2d
|
|
.long 0xdc6e6eb2,0xdc6e6eb2
|
|
.long 0xb45a5aee,0xb45a5aee
|
|
.long 0x5ba0a0fb,0x5ba0a0fb
|
|
.long 0xa45252f6,0xa45252f6
|
|
.long 0x763b3b4d,0x763b3b4d
|
|
.long 0xb7d6d661,0xb7d6d661
|
|
.long 0x7db3b3ce,0x7db3b3ce
|
|
.long 0x5229297b,0x5229297b
|
|
.long 0xdde3e33e,0xdde3e33e
|
|
.long 0x5e2f2f71,0x5e2f2f71
|
|
.long 0x13848497,0x13848497
|
|
.long 0xa65353f5,0xa65353f5
|
|
.long 0xb9d1d168,0xb9d1d168
|
|
.long 0x00000000,0x00000000
|
|
.long 0xc1eded2c,0xc1eded2c
|
|
.long 0x40202060,0x40202060
|
|
.long 0xe3fcfc1f,0xe3fcfc1f
|
|
.long 0x79b1b1c8,0x79b1b1c8
|
|
.long 0xb65b5bed,0xb65b5bed
|
|
.long 0xd46a6abe,0xd46a6abe
|
|
.long 0x8dcbcb46,0x8dcbcb46
|
|
.long 0x67bebed9,0x67bebed9
|
|
.long 0x7239394b,0x7239394b
|
|
.long 0x944a4ade,0x944a4ade
|
|
.long 0x984c4cd4,0x984c4cd4
|
|
.long 0xb05858e8,0xb05858e8
|
|
.long 0x85cfcf4a,0x85cfcf4a
|
|
.long 0xbbd0d06b,0xbbd0d06b
|
|
.long 0xc5efef2a,0xc5efef2a
|
|
.long 0x4faaaae5,0x4faaaae5
|
|
.long 0xedfbfb16,0xedfbfb16
|
|
.long 0x864343c5,0x864343c5
|
|
.long 0x9a4d4dd7,0x9a4d4dd7
|
|
.long 0x66333355,0x66333355
|
|
.long 0x11858594,0x11858594
|
|
.long 0x8a4545cf,0x8a4545cf
|
|
.long 0xe9f9f910,0xe9f9f910
|
|
.long 0x04020206,0x04020206
|
|
.long 0xfe7f7f81,0xfe7f7f81
|
|
.long 0xa05050f0,0xa05050f0
|
|
.long 0x783c3c44,0x783c3c44
|
|
.long 0x259f9fba,0x259f9fba
|
|
.long 0x4ba8a8e3,0x4ba8a8e3
|
|
.long 0xa25151f3,0xa25151f3
|
|
.long 0x5da3a3fe,0x5da3a3fe
|
|
.long 0x804040c0,0x804040c0
|
|
.long 0x058f8f8a,0x058f8f8a
|
|
.long 0x3f9292ad,0x3f9292ad
|
|
.long 0x219d9dbc,0x219d9dbc
|
|
.long 0x70383848,0x70383848
|
|
.long 0xf1f5f504,0xf1f5f504
|
|
.long 0x63bcbcdf,0x63bcbcdf
|
|
.long 0x77b6b6c1,0x77b6b6c1
|
|
.long 0xafdada75,0xafdada75
|
|
.long 0x42212163,0x42212163
|
|
.long 0x20101030,0x20101030
|
|
.long 0xe5ffff1a,0xe5ffff1a
|
|
.long 0xfdf3f30e,0xfdf3f30e
|
|
.long 0xbfd2d26d,0xbfd2d26d
|
|
.long 0x81cdcd4c,0x81cdcd4c
|
|
.long 0x180c0c14,0x180c0c14
|
|
.long 0x26131335,0x26131335
|
|
.long 0xc3ecec2f,0xc3ecec2f
|
|
.long 0xbe5f5fe1,0xbe5f5fe1
|
|
.long 0x359797a2,0x359797a2
|
|
.long 0x884444cc,0x884444cc
|
|
.long 0x2e171739,0x2e171739
|
|
.long 0x93c4c457,0x93c4c457
|
|
.long 0x55a7a7f2,0x55a7a7f2
|
|
.long 0xfc7e7e82,0xfc7e7e82
|
|
.long 0x7a3d3d47,0x7a3d3d47
|
|
.long 0xc86464ac,0xc86464ac
|
|
.long 0xba5d5de7,0xba5d5de7
|
|
.long 0x3219192b,0x3219192b
|
|
.long 0xe6737395,0xe6737395
|
|
.long 0xc06060a0,0xc06060a0
|
|
.long 0x19818198,0x19818198
|
|
.long 0x9e4f4fd1,0x9e4f4fd1
|
|
.long 0xa3dcdc7f,0xa3dcdc7f
|
|
.long 0x44222266,0x44222266
|
|
.long 0x542a2a7e,0x542a2a7e
|
|
.long 0x3b9090ab,0x3b9090ab
|
|
.long 0x0b888883,0x0b888883
|
|
.long 0x8c4646ca,0x8c4646ca
|
|
.long 0xc7eeee29,0xc7eeee29
|
|
.long 0x6bb8b8d3,0x6bb8b8d3
|
|
.long 0x2814143c,0x2814143c
|
|
.long 0xa7dede79,0xa7dede79
|
|
.long 0xbc5e5ee2,0xbc5e5ee2
|
|
.long 0x160b0b1d,0x160b0b1d
|
|
.long 0xaddbdb76,0xaddbdb76
|
|
.long 0xdbe0e03b,0xdbe0e03b
|
|
.long 0x64323256,0x64323256
|
|
.long 0x743a3a4e,0x743a3a4e
|
|
.long 0x140a0a1e,0x140a0a1e
|
|
.long 0x924949db,0x924949db
|
|
.long 0x0c06060a,0x0c06060a
|
|
.long 0x4824246c,0x4824246c
|
|
.long 0xb85c5ce4,0xb85c5ce4
|
|
.long 0x9fc2c25d,0x9fc2c25d
|
|
.long 0xbdd3d36e,0xbdd3d36e
|
|
.long 0x43acacef,0x43acacef
|
|
.long 0xc46262a6,0xc46262a6
|
|
.long 0x399191a8,0x399191a8
|
|
.long 0x319595a4,0x319595a4
|
|
.long 0xd3e4e437,0xd3e4e437
|
|
.long 0xf279798b,0xf279798b
|
|
.long 0xd5e7e732,0xd5e7e732
|
|
.long 0x8bc8c843,0x8bc8c843
|
|
.long 0x6e373759,0x6e373759
|
|
.long 0xda6d6db7,0xda6d6db7
|
|
.long 0x018d8d8c,0x018d8d8c
|
|
.long 0xb1d5d564,0xb1d5d564
|
|
.long 0x9c4e4ed2,0x9c4e4ed2
|
|
.long 0x49a9a9e0,0x49a9a9e0
|
|
.long 0xd86c6cb4,0xd86c6cb4
|
|
.long 0xac5656fa,0xac5656fa
|
|
.long 0xf3f4f407,0xf3f4f407
|
|
.long 0xcfeaea25,0xcfeaea25
|
|
.long 0xca6565af,0xca6565af
|
|
.long 0xf47a7a8e,0xf47a7a8e
|
|
.long 0x47aeaee9,0x47aeaee9
|
|
.long 0x10080818,0x10080818
|
|
.long 0x6fbabad5,0x6fbabad5
|
|
.long 0xf0787888,0xf0787888
|
|
.long 0x4a25256f,0x4a25256f
|
|
.long 0x5c2e2e72,0x5c2e2e72
|
|
.long 0x381c1c24,0x381c1c24
|
|
.long 0x57a6a6f1,0x57a6a6f1
|
|
.long 0x73b4b4c7,0x73b4b4c7
|
|
.long 0x97c6c651,0x97c6c651
|
|
.long 0xcbe8e823,0xcbe8e823
|
|
.long 0xa1dddd7c,0xa1dddd7c
|
|
.long 0xe874749c,0xe874749c
|
|
.long 0x3e1f1f21,0x3e1f1f21
|
|
.long 0x964b4bdd,0x964b4bdd
|
|
.long 0x61bdbddc,0x61bdbddc
|
|
.long 0x0d8b8b86,0x0d8b8b86
|
|
.long 0x0f8a8a85,0x0f8a8a85
|
|
.long 0xe0707090,0xe0707090
|
|
.long 0x7c3e3e42,0x7c3e3e42
|
|
.long 0x71b5b5c4,0x71b5b5c4
|
|
.long 0xcc6666aa,0xcc6666aa
|
|
.long 0x904848d8,0x904848d8
|
|
.long 0x06030305,0x06030305
|
|
.long 0xf7f6f601,0xf7f6f601
|
|
.long 0x1c0e0e12,0x1c0e0e12
|
|
.long 0xc26161a3,0xc26161a3
|
|
.long 0x6a35355f,0x6a35355f
|
|
.long 0xae5757f9,0xae5757f9
|
|
.long 0x69b9b9d0,0x69b9b9d0
|
|
.long 0x17868691,0x17868691
|
|
.long 0x99c1c158,0x99c1c158
|
|
.long 0x3a1d1d27,0x3a1d1d27
|
|
.long 0x279e9eb9,0x279e9eb9
|
|
.long 0xd9e1e138,0xd9e1e138
|
|
.long 0xebf8f813,0xebf8f813
|
|
.long 0x2b9898b3,0x2b9898b3
|
|
.long 0x22111133,0x22111133
|
|
.long 0xd26969bb,0xd26969bb
|
|
.long 0xa9d9d970,0xa9d9d970
|
|
.long 0x078e8e89,0x078e8e89
|
|
.long 0x339494a7,0x339494a7
|
|
.long 0x2d9b9bb6,0x2d9b9bb6
|
|
.long 0x3c1e1e22,0x3c1e1e22
|
|
.long 0x15878792,0x15878792
|
|
.long 0xc9e9e920,0xc9e9e920
|
|
.long 0x87cece49,0x87cece49
|
|
.long 0xaa5555ff,0xaa5555ff
|
|
.long 0x50282878,0x50282878
|
|
.long 0xa5dfdf7a,0xa5dfdf7a
|
|
.long 0x038c8c8f,0x038c8c8f
|
|
.long 0x59a1a1f8,0x59a1a1f8
|
|
.long 0x09898980,0x09898980
|
|
.long 0x1a0d0d17,0x1a0d0d17
|
|
.long 0x65bfbfda,0x65bfbfda
|
|
.long 0xd7e6e631,0xd7e6e631
|
|
.long 0x844242c6,0x844242c6
|
|
.long 0xd06868b8,0xd06868b8
|
|
.long 0x824141c3,0x824141c3
|
|
.long 0x299999b0,0x299999b0
|
|
.long 0x5a2d2d77,0x5a2d2d77
|
|
.long 0x1e0f0f11,0x1e0f0f11
|
|
.long 0x7bb0b0cb,0x7bb0b0cb
|
|
.long 0xa85454fc,0xa85454fc
|
|
.long 0x6dbbbbd6,0x6dbbbbd6
|
|
.long 0x2c16163a,0x2c16163a
|
|
.byte 0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5
|
|
.byte 0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76
|
|
.byte 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0
|
|
.byte 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0
|
|
.byte 0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc
|
|
.byte 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15
|
|
.byte 0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a
|
|
.byte 0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75
|
|
.byte 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0
|
|
.byte 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84
|
|
.byte 0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b
|
|
.byte 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf
|
|
.byte 0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85
|
|
.byte 0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8
|
|
.byte 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5
|
|
.byte 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2
|
|
.byte 0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17
|
|
.byte 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73
|
|
.byte 0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88
|
|
.byte 0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb
|
|
.byte 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c
|
|
.byte 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79
|
|
.byte 0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9
|
|
.byte 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08
|
|
.byte 0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6
|
|
.byte 0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a
|
|
.byte 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e
|
|
.byte 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e
|
|
.byte 0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94
|
|
.byte 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf
|
|
.byte 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68
|
|
.byte 0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16
|
|
.type AES_Te,#object
|
|
.size AES_Te,(.-AES_Te)
|
|
|
|
.align 64
|
|
.skip 16
|
|
_sparcv9_AES_encrypt:
|
|
save %sp,-192-16,%sp
|
|
stx %i7,[%sp+2047+192+0] ! off-load return address
|
|
ld [%i5+240],%i7
|
|
ld [%i5+0],%l4
|
|
ld [%i5+4],%l5 !
|
|
ld [%i5+8],%l6
|
|
srl %i7,1,%i7
|
|
xor %l4,%i0,%i0
|
|
ld [%i5+12],%l7
|
|
srl %i0,21,%l0
|
|
xor %l5,%i1,%i1
|
|
ld [%i5+16],%l4
|
|
srl %i1,13,%o0 !
|
|
xor %l6,%i2,%i2
|
|
ld [%i5+20],%l5
|
|
xor %l7,%i3,%i3
|
|
ld [%i5+24],%l6
|
|
and %l0,2040,%l0
|
|
ld [%i5+28],%l7
|
|
nop
|
|
.Lenc_loop:
|
|
srl %i2,5,%o1 !
|
|
and %o0,2040,%o0
|
|
ldx [%i4+%l0],%l0
|
|
sll %i3,3,%o2
|
|
and %o1,2040,%o1
|
|
ldx [%i4+%o0],%o0
|
|
srl %i1,21,%l1
|
|
and %o2,2040,%o2
|
|
ldx [%i4+%o1],%o1 !
|
|
srl %i2,13,%o3
|
|
and %l1,2040,%l1
|
|
ldx [%i4+%o2],%o2
|
|
srl %i3,5,%o4
|
|
and %o3,2040,%o3
|
|
ldx [%i4+%l1],%l1
|
|
|
|
sll %i0,3,%o5 !
|
|
and %o4,2040,%o4
|
|
ldx [%i4+%o3],%o3
|
|
srl %i2,21,%l2
|
|
and %o5,2040,%o5
|
|
ldx [%i4+%o4],%o4
|
|
srl %i3,13,%o7
|
|
and %l2,2040,%l2
|
|
ldx [%i4+%o5],%o5 !
|
|
srl %i0,5,%g1
|
|
and %o7,2040,%o7
|
|
ldx [%i4+%l2],%l2
|
|
sll %i1,3,%g2
|
|
and %g1,2040,%g1
|
|
ldx [%i4+%o7],%o7
|
|
|
|
srl %i3,21,%l3 !
|
|
and %g2,2040,%g2
|
|
ldx [%i4+%g1],%g1
|
|
srl %i0,13,%g3
|
|
and %l3,2040,%l3
|
|
ldx [%i4+%g2],%g2
|
|
srl %i1,5,%g4
|
|
and %g3,2040,%g3
|
|
ldx [%i4+%l3],%l3 !
|
|
sll %i2,3,%g5
|
|
and %g4,2040,%g4
|
|
ldx [%i4+%g3],%g3
|
|
and %g5,2040,%g5
|
|
add %i5,32,%i5
|
|
ldx [%i4+%g4],%g4
|
|
|
|
subcc %i7,1,%i7 !
|
|
ldx [%i4+%g5],%g5
|
|
bz,a,pn %icc,.Lenc_last
|
|
add %i4,2048,%i7
|
|
|
|
srlx %o0,8,%o0
|
|
xor %l0,%l4,%l4
|
|
ld [%i5+0],%i0
|
|
|
|
srlx %o1,16,%o1 !
|
|
xor %o0,%l4,%l4
|
|
ld [%i5+4],%i1
|
|
srlx %o2,24,%o2
|
|
xor %o1,%l4,%l4
|
|
ld [%i5+8],%i2
|
|
srlx %o3,8,%o3
|
|
xor %o2,%l4,%l4
|
|
ld [%i5+12],%i3 !
|
|
srlx %o4,16,%o4
|
|
xor %l1,%l5,%l5
|
|
|
|
srlx %o5,24,%o5
|
|
xor %o3,%l5,%l5
|
|
srlx %o7,8,%o7
|
|
xor %o4,%l5,%l5
|
|
srlx %g1,16,%g1 !
|
|
xor %o5,%l5,%l5
|
|
srlx %g2,24,%g2
|
|
xor %l2,%l6,%l6
|
|
srlx %g3,8,%g3
|
|
xor %o7,%l6,%l6
|
|
srlx %g4,16,%g4
|
|
xor %g1,%l6,%l6
|
|
srlx %g5,24,%g5 !
|
|
xor %g2,%l6,%l6
|
|
xor %l3,%g4,%g4
|
|
xor %g3,%l7,%l7
|
|
srl %l4,21,%l0
|
|
xor %g4,%l7,%l7
|
|
srl %l5,13,%o0
|
|
xor %g5,%l7,%l7
|
|
|
|
and %l0,2040,%l0 !
|
|
srl %l6,5,%o1
|
|
and %o0,2040,%o0
|
|
ldx [%i4+%l0],%l0
|
|
sll %l7,3,%o2
|
|
and %o1,2040,%o1
|
|
ldx [%i4+%o0],%o0
|
|
|
|
srl %l5,21,%l1 !
|
|
and %o2,2040,%o2
|
|
ldx [%i4+%o1],%o1
|
|
srl %l6,13,%o3
|
|
and %l1,2040,%l1
|
|
ldx [%i4+%o2],%o2
|
|
srl %l7,5,%o4
|
|
and %o3,2040,%o3
|
|
ldx [%i4+%l1],%l1 !
|
|
sll %l4,3,%o5
|
|
and %o4,2040,%o4
|
|
ldx [%i4+%o3],%o3
|
|
srl %l6,21,%l2
|
|
and %o5,2040,%o5
|
|
ldx [%i4+%o4],%o4
|
|
|
|
srl %l7,13,%o7 !
|
|
and %l2,2040,%l2
|
|
ldx [%i4+%o5],%o5
|
|
srl %l4,5,%g1
|
|
and %o7,2040,%o7
|
|
ldx [%i4+%l2],%l2
|
|
sll %l5,3,%g2
|
|
and %g1,2040,%g1
|
|
ldx [%i4+%o7],%o7 !
|
|
srl %l7,21,%l3
|
|
and %g2,2040,%g2
|
|
ldx [%i4+%g1],%g1
|
|
srl %l4,13,%g3
|
|
and %l3,2040,%l3
|
|
ldx [%i4+%g2],%g2
|
|
|
|
srl %l5,5,%g4 !
|
|
and %g3,2040,%g3
|
|
ldx [%i4+%l3],%l3
|
|
sll %l6,3,%g5
|
|
and %g4,2040,%g4
|
|
ldx [%i4+%g3],%g3
|
|
srlx %o0,8,%o0
|
|
and %g5,2040,%g5
|
|
ldx [%i4+%g4],%g4 !
|
|
|
|
srlx %o1,16,%o1
|
|
xor %l0,%i0,%i0
|
|
ldx [%i4+%g5],%g5
|
|
srlx %o2,24,%o2
|
|
xor %o0,%i0,%i0
|
|
ld [%i5+16],%l4
|
|
|
|
srlx %o3,8,%o3 !
|
|
xor %o1,%i0,%i0
|
|
ld [%i5+20],%l5
|
|
srlx %o4,16,%o4
|
|
xor %o2,%i0,%i0
|
|
ld [%i5+24],%l6
|
|
srlx %o5,24,%o5
|
|
xor %l1,%i1,%i1
|
|
ld [%i5+28],%l7 !
|
|
srlx %o7,8,%o7
|
|
xor %o3,%i1,%i1
|
|
ldx [%i4+2048+0],%g0 ! prefetch te4
|
|
srlx %g1,16,%g1
|
|
xor %o4,%i1,%i1
|
|
ldx [%i4+2048+32],%g0 ! prefetch te4
|
|
srlx %g2,24,%g2
|
|
xor %o5,%i1,%i1
|
|
ldx [%i4+2048+64],%g0 ! prefetch te4
|
|
srlx %g3,8,%g3
|
|
xor %l2,%i2,%i2
|
|
ldx [%i4+2048+96],%g0 ! prefetch te4
|
|
srlx %g4,16,%g4 !
|
|
xor %o7,%i2,%i2
|
|
ldx [%i4+2048+128],%g0 ! prefetch te4
|
|
srlx %g5,24,%g5
|
|
xor %g1,%i2,%i2
|
|
ldx [%i4+2048+160],%g0 ! prefetch te4
|
|
srl %i0,21,%l0
|
|
xor %g2,%i2,%i2
|
|
ldx [%i4+2048+192],%g0 ! prefetch te4
|
|
xor %l3,%g4,%g4
|
|
xor %g3,%i3,%i3
|
|
ldx [%i4+2048+224],%g0 ! prefetch te4
|
|
srl %i1,13,%o0 !
|
|
xor %g4,%i3,%i3
|
|
xor %g5,%i3,%i3
|
|
ba .Lenc_loop
|
|
and %l0,2040,%l0
|
|
|
|
.align 32
|
|
.Lenc_last:
|
|
srlx %o0,8,%o0 !
|
|
xor %l0,%l4,%l4
|
|
ld [%i5+0],%i0
|
|
srlx %o1,16,%o1
|
|
xor %o0,%l4,%l4
|
|
ld [%i5+4],%i1
|
|
srlx %o2,24,%o2
|
|
xor %o1,%l4,%l4
|
|
ld [%i5+8],%i2 !
|
|
srlx %o3,8,%o3
|
|
xor %o2,%l4,%l4
|
|
ld [%i5+12],%i3
|
|
srlx %o4,16,%o4
|
|
xor %l1,%l5,%l5
|
|
srlx %o5,24,%o5
|
|
xor %o3,%l5,%l5
|
|
srlx %o7,8,%o7 !
|
|
xor %o4,%l5,%l5
|
|
srlx %g1,16,%g1
|
|
xor %o5,%l5,%l5
|
|
srlx %g2,24,%g2
|
|
xor %l2,%l6,%l6
|
|
srlx %g3,8,%g3
|
|
xor %o7,%l6,%l6
|
|
srlx %g4,16,%g4 !
|
|
xor %g1,%l6,%l6
|
|
srlx %g5,24,%g5
|
|
xor %g2,%l6,%l6
|
|
xor %l3,%g4,%g4
|
|
xor %g3,%l7,%l7
|
|
srl %l4,24,%l0
|
|
xor %g4,%l7,%l7
|
|
srl %l5,16,%o0 !
|
|
xor %g5,%l7,%l7
|
|
|
|
srl %l6,8,%o1
|
|
and %o0,255,%o0
|
|
ldub [%i7+%l0],%l0
|
|
srl %l5,24,%l1
|
|
and %o1,255,%o1
|
|
ldub [%i7+%o0],%o0
|
|
srl %l6,16,%o3 !
|
|
and %l7,255,%o2
|
|
ldub [%i7+%o1],%o1
|
|
ldub [%i7+%o2],%o2
|
|
srl %l7,8,%o4
|
|
and %o3,255,%o3
|
|
ldub [%i7+%l1],%l1
|
|
|
|
srl %l6,24,%l2 !
|
|
and %o4,255,%o4
|
|
ldub [%i7+%o3],%o3
|
|
srl %l7,16,%o7
|
|
and %l4,255,%o5
|
|
ldub [%i7+%o4],%o4
|
|
ldub [%i7+%o5],%o5
|
|
|
|
srl %l4,8,%g1 !
|
|
and %o7,255,%o7
|
|
ldub [%i7+%l2],%l2
|
|
srl %l7,24,%l3
|
|
and %g1,255,%g1
|
|
ldub [%i7+%o7],%o7
|
|
srl %l4,16,%g3
|
|
and %l5,255,%g2
|
|
ldub [%i7+%g1],%g1 !
|
|
srl %l5,8,%g4
|
|
and %g3,255,%g3
|
|
ldub [%i7+%g2],%g2
|
|
ldub [%i7+%l3],%l3
|
|
and %g4,255,%g4
|
|
ldub [%i7+%g3],%g3
|
|
and %l6,255,%g5
|
|
ldub [%i7+%g4],%g4 !
|
|
|
|
sll %l0,24,%l0
|
|
xor %o2,%i0,%i0
|
|
ldub [%i7+%g5],%g5
|
|
sll %o0,16,%o0
|
|
xor %l0,%i0,%i0
|
|
ldx [%sp+2047+192+0],%i7 ! restore return address
|
|
|
|
sll %o1,8,%o1 !
|
|
xor %o0,%i0,%i0
|
|
sll %l1,24,%l1
|
|
xor %o1,%i0,%i0
|
|
sll %o3,16,%o3
|
|
xor %o5,%i1,%i1
|
|
sll %o4,8,%o4
|
|
xor %l1,%i1,%i1
|
|
sll %l2,24,%l2 !
|
|
xor %o3,%i1,%i1
|
|
sll %o7,16,%o7
|
|
xor %g2,%i2,%i2
|
|
sll %g1,8,%g1
|
|
xor %o4,%i1,%i1
|
|
sll %l3,24,%l3
|
|
xor %l2,%i2,%i2
|
|
sll %g3,16,%g3 !
|
|
xor %o7,%i2,%i2
|
|
sll %g4,8,%g4
|
|
xor %g1,%i2,%i2
|
|
xor %l3,%g4,%g4
|
|
xor %g3,%i3,%i3
|
|
xor %g4,%i3,%i3
|
|
xor %g5,%i3,%i3
|
|
|
|
ret
|
|
restore
|
|
.type _sparcv9_AES_encrypt,#function
|
|
.size _sparcv9_AES_encrypt,(.-_sparcv9_AES_encrypt)
|
|
|
|
.align 32
|
|
.globl AES_encrypt
|
|
AES_encrypt:
|
|
or %o0,%o1,%g1
|
|
andcc %g1,3,%g0
|
|
bnz,pn %xcc,.Lunaligned_enc
|
|
save %sp,-192,%sp
|
|
|
|
ld [%i0+0],%o0
|
|
ld [%i0+4],%o1
|
|
ld [%i0+8],%o2
|
|
ld [%i0+12],%o3
|
|
|
|
mov %i2,%o5
|
|
nop
|
|
1: call _sparcv9_AES_encrypt
|
|
sub %o7,1b-AES_Te,%o4
|
|
|
|
st %o0,[%i1+0]
|
|
st %o1,[%i1+4]
|
|
st %o2,[%i1+8]
|
|
st %o3,[%i1+12]
|
|
|
|
ret
|
|
restore
|
|
|
|
.align 32
|
|
.Lunaligned_enc:
|
|
ldub [%i0+0],%l0
|
|
ldub [%i0+1],%l1
|
|
ldub [%i0+2],%l2
|
|
|
|
sll %l0,24,%l0
|
|
ldub [%i0+3],%l3
|
|
sll %l1,16,%l1
|
|
ldub [%i0+4],%l4
|
|
sll %l2,8,%l2
|
|
or %l1,%l0,%l0
|
|
ldub [%i0+5],%l5
|
|
sll %l4,24,%l4
|
|
or %l3,%l2,%l2
|
|
ldub [%i0+6],%l6
|
|
sll %l5,16,%l5
|
|
or %l0,%l2,%o0
|
|
ldub [%i0+7],%l7
|
|
|
|
sll %l6,8,%l6
|
|
or %l5,%l4,%l4
|
|
ldub [%i0+8],%l0
|
|
or %l7,%l6,%l6
|
|
ldub [%i0+9],%l1
|
|
or %l4,%l6,%o1
|
|
ldub [%i0+10],%l2
|
|
|
|
sll %l0,24,%l0
|
|
ldub [%i0+11],%l3
|
|
sll %l1,16,%l1
|
|
ldub [%i0+12],%l4
|
|
sll %l2,8,%l2
|
|
or %l1,%l0,%l0
|
|
ldub [%i0+13],%l5
|
|
sll %l4,24,%l4
|
|
or %l3,%l2,%l2
|
|
ldub [%i0+14],%l6
|
|
sll %l5,16,%l5
|
|
or %l0,%l2,%o2
|
|
ldub [%i0+15],%l7
|
|
|
|
sll %l6,8,%l6
|
|
or %l5,%l4,%l4
|
|
or %l7,%l6,%l6
|
|
or %l4,%l6,%o3
|
|
|
|
mov %i2,%o5
|
|
nop
|
|
1: call _sparcv9_AES_encrypt
|
|
sub %o7,1b-AES_Te,%o4
|
|
|
|
srl %o0,24,%l0
|
|
srl %o0,16,%l1
|
|
stb %l0,[%i1+0]
|
|
srl %o0,8,%l2
|
|
stb %l1,[%i1+1]
|
|
stb %l2,[%i1+2]
|
|
srl %o1,24,%l4
|
|
stb %o0,[%i1+3]
|
|
|
|
srl %o1,16,%l5
|
|
stb %l4,[%i1+4]
|
|
srl %o1,8,%l6
|
|
stb %l5,[%i1+5]
|
|
stb %l6,[%i1+6]
|
|
srl %o2,24,%l0
|
|
stb %o1,[%i1+7]
|
|
|
|
srl %o2,16,%l1
|
|
stb %l0,[%i1+8]
|
|
srl %o2,8,%l2
|
|
stb %l1,[%i1+9]
|
|
stb %l2,[%i1+10]
|
|
srl %o3,24,%l4
|
|
stb %o2,[%i1+11]
|
|
|
|
srl %o3,16,%l5
|
|
stb %l4,[%i1+12]
|
|
srl %o3,8,%l6
|
|
stb %l5,[%i1+13]
|
|
stb %l6,[%i1+14]
|
|
stb %o3,[%i1+15]
|
|
|
|
ret
|
|
restore
|
|
.type AES_encrypt,#function
|
|
.size AES_encrypt,(.-AES_encrypt)
|
|
|
|
.align 256
|
|
AES_Td:
|
|
.long 0x51f4a750,0x51f4a750
|
|
.long 0x7e416553,0x7e416553
|
|
.long 0x1a17a4c3,0x1a17a4c3
|
|
.long 0x3a275e96,0x3a275e96
|
|
.long 0x3bab6bcb,0x3bab6bcb
|
|
.long 0x1f9d45f1,0x1f9d45f1
|
|
.long 0xacfa58ab,0xacfa58ab
|
|
.long 0x4be30393,0x4be30393
|
|
.long 0x2030fa55,0x2030fa55
|
|
.long 0xad766df6,0xad766df6
|
|
.long 0x88cc7691,0x88cc7691
|
|
.long 0xf5024c25,0xf5024c25
|
|
.long 0x4fe5d7fc,0x4fe5d7fc
|
|
.long 0xc52acbd7,0xc52acbd7
|
|
.long 0x26354480,0x26354480
|
|
.long 0xb562a38f,0xb562a38f
|
|
.long 0xdeb15a49,0xdeb15a49
|
|
.long 0x25ba1b67,0x25ba1b67
|
|
.long 0x45ea0e98,0x45ea0e98
|
|
.long 0x5dfec0e1,0x5dfec0e1
|
|
.long 0xc32f7502,0xc32f7502
|
|
.long 0x814cf012,0x814cf012
|
|
.long 0x8d4697a3,0x8d4697a3
|
|
.long 0x6bd3f9c6,0x6bd3f9c6
|
|
.long 0x038f5fe7,0x038f5fe7
|
|
.long 0x15929c95,0x15929c95
|
|
.long 0xbf6d7aeb,0xbf6d7aeb
|
|
.long 0x955259da,0x955259da
|
|
.long 0xd4be832d,0xd4be832d
|
|
.long 0x587421d3,0x587421d3
|
|
.long 0x49e06929,0x49e06929
|
|
.long 0x8ec9c844,0x8ec9c844
|
|
.long 0x75c2896a,0x75c2896a
|
|
.long 0xf48e7978,0xf48e7978
|
|
.long 0x99583e6b,0x99583e6b
|
|
.long 0x27b971dd,0x27b971dd
|
|
.long 0xbee14fb6,0xbee14fb6
|
|
.long 0xf088ad17,0xf088ad17
|
|
.long 0xc920ac66,0xc920ac66
|
|
.long 0x7dce3ab4,0x7dce3ab4
|
|
.long 0x63df4a18,0x63df4a18
|
|
.long 0xe51a3182,0xe51a3182
|
|
.long 0x97513360,0x97513360
|
|
.long 0x62537f45,0x62537f45
|
|
.long 0xb16477e0,0xb16477e0
|
|
.long 0xbb6bae84,0xbb6bae84
|
|
.long 0xfe81a01c,0xfe81a01c
|
|
.long 0xf9082b94,0xf9082b94
|
|
.long 0x70486858,0x70486858
|
|
.long 0x8f45fd19,0x8f45fd19
|
|
.long 0x94de6c87,0x94de6c87
|
|
.long 0x527bf8b7,0x527bf8b7
|
|
.long 0xab73d323,0xab73d323
|
|
.long 0x724b02e2,0x724b02e2
|
|
.long 0xe31f8f57,0xe31f8f57
|
|
.long 0x6655ab2a,0x6655ab2a
|
|
.long 0xb2eb2807,0xb2eb2807
|
|
.long 0x2fb5c203,0x2fb5c203
|
|
.long 0x86c57b9a,0x86c57b9a
|
|
.long 0xd33708a5,0xd33708a5
|
|
.long 0x302887f2,0x302887f2
|
|
.long 0x23bfa5b2,0x23bfa5b2
|
|
.long 0x02036aba,0x02036aba
|
|
.long 0xed16825c,0xed16825c
|
|
.long 0x8acf1c2b,0x8acf1c2b
|
|
.long 0xa779b492,0xa779b492
|
|
.long 0xf307f2f0,0xf307f2f0
|
|
.long 0x4e69e2a1,0x4e69e2a1
|
|
.long 0x65daf4cd,0x65daf4cd
|
|
.long 0x0605bed5,0x0605bed5
|
|
.long 0xd134621f,0xd134621f
|
|
.long 0xc4a6fe8a,0xc4a6fe8a
|
|
.long 0x342e539d,0x342e539d
|
|
.long 0xa2f355a0,0xa2f355a0
|
|
.long 0x058ae132,0x058ae132
|
|
.long 0xa4f6eb75,0xa4f6eb75
|
|
.long 0x0b83ec39,0x0b83ec39
|
|
.long 0x4060efaa,0x4060efaa
|
|
.long 0x5e719f06,0x5e719f06
|
|
.long 0xbd6e1051,0xbd6e1051
|
|
.long 0x3e218af9,0x3e218af9
|
|
.long 0x96dd063d,0x96dd063d
|
|
.long 0xdd3e05ae,0xdd3e05ae
|
|
.long 0x4de6bd46,0x4de6bd46
|
|
.long 0x91548db5,0x91548db5
|
|
.long 0x71c45d05,0x71c45d05
|
|
.long 0x0406d46f,0x0406d46f
|
|
.long 0x605015ff,0x605015ff
|
|
.long 0x1998fb24,0x1998fb24
|
|
.long 0xd6bde997,0xd6bde997
|
|
.long 0x894043cc,0x894043cc
|
|
.long 0x67d99e77,0x67d99e77
|
|
.long 0xb0e842bd,0xb0e842bd
|
|
.long 0x07898b88,0x07898b88
|
|
.long 0xe7195b38,0xe7195b38
|
|
.long 0x79c8eedb,0x79c8eedb
|
|
.long 0xa17c0a47,0xa17c0a47
|
|
.long 0x7c420fe9,0x7c420fe9
|
|
.long 0xf8841ec9,0xf8841ec9
|
|
.long 0x00000000,0x00000000
|
|
.long 0x09808683,0x09808683
|
|
.long 0x322bed48,0x322bed48
|
|
.long 0x1e1170ac,0x1e1170ac
|
|
.long 0x6c5a724e,0x6c5a724e
|
|
.long 0xfd0efffb,0xfd0efffb
|
|
.long 0x0f853856,0x0f853856
|
|
.long 0x3daed51e,0x3daed51e
|
|
.long 0x362d3927,0x362d3927
|
|
.long 0x0a0fd964,0x0a0fd964
|
|
.long 0x685ca621,0x685ca621
|
|
.long 0x9b5b54d1,0x9b5b54d1
|
|
.long 0x24362e3a,0x24362e3a
|
|
.long 0x0c0a67b1,0x0c0a67b1
|
|
.long 0x9357e70f,0x9357e70f
|
|
.long 0xb4ee96d2,0xb4ee96d2
|
|
.long 0x1b9b919e,0x1b9b919e
|
|
.long 0x80c0c54f,0x80c0c54f
|
|
.long 0x61dc20a2,0x61dc20a2
|
|
.long 0x5a774b69,0x5a774b69
|
|
.long 0x1c121a16,0x1c121a16
|
|
.long 0xe293ba0a,0xe293ba0a
|
|
.long 0xc0a02ae5,0xc0a02ae5
|
|
.long 0x3c22e043,0x3c22e043
|
|
.long 0x121b171d,0x121b171d
|
|
.long 0x0e090d0b,0x0e090d0b
|
|
.long 0xf28bc7ad,0xf28bc7ad
|
|
.long 0x2db6a8b9,0x2db6a8b9
|
|
.long 0x141ea9c8,0x141ea9c8
|
|
.long 0x57f11985,0x57f11985
|
|
.long 0xaf75074c,0xaf75074c
|
|
.long 0xee99ddbb,0xee99ddbb
|
|
.long 0xa37f60fd,0xa37f60fd
|
|
.long 0xf701269f,0xf701269f
|
|
.long 0x5c72f5bc,0x5c72f5bc
|
|
.long 0x44663bc5,0x44663bc5
|
|
.long 0x5bfb7e34,0x5bfb7e34
|
|
.long 0x8b432976,0x8b432976
|
|
.long 0xcb23c6dc,0xcb23c6dc
|
|
.long 0xb6edfc68,0xb6edfc68
|
|
.long 0xb8e4f163,0xb8e4f163
|
|
.long 0xd731dcca,0xd731dcca
|
|
.long 0x42638510,0x42638510
|
|
.long 0x13972240,0x13972240
|
|
.long 0x84c61120,0x84c61120
|
|
.long 0x854a247d,0x854a247d
|
|
.long 0xd2bb3df8,0xd2bb3df8
|
|
.long 0xaef93211,0xaef93211
|
|
.long 0xc729a16d,0xc729a16d
|
|
.long 0x1d9e2f4b,0x1d9e2f4b
|
|
.long 0xdcb230f3,0xdcb230f3
|
|
.long 0x0d8652ec,0x0d8652ec
|
|
.long 0x77c1e3d0,0x77c1e3d0
|
|
.long 0x2bb3166c,0x2bb3166c
|
|
.long 0xa970b999,0xa970b999
|
|
.long 0x119448fa,0x119448fa
|
|
.long 0x47e96422,0x47e96422
|
|
.long 0xa8fc8cc4,0xa8fc8cc4
|
|
.long 0xa0f03f1a,0xa0f03f1a
|
|
.long 0x567d2cd8,0x567d2cd8
|
|
.long 0x223390ef,0x223390ef
|
|
.long 0x87494ec7,0x87494ec7
|
|
.long 0xd938d1c1,0xd938d1c1
|
|
.long 0x8ccaa2fe,0x8ccaa2fe
|
|
.long 0x98d40b36,0x98d40b36
|
|
.long 0xa6f581cf,0xa6f581cf
|
|
.long 0xa57ade28,0xa57ade28
|
|
.long 0xdab78e26,0xdab78e26
|
|
.long 0x3fadbfa4,0x3fadbfa4
|
|
.long 0x2c3a9de4,0x2c3a9de4
|
|
.long 0x5078920d,0x5078920d
|
|
.long 0x6a5fcc9b,0x6a5fcc9b
|
|
.long 0x547e4662,0x547e4662
|
|
.long 0xf68d13c2,0xf68d13c2
|
|
.long 0x90d8b8e8,0x90d8b8e8
|
|
.long 0x2e39f75e,0x2e39f75e
|
|
.long 0x82c3aff5,0x82c3aff5
|
|
.long 0x9f5d80be,0x9f5d80be
|
|
.long 0x69d0937c,0x69d0937c
|
|
.long 0x6fd52da9,0x6fd52da9
|
|
.long 0xcf2512b3,0xcf2512b3
|
|
.long 0xc8ac993b,0xc8ac993b
|
|
.long 0x10187da7,0x10187da7
|
|
.long 0xe89c636e,0xe89c636e
|
|
.long 0xdb3bbb7b,0xdb3bbb7b
|
|
.long 0xcd267809,0xcd267809
|
|
.long 0x6e5918f4,0x6e5918f4
|
|
.long 0xec9ab701,0xec9ab701
|
|
.long 0x834f9aa8,0x834f9aa8
|
|
.long 0xe6956e65,0xe6956e65
|
|
.long 0xaaffe67e,0xaaffe67e
|
|
.long 0x21bccf08,0x21bccf08
|
|
.long 0xef15e8e6,0xef15e8e6
|
|
.long 0xbae79bd9,0xbae79bd9
|
|
.long 0x4a6f36ce,0x4a6f36ce
|
|
.long 0xea9f09d4,0xea9f09d4
|
|
.long 0x29b07cd6,0x29b07cd6
|
|
.long 0x31a4b2af,0x31a4b2af
|
|
.long 0x2a3f2331,0x2a3f2331
|
|
.long 0xc6a59430,0xc6a59430
|
|
.long 0x35a266c0,0x35a266c0
|
|
.long 0x744ebc37,0x744ebc37
|
|
.long 0xfc82caa6,0xfc82caa6
|
|
.long 0xe090d0b0,0xe090d0b0
|
|
.long 0x33a7d815,0x33a7d815
|
|
.long 0xf104984a,0xf104984a
|
|
.long 0x41ecdaf7,0x41ecdaf7
|
|
.long 0x7fcd500e,0x7fcd500e
|
|
.long 0x1791f62f,0x1791f62f
|
|
.long 0x764dd68d,0x764dd68d
|
|
.long 0x43efb04d,0x43efb04d
|
|
.long 0xccaa4d54,0xccaa4d54
|
|
.long 0xe49604df,0xe49604df
|
|
.long 0x9ed1b5e3,0x9ed1b5e3
|
|
.long 0x4c6a881b,0x4c6a881b
|
|
.long 0xc12c1fb8,0xc12c1fb8
|
|
.long 0x4665517f,0x4665517f
|
|
.long 0x9d5eea04,0x9d5eea04
|
|
.long 0x018c355d,0x018c355d
|
|
.long 0xfa877473,0xfa877473
|
|
.long 0xfb0b412e,0xfb0b412e
|
|
.long 0xb3671d5a,0xb3671d5a
|
|
.long 0x92dbd252,0x92dbd252
|
|
.long 0xe9105633,0xe9105633
|
|
.long 0x6dd64713,0x6dd64713
|
|
.long 0x9ad7618c,0x9ad7618c
|
|
.long 0x37a10c7a,0x37a10c7a
|
|
.long 0x59f8148e,0x59f8148e
|
|
.long 0xeb133c89,0xeb133c89
|
|
.long 0xcea927ee,0xcea927ee
|
|
.long 0xb761c935,0xb761c935
|
|
.long 0xe11ce5ed,0xe11ce5ed
|
|
.long 0x7a47b13c,0x7a47b13c
|
|
.long 0x9cd2df59,0x9cd2df59
|
|
.long 0x55f2733f,0x55f2733f
|
|
.long 0x1814ce79,0x1814ce79
|
|
.long 0x73c737bf,0x73c737bf
|
|
.long 0x53f7cdea,0x53f7cdea
|
|
.long 0x5ffdaa5b,0x5ffdaa5b
|
|
.long 0xdf3d6f14,0xdf3d6f14
|
|
.long 0x7844db86,0x7844db86
|
|
.long 0xcaaff381,0xcaaff381
|
|
.long 0xb968c43e,0xb968c43e
|
|
.long 0x3824342c,0x3824342c
|
|
.long 0xc2a3405f,0xc2a3405f
|
|
.long 0x161dc372,0x161dc372
|
|
.long 0xbce2250c,0xbce2250c
|
|
.long 0x283c498b,0x283c498b
|
|
.long 0xff0d9541,0xff0d9541
|
|
.long 0x39a80171,0x39a80171
|
|
.long 0x080cb3de,0x080cb3de
|
|
.long 0xd8b4e49c,0xd8b4e49c
|
|
.long 0x6456c190,0x6456c190
|
|
.long 0x7bcb8461,0x7bcb8461
|
|
.long 0xd532b670,0xd532b670
|
|
.long 0x486c5c74,0x486c5c74
|
|
.long 0xd0b85742,0xd0b85742
|
|
.byte 0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38
|
|
.byte 0xbf, 0x40, 0xa3, 0x9e, 0x81, 0xf3, 0xd7, 0xfb
|
|
.byte 0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87
|
|
.byte 0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb
|
|
.byte 0x54, 0x7b, 0x94, 0x32, 0xa6, 0xc2, 0x23, 0x3d
|
|
.byte 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e
|
|
.byte 0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2
|
|
.byte 0x76, 0x5b, 0xa2, 0x49, 0x6d, 0x8b, 0xd1, 0x25
|
|
.byte 0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16
|
|
.byte 0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92
|
|
.byte 0x6c, 0x70, 0x48, 0x50, 0xfd, 0xed, 0xb9, 0xda
|
|
.byte 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84
|
|
.byte 0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a
|
|
.byte 0xf7, 0xe4, 0x58, 0x05, 0xb8, 0xb3, 0x45, 0x06
|
|
.byte 0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02
|
|
.byte 0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b
|
|
.byte 0x3a, 0x91, 0x11, 0x41, 0x4f, 0x67, 0xdc, 0xea
|
|
.byte 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73
|
|
.byte 0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85
|
|
.byte 0xe2, 0xf9, 0x37, 0xe8, 0x1c, 0x75, 0xdf, 0x6e
|
|
.byte 0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89
|
|
.byte 0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b
|
|
.byte 0xfc, 0x56, 0x3e, 0x4b, 0xc6, 0xd2, 0x79, 0x20
|
|
.byte 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4
|
|
.byte 0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31
|
|
.byte 0xb1, 0x12, 0x10, 0x59, 0x27, 0x80, 0xec, 0x5f
|
|
.byte 0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d
|
|
.byte 0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef
|
|
.byte 0xa0, 0xe0, 0x3b, 0x4d, 0xae, 0x2a, 0xf5, 0xb0
|
|
.byte 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61
|
|
.byte 0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26
|
|
.byte 0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c, 0x7d
|
|
.type AES_Td,#object
|
|
.size AES_Td,(.-AES_Td)
|
|
|
|
.align 64
|
|
.skip 16
|
|
_sparcv9_AES_decrypt:
|
|
save %sp,-192-16,%sp
|
|
stx %i7,[%sp+2047+192+0] ! off-load return address
|
|
ld [%i5+240],%i7
|
|
ld [%i5+0],%l4
|
|
ld [%i5+4],%l5 !
|
|
ld [%i5+8],%l6
|
|
ld [%i5+12],%l7
|
|
srl %i7,1,%i7
|
|
xor %l4,%i0,%i0
|
|
ld [%i5+16],%l4
|
|
xor %l5,%i1,%i1
|
|
ld [%i5+20],%l5
|
|
srl %i0,21,%l0 !
|
|
xor %l6,%i2,%i2
|
|
ld [%i5+24],%l6
|
|
xor %l7,%i3,%i3
|
|
and %l0,2040,%l0
|
|
ld [%i5+28],%l7
|
|
srl %i3,13,%o0
|
|
nop
|
|
.Ldec_loop:
|
|
srl %i2,5,%o1 !
|
|
and %o0,2040,%o0
|
|
ldx [%i4+%l0],%l0
|
|
sll %i1,3,%o2
|
|
and %o1,2040,%o1
|
|
ldx [%i4+%o0],%o0
|
|
srl %i1,21,%l1
|
|
and %o2,2040,%o2
|
|
ldx [%i4+%o1],%o1 !
|
|
srl %i0,13,%o3
|
|
and %l1,2040,%l1
|
|
ldx [%i4+%o2],%o2
|
|
srl %i3,5,%o4
|
|
and %o3,2040,%o3
|
|
ldx [%i4+%l1],%l1
|
|
|
|
sll %i2,3,%o5 !
|
|
and %o4,2040,%o4
|
|
ldx [%i4+%o3],%o3
|
|
srl %i2,21,%l2
|
|
and %o5,2040,%o5
|
|
ldx [%i4+%o4],%o4
|
|
srl %i1,13,%o7
|
|
and %l2,2040,%l2
|
|
ldx [%i4+%o5],%o5 !
|
|
srl %i0,5,%g1
|
|
and %o7,2040,%o7
|
|
ldx [%i4+%l2],%l2
|
|
sll %i3,3,%g2
|
|
and %g1,2040,%g1
|
|
ldx [%i4+%o7],%o7
|
|
|
|
srl %i3,21,%l3 !
|
|
and %g2,2040,%g2
|
|
ldx [%i4+%g1],%g1
|
|
srl %i2,13,%g3
|
|
and %l3,2040,%l3
|
|
ldx [%i4+%g2],%g2
|
|
srl %i1,5,%g4
|
|
and %g3,2040,%g3
|
|
ldx [%i4+%l3],%l3 !
|
|
sll %i0,3,%g5
|
|
and %g4,2040,%g4
|
|
ldx [%i4+%g3],%g3
|
|
and %g5,2040,%g5
|
|
add %i5,32,%i5
|
|
ldx [%i4+%g4],%g4
|
|
|
|
subcc %i7,1,%i7 !
|
|
ldx [%i4+%g5],%g5
|
|
bz,a,pn %icc,.Ldec_last
|
|
add %i4,2048,%i7
|
|
|
|
srlx %o0,8,%o0
|
|
xor %l0,%l4,%l4
|
|
ld [%i5+0],%i0
|
|
|
|
srlx %o1,16,%o1 !
|
|
xor %o0,%l4,%l4
|
|
ld [%i5+4],%i1
|
|
srlx %o2,24,%o2
|
|
xor %o1,%l4,%l4
|
|
ld [%i5+8],%i2
|
|
srlx %o3,8,%o3
|
|
xor %o2,%l4,%l4
|
|
ld [%i5+12],%i3 !
|
|
srlx %o4,16,%o4
|
|
xor %l1,%l5,%l5
|
|
|
|
srlx %o5,24,%o5
|
|
xor %o3,%l5,%l5
|
|
srlx %o7,8,%o7
|
|
xor %o4,%l5,%l5
|
|
srlx %g1,16,%g1 !
|
|
xor %o5,%l5,%l5
|
|
srlx %g2,24,%g2
|
|
xor %l2,%l6,%l6
|
|
srlx %g3,8,%g3
|
|
xor %o7,%l6,%l6
|
|
srlx %g4,16,%g4
|
|
xor %g1,%l6,%l6
|
|
srlx %g5,24,%g5 !
|
|
xor %g2,%l6,%l6
|
|
xor %l3,%g4,%g4
|
|
xor %g3,%l7,%l7
|
|
srl %l4,21,%l0
|
|
xor %g4,%l7,%l7
|
|
xor %g5,%l7,%l7
|
|
srl %l7,13,%o0
|
|
|
|
and %l0,2040,%l0 !
|
|
srl %l6,5,%o1
|
|
and %o0,2040,%o0
|
|
ldx [%i4+%l0],%l0
|
|
sll %l5,3,%o2
|
|
and %o1,2040,%o1
|
|
ldx [%i4+%o0],%o0
|
|
|
|
srl %l5,21,%l1 !
|
|
and %o2,2040,%o2
|
|
ldx [%i4+%o1],%o1
|
|
srl %l4,13,%o3
|
|
and %l1,2040,%l1
|
|
ldx [%i4+%o2],%o2
|
|
srl %l7,5,%o4
|
|
and %o3,2040,%o3
|
|
ldx [%i4+%l1],%l1 !
|
|
sll %l6,3,%o5
|
|
and %o4,2040,%o4
|
|
ldx [%i4+%o3],%o3
|
|
srl %l6,21,%l2
|
|
and %o5,2040,%o5
|
|
ldx [%i4+%o4],%o4
|
|
|
|
srl %l5,13,%o7 !
|
|
and %l2,2040,%l2
|
|
ldx [%i4+%o5],%o5
|
|
srl %l4,5,%g1
|
|
and %o7,2040,%o7
|
|
ldx [%i4+%l2],%l2
|
|
sll %l7,3,%g2
|
|
and %g1,2040,%g1
|
|
ldx [%i4+%o7],%o7 !
|
|
srl %l7,21,%l3
|
|
and %g2,2040,%g2
|
|
ldx [%i4+%g1],%g1
|
|
srl %l6,13,%g3
|
|
and %l3,2040,%l3
|
|
ldx [%i4+%g2],%g2
|
|
|
|
srl %l5,5,%g4 !
|
|
and %g3,2040,%g3
|
|
ldx [%i4+%l3],%l3
|
|
sll %l4,3,%g5
|
|
and %g4,2040,%g4
|
|
ldx [%i4+%g3],%g3
|
|
srlx %o0,8,%o0
|
|
and %g5,2040,%g5
|
|
ldx [%i4+%g4],%g4 !
|
|
|
|
srlx %o1,16,%o1
|
|
xor %l0,%i0,%i0
|
|
ldx [%i4+%g5],%g5
|
|
srlx %o2,24,%o2
|
|
xor %o0,%i0,%i0
|
|
ld [%i5+16],%l4
|
|
|
|
srlx %o3,8,%o3 !
|
|
xor %o1,%i0,%i0
|
|
ld [%i5+20],%l5
|
|
srlx %o4,16,%o4
|
|
xor %o2,%i0,%i0
|
|
ld [%i5+24],%l6
|
|
srlx %o5,24,%o5
|
|
xor %l1,%i1,%i1
|
|
ld [%i5+28],%l7 !
|
|
srlx %o7,8,%o7
|
|
xor %o3,%i1,%i1
|
|
ldx [%i4+2048+0],%g0 ! prefetch td4
|
|
srlx %g1,16,%g1
|
|
xor %o4,%i1,%i1
|
|
ldx [%i4+2048+32],%g0 ! prefetch td4
|
|
srlx %g2,24,%g2
|
|
xor %o5,%i1,%i1
|
|
ldx [%i4+2048+64],%g0 ! prefetch td4
|
|
srlx %g3,8,%g3
|
|
xor %l2,%i2,%i2
|
|
ldx [%i4+2048+96],%g0 ! prefetch td4
|
|
srlx %g4,16,%g4 !
|
|
xor %o7,%i2,%i2
|
|
ldx [%i4+2048+128],%g0 ! prefetch td4
|
|
srlx %g5,24,%g5
|
|
xor %g1,%i2,%i2
|
|
ldx [%i4+2048+160],%g0 ! prefetch td4
|
|
srl %i0,21,%l0
|
|
xor %g2,%i2,%i2
|
|
ldx [%i4+2048+192],%g0 ! prefetch td4
|
|
xor %l3,%g4,%g4
|
|
xor %g3,%i3,%i3
|
|
ldx [%i4+2048+224],%g0 ! prefetch td4
|
|
and %l0,2040,%l0 !
|
|
xor %g4,%i3,%i3
|
|
xor %g5,%i3,%i3
|
|
ba .Ldec_loop
|
|
srl %i3,13,%o0
|
|
|
|
.align 32
|
|
.Ldec_last:
|
|
srlx %o0,8,%o0 !
|
|
xor %l0,%l4,%l4
|
|
ld [%i5+0],%i0
|
|
srlx %o1,16,%o1
|
|
xor %o0,%l4,%l4
|
|
ld [%i5+4],%i1
|
|
srlx %o2,24,%o2
|
|
xor %o1,%l4,%l4
|
|
ld [%i5+8],%i2 !
|
|
srlx %o3,8,%o3
|
|
xor %o2,%l4,%l4
|
|
ld [%i5+12],%i3
|
|
srlx %o4,16,%o4
|
|
xor %l1,%l5,%l5
|
|
srlx %o5,24,%o5
|
|
xor %o3,%l5,%l5
|
|
srlx %o7,8,%o7 !
|
|
xor %o4,%l5,%l5
|
|
srlx %g1,16,%g1
|
|
xor %o5,%l5,%l5
|
|
srlx %g2,24,%g2
|
|
xor %l2,%l6,%l6
|
|
srlx %g3,8,%g3
|
|
xor %o7,%l6,%l6
|
|
srlx %g4,16,%g4 !
|
|
xor %g1,%l6,%l6
|
|
srlx %g5,24,%g5
|
|
xor %g2,%l6,%l6
|
|
xor %l3,%g4,%g4
|
|
xor %g3,%l7,%l7
|
|
srl %l4,24,%l0
|
|
xor %g4,%l7,%l7
|
|
xor %g5,%l7,%l7 !
|
|
srl %l7,16,%o0
|
|
|
|
srl %l6,8,%o1
|
|
and %o0,255,%o0
|
|
ldub [%i7+%l0],%l0
|
|
srl %l5,24,%l1
|
|
and %o1,255,%o1
|
|
ldub [%i7+%o0],%o0
|
|
srl %l4,16,%o3 !
|
|
and %l5,255,%o2
|
|
ldub [%i7+%o1],%o1
|
|
ldub [%i7+%o2],%o2
|
|
srl %l7,8,%o4
|
|
and %o3,255,%o3
|
|
ldub [%i7+%l1],%l1
|
|
|
|
srl %l6,24,%l2 !
|
|
and %o4,255,%o4
|
|
ldub [%i7+%o3],%o3
|
|
srl %l5,16,%o7
|
|
and %l6,255,%o5
|
|
ldub [%i7+%o4],%o4
|
|
ldub [%i7+%o5],%o5
|
|
|
|
srl %l4,8,%g1 !
|
|
and %o7,255,%o7
|
|
ldub [%i7+%l2],%l2
|
|
srl %l7,24,%l3
|
|
and %g1,255,%g1
|
|
ldub [%i7+%o7],%o7
|
|
srl %l6,16,%g3
|
|
and %l7,255,%g2
|
|
ldub [%i7+%g1],%g1 !
|
|
srl %l5,8,%g4
|
|
and %g3,255,%g3
|
|
ldub [%i7+%g2],%g2
|
|
ldub [%i7+%l3],%l3
|
|
and %g4,255,%g4
|
|
ldub [%i7+%g3],%g3
|
|
and %l4,255,%g5
|
|
ldub [%i7+%g4],%g4 !
|
|
|
|
sll %l0,24,%l0
|
|
xor %o2,%i0,%i0
|
|
ldub [%i7+%g5],%g5
|
|
sll %o0,16,%o0
|
|
xor %l0,%i0,%i0
|
|
ldx [%sp+2047+192+0],%i7 ! restore return address
|
|
|
|
sll %o1,8,%o1 !
|
|
xor %o0,%i0,%i0
|
|
sll %l1,24,%l1
|
|
xor %o1,%i0,%i0
|
|
sll %o3,16,%o3
|
|
xor %o5,%i1,%i1
|
|
sll %o4,8,%o4
|
|
xor %l1,%i1,%i1
|
|
sll %l2,24,%l2 !
|
|
xor %o3,%i1,%i1
|
|
sll %o7,16,%o7
|
|
xor %g2,%i2,%i2
|
|
sll %g1,8,%g1
|
|
xor %o4,%i1,%i1
|
|
sll %l3,24,%l3
|
|
xor %l2,%i2,%i2
|
|
sll %g3,16,%g3 !
|
|
xor %o7,%i2,%i2
|
|
sll %g4,8,%g4
|
|
xor %g1,%i2,%i2
|
|
xor %l3,%g4,%g4
|
|
xor %g3,%i3,%i3
|
|
xor %g4,%i3,%i3
|
|
xor %g5,%i3,%i3
|
|
|
|
ret
|
|
restore
|
|
.type _sparcv9_AES_decrypt,#function
|
|
.size _sparcv9_AES_decrypt,(.-_sparcv9_AES_decrypt)
|
|
|
|
.align 32
|
|
.globl AES_decrypt
|
|
AES_decrypt:
|
|
or %o0,%o1,%g1
|
|
andcc %g1,3,%g0
|
|
bnz,pn %xcc,.Lunaligned_dec
|
|
save %sp,-192,%sp
|
|
|
|
ld [%i0+0],%o0
|
|
ld [%i0+4],%o1
|
|
ld [%i0+8],%o2
|
|
ld [%i0+12],%o3
|
|
|
|
mov %i2,%o5
|
|
nop
|
|
1: call _sparcv9_AES_decrypt
|
|
sub %o7,1b-AES_Td,%o4
|
|
|
|
st %o0,[%i1+0]
|
|
st %o1,[%i1+4]
|
|
st %o2,[%i1+8]
|
|
st %o3,[%i1+12]
|
|
|
|
ret
|
|
restore
|
|
|
|
.align 32
|
|
.Lunaligned_dec:
|
|
ldub [%i0+0],%l0
|
|
ldub [%i0+1],%l1
|
|
ldub [%i0+2],%l2
|
|
|
|
sll %l0,24,%l0
|
|
ldub [%i0+3],%l3
|
|
sll %l1,16,%l1
|
|
ldub [%i0+4],%l4
|
|
sll %l2,8,%l2
|
|
or %l1,%l0,%l0
|
|
ldub [%i0+5],%l5
|
|
sll %l4,24,%l4
|
|
or %l3,%l2,%l2
|
|
ldub [%i0+6],%l6
|
|
sll %l5,16,%l5
|
|
or %l0,%l2,%o0
|
|
ldub [%i0+7],%l7
|
|
|
|
sll %l6,8,%l6
|
|
or %l5,%l4,%l4
|
|
ldub [%i0+8],%l0
|
|
or %l7,%l6,%l6
|
|
ldub [%i0+9],%l1
|
|
or %l4,%l6,%o1
|
|
ldub [%i0+10],%l2
|
|
|
|
sll %l0,24,%l0
|
|
ldub [%i0+11],%l3
|
|
sll %l1,16,%l1
|
|
ldub [%i0+12],%l4
|
|
sll %l2,8,%l2
|
|
or %l1,%l0,%l0
|
|
ldub [%i0+13],%l5
|
|
sll %l4,24,%l4
|
|
or %l3,%l2,%l2
|
|
ldub [%i0+14],%l6
|
|
sll %l5,16,%l5
|
|
or %l0,%l2,%o2
|
|
ldub [%i0+15],%l7
|
|
|
|
sll %l6,8,%l6
|
|
or %l5,%l4,%l4
|
|
or %l7,%l6,%l6
|
|
or %l4,%l6,%o3
|
|
|
|
mov %i2,%o5
|
|
nop
|
|
1: call _sparcv9_AES_decrypt
|
|
sub %o7,1b-AES_Td,%o4
|
|
|
|
srl %o0,24,%l0
|
|
srl %o0,16,%l1
|
|
stb %l0,[%i1+0]
|
|
srl %o0,8,%l2
|
|
stb %l1,[%i1+1]
|
|
stb %l2,[%i1+2]
|
|
srl %o1,24,%l4
|
|
stb %o0,[%i1+3]
|
|
|
|
srl %o1,16,%l5
|
|
stb %l4,[%i1+4]
|
|
srl %o1,8,%l6
|
|
stb %l5,[%i1+5]
|
|
stb %l6,[%i1+6]
|
|
srl %o2,24,%l0
|
|
stb %o1,[%i1+7]
|
|
|
|
srl %o2,16,%l1
|
|
stb %l0,[%i1+8]
|
|
srl %o2,8,%l2
|
|
stb %l1,[%i1+9]
|
|
stb %l2,[%i1+10]
|
|
srl %o3,24,%l4
|
|
stb %o2,[%i1+11]
|
|
|
|
srl %o3,16,%l5
|
|
stb %l4,[%i1+12]
|
|
srl %o3,8,%l6
|
|
stb %l5,[%i1+13]
|
|
stb %l6,[%i1+14]
|
|
stb %o3,[%i1+15]
|
|
|
|
ret
|
|
restore
|
|
.type AES_decrypt,#function
|
|
.size AES_decrypt,(.-AES_decrypt)
|