⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 aes-sparcv9.pl

📁 著名的开源密码源代码
💻 PL
📖 第 1 页 / 共 2 页
字号:
#!/usr/bin/env perl## ====================================================================# Written by Andy Polyakov <appro@fy.chalmers.se> for the OpenSSL# project. Rights for redistribution and usage in source and binary# forms are granted according to the OpenSSL license.# ====================================================================## Version 1.1## The major reason for undertaken effort was to mitigate the hazard of# cache-timing attack. This is [currently and initially!] addressed in# two ways. 1. S-boxes are compressed from 5KB to 2KB+256B size each.# 2. References to them are scheduled for L2 cache latency, meaning# that the tables don't have to reside in L1 cache. Once again, this# is an initial draft and one should expect more countermeasures to# be implemented...## Version 1.1 prefetches T[ed]4 in order to mitigate attack on last# round.## Even though performance was not the primary goal [on the contrary,# extra shifts "induced" by compressed S-box and longer loop epilogue# "induced" by scheduling for L2 have negative effect on performance],# the code turned out to run in ~23 cycles per processed byte en-/# decrypted with 128-bit key. This is pretty good result for code# with mentioned qualities and UltraSPARC core. Compared to Sun C# generated code my encrypt procedure runs just few percents faster,# while decrypt one - whole 50% faster [yes, Sun C failed to generate# optimal decrypt procedure]. Compared to GNU C generated code both# procedures are more than 60% faster:-)$bits=32;for (@ARGV)	{ $bits=64 if (/\-m64/ || /\-xarch\=v9/); }if ($bits==64)	{ $bias=2047; $frame=192; }else		{ $bias=0;    $frame=112; }$locals=16;$acc0="%l0";$acc1="%o0";$acc2="%o1";$acc3="%o2";$acc4="%l1";$acc5="%o3";$acc6="%o4";$acc7="%o5";$acc8="%l2";$acc9="%o7";$acc10="%g1";$acc11="%g2";$acc12="%l3";$acc13="%g3";$acc14="%g4";$acc15="%g5";$t0="%l4";$t1="%l5";$t2="%l6";$t3="%l7";$s0="%i0";$s1="%i1";$s2="%i2";$s3="%i3";$tbl="%i4";$key="%i5";$rounds="%i7";	# aliases with return address, which is off-loaded to stacksub _data_word(){ my $i;    while(defined($i=shift)) { $code.=sprintf"\t.long\t0x%08x,0x%08x\n",$i,$i; }}$code.=<<___ if ($bits==64);.register	%g2,#scratch.register	%g3,#scratch___$code.=<<___;.section	".text",#alloc,#execinstr.align	256AES_Te:___&_data_word(	0xc66363a5, 0xf87c7c84, 0xee777799, 0xf67b7b8d,	0xfff2f20d, 0xd66b6bbd, 0xde6f6fb1, 0x91c5c554,	0x60303050, 0x02010103, 0xce6767a9, 0x562b2b7d,	0xe7fefe19, 0xb5d7d762, 0x4dababe6, 0xec76769a,	0x8fcaca45, 0x1f82829d, 0x89c9c940, 0xfa7d7d87,	0xeffafa15, 0xb25959eb, 0x8e4747c9, 0xfbf0f00b,	0x41adadec, 0xb3d4d467, 0x5fa2a2fd, 0x45afafea,	0x239c9cbf, 0x53a4a4f7, 0xe4727296, 0x9bc0c05b,	0x75b7b7c2, 0xe1fdfd1c, 0x3d9393ae, 0x4c26266a,	0x6c36365a, 0x7e3f3f41, 0xf5f7f702, 0x83cccc4f,	0x6834345c, 0x51a5a5f4, 0xd1e5e534, 0xf9f1f108,	0xe2717193, 0xabd8d873, 0x62313153, 0x2a15153f,	0x0804040c, 0x95c7c752, 0x46232365, 0x9dc3c35e,	0x30181828, 0x379696a1, 0x0a05050f, 0x2f9a9ab5,	0x0e070709, 0x24121236, 0x1b80809b, 0xdfe2e23d,	0xcdebeb26, 0x4e272769, 0x7fb2b2cd, 0xea75759f,	0x1209091b, 0x1d83839e, 0x582c2c74, 0x341a1a2e,	0x361b1b2d, 0xdc6e6eb2, 0xb45a5aee, 0x5ba0a0fb,	0xa45252f6, 0x763b3b4d, 0xb7d6d661, 0x7db3b3ce,	0x5229297b, 0xdde3e33e, 0x5e2f2f71, 0x13848497,	0xa65353f5, 0xb9d1d168, 0x00000000, 0xc1eded2c,	0x40202060, 0xe3fcfc1f, 0x79b1b1c8, 0xb65b5bed,	0xd46a6abe, 0x8dcbcb46, 0x67bebed9, 0x7239394b,	0x944a4ade, 0x984c4cd4, 0xb05858e8, 0x85cfcf4a,	0xbbd0d06b, 0xc5efef2a, 0x4faaaae5, 0xedfbfb16,	0x864343c5, 0x9a4d4dd7, 0x66333355, 0x11858594,	0x8a4545cf, 0xe9f9f910, 0x04020206, 0xfe7f7f81,	0xa05050f0, 0x783c3c44, 0x259f9fba, 0x4ba8a8e3,	0xa25151f3, 0x5da3a3fe, 0x804040c0, 0x058f8f8a,	0x3f9292ad, 0x219d9dbc, 0x70383848, 0xf1f5f504,	0x63bcbcdf, 0x77b6b6c1, 0xafdada75, 0x42212163,	0x20101030, 0xe5ffff1a, 0xfdf3f30e, 0xbfd2d26d,	0x81cdcd4c, 0x180c0c14, 0x26131335, 0xc3ecec2f,	0xbe5f5fe1, 0x359797a2, 0x884444cc, 0x2e171739,	0x93c4c457, 0x55a7a7f2, 0xfc7e7e82, 0x7a3d3d47,	0xc86464ac, 0xba5d5de7, 0x3219192b, 0xe6737395,	0xc06060a0, 0x19818198, 0x9e4f4fd1, 0xa3dcdc7f,	0x44222266, 0x542a2a7e, 0x3b9090ab, 0x0b888883,	0x8c4646ca, 0xc7eeee29, 0x6bb8b8d3, 0x2814143c,	0xa7dede79, 0xbc5e5ee2, 0x160b0b1d, 0xaddbdb76,	0xdbe0e03b, 0x64323256, 0x743a3a4e, 0x140a0a1e,	0x924949db, 0x0c06060a, 0x4824246c, 0xb85c5ce4,	0x9fc2c25d, 0xbdd3d36e, 0x43acacef, 0xc46262a6,	0x399191a8, 0x319595a4, 0xd3e4e437, 0xf279798b,	0xd5e7e732, 0x8bc8c843, 0x6e373759, 0xda6d6db7,	0x018d8d8c, 0xb1d5d564, 0x9c4e4ed2, 0x49a9a9e0,	0xd86c6cb4, 0xac5656fa, 0xf3f4f407, 0xcfeaea25,	0xca6565af, 0xf47a7a8e, 0x47aeaee9, 0x10080818,	0x6fbabad5, 0xf0787888, 0x4a25256f, 0x5c2e2e72,	0x381c1c24, 0x57a6a6f1, 0x73b4b4c7, 0x97c6c651,	0xcbe8e823, 0xa1dddd7c, 0xe874749c, 0x3e1f1f21,	0x964b4bdd, 0x61bdbddc, 0x0d8b8b86, 0x0f8a8a85,	0xe0707090, 0x7c3e3e42, 0x71b5b5c4, 0xcc6666aa,	0x904848d8, 0x06030305, 0xf7f6f601, 0x1c0e0e12,	0xc26161a3, 0x6a35355f, 0xae5757f9, 0x69b9b9d0,	0x17868691, 0x99c1c158, 0x3a1d1d27, 0x279e9eb9,	0xd9e1e138, 0xebf8f813, 0x2b9898b3, 0x22111133,	0xd26969bb, 0xa9d9d970, 0x078e8e89, 0x339494a7,	0x2d9b9bb6, 0x3c1e1e22, 0x15878792, 0xc9e9e920,	0x87cece49, 0xaa5555ff, 0x50282878, 0xa5dfdf7a,	0x038c8c8f, 0x59a1a1f8, 0x09898980, 0x1a0d0d17,	0x65bfbfda, 0xd7e6e631, 0x844242c6, 0xd06868b8,	0x824141c3, 0x299999b0, 0x5a2d2d77, 0x1e0f0f11,	0x7bb0b0cb, 0xa85454fc, 0x6dbbbbd6, 0x2c16163a);$code.=<<___;	.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,-$frame-$locals,%sp	stx	%i7,[%sp+$bias+$frame+0]	! off-load return address	ld	[$key+240],$rounds	ld	[$key+0],$t0	ld	[$key+4],$t1			!	ld	[$key+8],$t2	srl	$rounds,1,$rounds	xor	$t0,$s0,$s0	ld	[$key+12],$t3	srl	$s0,21,$acc0	xor	$t1,$s1,$s1	ld	[$key+16],$t0	srl	$s1,13,$acc1			!	xor	$t2,$s2,$s2	ld	[$key+20],$t1	xor	$t3,$s3,$s3	ld	[$key+24],$t2	and	$acc0,2040,$acc0	ld	[$key+28],$t3	nop.Lenc_loop:	srl	$s2,5,$acc2			!	and	$acc1,2040,$acc1	ldx	[$tbl+$acc0],$acc0	sll	$s3,3,$acc3	and	$acc2,2040,$acc2	ldx	[$tbl+$acc1],$acc1	srl	$s1,21,$acc4	and	$acc3,2040,$acc3	ldx	[$tbl+$acc2],$acc2		!	srl	$s2,13,$acc5	and	$acc4,2040,$acc4	ldx	[$tbl+$acc3],$acc3	srl	$s3,5,$acc6	and	$acc5,2040,$acc5	ldx	[$tbl+$acc4],$acc4	fmovs	%f0,%f0	sll	$s0,3,$acc7			!	and	$acc6,2040,$acc6	ldx	[$tbl+$acc5],$acc5	srl	$s2,21,$acc8	and	$acc7,2040,$acc7	ldx	[$tbl+$acc6],$acc6	srl	$s3,13,$acc9	and	$acc8,2040,$acc8	ldx	[$tbl+$acc7],$acc7		!	srl	$s0,5,$acc10	and	$acc9,2040,$acc9	ldx	[$tbl+$acc8],$acc8	sll	$s1,3,$acc11	and	$acc10,2040,$acc10	ldx	[$tbl+$acc9],$acc9	fmovs	%f0,%f0	srl	$s3,21,$acc12			!	and	$acc11,2040,$acc11	ldx	[$tbl+$acc10],$acc10	srl	$s0,13,$acc13	and	$acc12,2040,$acc12	ldx	[$tbl+$acc11],$acc11	srl	$s1,5,$acc14	and	$acc13,2040,$acc13	ldx	[$tbl+$acc12],$acc12		!	sll	$s2,3,$acc15	and	$acc14,2040,$acc14	ldx	[$tbl+$acc13],$acc13	and	$acc15,2040,$acc15	add	$key,32,$key	ldx	[$tbl+$acc14],$acc14	fmovs	%f0,%f0	subcc	$rounds,1,$rounds		!	ldx	[$tbl+$acc15],$acc15	bz,a,pn	%icc,.Lenc_last	add	$tbl,2048,$rounds		srlx	$acc1,8,$acc1		xor	$acc0,$t0,$t0	ld	[$key+0],$s0	fmovs	%f0,%f0		srlx	$acc2,16,$acc2		!		xor	$acc1,$t0,$t0	ld	[$key+4],$s1		srlx	$acc3,24,$acc3		xor	$acc2,$t0,$t0	ld	[$key+8],$s2		srlx	$acc5,8,$acc5		xor	$acc3,$t0,$t0	ld	[$key+12],$s3			!		srlx	$acc6,16,$acc6		xor	$acc4,$t1,$t1	fmovs	%f0,%f0		srlx	$acc7,24,$acc7		xor	$acc5,$t1,$t1		srlx	$acc9,8,$acc9		xor	$acc6,$t1,$t1		srlx	$acc10,16,$acc10	!		xor	$acc7,$t1,$t1		srlx	$acc11,24,$acc11		xor	$acc8,$t2,$t2		srlx	$acc13,8,$acc13		xor	$acc9,$t2,$t2		srlx	$acc14,16,$acc14		xor	$acc10,$t2,$t2		srlx	$acc15,24,$acc15	!		xor	$acc11,$t2,$t2		xor	$acc12,$acc14,$acc14		xor	$acc13,$t3,$t3	srl	$t0,21,$acc0		xor	$acc14,$t3,$t3	srl	$t1,13,$acc1		xor	$acc15,$t3,$t3	and	$acc0,2040,$acc0		!	srl	$t2,5,$acc2	and	$acc1,2040,$acc1	ldx	[$tbl+$acc0],$acc0	sll	$t3,3,$acc3	and	$acc2,2040,$acc2	ldx	[$tbl+$acc1],$acc1	fmovs	%f0,%f0	srl	$t1,21,$acc4			!	and	$acc3,2040,$acc3	ldx	[$tbl+$acc2],$acc2	srl	$t2,13,$acc5	and	$acc4,2040,$acc4	ldx	[$tbl+$acc3],$acc3	srl	$t3,5,$acc6	and	$acc5,2040,$acc5	ldx	[$tbl+$acc4],$acc4		!	sll	$t0,3,$acc7	and	$acc6,2040,$acc6	ldx	[$tbl+$acc5],$acc5	srl	$t2,21,$acc8	and	$acc7,2040,$acc7	ldx	[$tbl+$acc6],$acc6	fmovs	%f0,%f0	srl	$t3,13,$acc9			!	and	$acc8,2040,$acc8	ldx	[$tbl+$acc7],$acc7	srl	$t0,5,$acc10	and	$acc9,2040,$acc9	ldx	[$tbl+$acc8],$acc8	sll	$t1,3,$acc11	and	$acc10,2040,$acc10	ldx	[$tbl+$acc9],$acc9		!	srl	$t3,21,$acc12	and	$acc11,2040,$acc11	ldx	[$tbl+$acc10],$acc10	srl	$t0,13,$acc13	and	$acc12,2040,$acc12	ldx	[$tbl+$acc11],$acc11	fmovs	%f0,%f0	srl	$t1,5,$acc14			!	and	$acc13,2040,$acc13	ldx	[$tbl+$acc12],$acc12	sll	$t2,3,$acc15	and	$acc14,2040,$acc14	ldx	[$tbl+$acc13],$acc13		srlx	$acc1,8,$acc1	and	$acc15,2040,$acc15	ldx	[$tbl+$acc14],$acc14		!		srlx	$acc2,16,$acc2		xor	$acc0,$s0,$s0	ldx	[$tbl+$acc15],$acc15		srlx	$acc3,24,$acc3		xor	$acc1,$s0,$s0	ld	[$key+16],$t0	fmovs	%f0,%f0		srlx	$acc5,8,$acc5		!		xor	$acc2,$s0,$s0	ld	[$key+20],$t1		srlx	$acc6,16,$acc6		xor	$acc3,$s0,$s0	ld	[$key+24],$t2		srlx	$acc7,24,$acc7		xor	$acc4,$s1,$s1	ld	[$key+28],$t3			!		srlx	$acc9,8,$acc9		xor	$acc5,$s1,$s1	ldx	[$tbl+2048+0],%g0		! prefetch te4		srlx	$acc10,16,$acc10		xor	$acc6,$s1,$s1	ldx	[$tbl+2048+32],%g0		! prefetch te4		srlx	$acc11,24,$acc11		xor	$acc7,$s1,$s1	ldx	[$tbl+2048+64],%g0		! prefetch te4		srlx	$acc13,8,$acc13		xor	$acc8,$s2,$s2	ldx	[$tbl+2048+96],%g0		! prefetch te4		srlx	$acc14,16,$acc14	!		xor	$acc9,$s2,$s2	ldx	[$tbl+2048+128],%g0		! prefetch te4		srlx	$acc15,24,$acc15		xor	$acc10,$s2,$s2	ldx	[$tbl+2048+160],%g0		! prefetch te4	srl	$s0,21,$acc0		xor	$acc11,$s2,$s2	ldx	[$tbl+2048+192],%g0		! prefetch te4		xor	$acc12,$acc14,$acc14		xor	$acc13,$s3,$s3	ldx	[$tbl+2048+224],%g0		! prefetch te4	srl	$s1,13,$acc1			!		xor	$acc14,$s3,$s3		xor	$acc15,$s3,$s3	ba	.Lenc_loop	and	$acc0,2040,$acc0.align	32.Lenc_last:		srlx	$acc1,8,$acc1		!		xor	$acc0,$t0,$t0	ld	[$key+0],$s0		srlx	$acc2,16,$acc2		xor	$acc1,$t0,$t0	ld	[$key+4],$s1		srlx	$acc3,24,$acc3		xor	$acc2,$t0,$t0	ld	[$key+8],$s2			!		srlx	$acc5,8,$acc5		xor	$acc3,$t0,$t0	ld	[$key+12],$s3		srlx	$acc6,16,$acc6		xor	$acc4,$t1,$t1		srlx	$acc7,24,$acc7		xor	$acc5,$t1,$t1		srlx	$acc9,8,$acc9		!		xor	$acc6,$t1,$t1		srlx	$acc10,16,$acc10		xor	$acc7,$t1,$t1		srlx	$acc11,24,$acc11		xor	$acc8,$t2,$t2		srlx	$acc13,8,$acc13		xor	$acc9,$t2,$t2		srlx	$acc14,16,$acc14	!		xor	$acc10,$t2,$t2		srlx	$acc15,24,$acc15		xor	$acc11,$t2,$t2		xor	$acc12,$acc14,$acc14		xor	$acc13,$t3,$t3	srl	$t0,24,$acc0		xor	$acc14,$t3,$t3	srl	$t1,16,$acc1			!		xor	$acc15,$t3,$t3	srl	$t2,8,$acc2	and	$acc1,255,$acc1	ldub	[$rounds+$acc0],$acc0	srl	$t1,24,$acc4	and	$acc2,255,$acc2	ldub	[$rounds+$acc1],$acc1	srl	$t2,16,$acc5			!	and	$t3,255,$acc3	ldub	[$rounds+$acc2],$acc2	ldub	[$rounds+$acc3],$acc3	srl	$t3,8,$acc6	and	$acc5,255,$acc5	ldub	[$rounds+$acc4],$acc4	fmovs	%f0,%f0	srl	$t2,24,$acc8			!	and	$acc6,255,$acc6	ldub	[$rounds+$acc5],$acc5	srl	$t3,16,$acc9	and	$t0,255,$acc7	ldub	[$rounds+$acc6],$acc6	ldub	[$rounds+$acc7],$acc7	fmovs	%f0,%f0	srl	$t0,8,$acc10			!	and	$acc9,255,$acc9	ldub	[$rounds+$acc8],$acc8	srl	$t3,24,$acc12	and	$acc10,255,$acc10	ldub	[$rounds+$acc9],$acc9	srl	$t0,16,$acc13	and	$t1,255,$acc11	ldub	[$rounds+$acc10],$acc10		!	srl	$t1,8,$acc14	and	$acc13,255,$acc13	ldub	[$rounds+$acc11],$acc11	ldub	[$rounds+$acc12],$acc12	and	$acc14,255,$acc14	ldub	[$rounds+$acc13],$acc13	and	$t2,255,$acc15	ldub	[$rounds+$acc14],$acc14		!		sll	$acc0,24,$acc0		xor	$acc3,$s0,$s0	ldub	[$rounds+$acc15],$acc15		sll	$acc1,16,$acc1		xor	$acc0,$s0,$s0	ldx	[%sp+$bias+$frame+0],%i7	! restore return address	fmovs	%f0,%f0		sll	$acc2,8,$acc2		!		xor	$acc1,$s0,$s0		sll	$acc4,24,$acc4		xor	$acc2,$s0,$s0		sll	$acc5,16,$acc5		xor	$acc7,$s1,$s1		sll	$acc6,8,$acc6		xor	$acc4,$s1,$s1		sll	$acc8,24,$acc8		!		xor	$acc5,$s1,$s1		sll	$acc9,16,$acc9		xor	$acc11,$s2,$s2		sll	$acc10,8,$acc10		xor	$acc6,$s1,$s1		sll	$acc12,24,$acc12		xor	$acc8,$s2,$s2		sll	$acc13,16,$acc13	!		xor	$acc9,$s2,$s2		sll	$acc14,8,$acc14		xor	$acc10,$s2,$s2		xor	$acc12,$acc14,$acc14		xor	$acc13,$s3,$s3		xor	$acc14,$s3,$s3		xor	$acc15,$s3,$s3	ret	restore.type	_sparcv9_AES_encrypt,#function.size	_sparcv9_AES_encrypt,(.-_sparcv9_AES_encrypt).align	32.globl	AES_encryptAES_encrypt:	or	%o0,%o1,%g1	andcc	%g1,3,%g0	bnz,pn	%xcc,.Lunaligned_enc	save	%sp,-$frame,%sp	ld	[%i0+0],%o0	ld	[%i0+4],%o1	ld	[%i0+8],%o2	ld	[%i0+12],%o31:	call	.+8	add	%o7,AES_Te-1b,%o4	call	_sparcv9_AES_encrypt	mov	%i2,%o5	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,%o31:	call	.+8	add	%o7,AES_Te-1b,%o4	call	_sparcv9_AES_encrypt	mov	%i2,%o5	srl	%o0,24,%l0	srl	%o0,16,%l1

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -