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

📄 aes-s390x.pl

📁 开放的SSL工具
💻 PL
📖 第 1 页 / 共 2 页
字号:
	llgf	$s0,0($inp)	llgf	$s1,4($inp)	llgf	$s2,8($inp)	llgf	$s3,12($inp)	llill	$mask,`0xff<<3`	bras	$ra,_s390x_AES_decrypt	lg	$out,24($sp)	st	$s0,0($out)	st	$s1,4($out)	st	$s2,8($out)	st	$s3,12($out)	lmg	%r6,$ra,48($sp)	br	$ra.size	AES_decrypt,.-AES_decrypt.type   _s390x_AES_decrypt,\@function.align	16_s390x_AES_decrypt:	x	$s0,0($key)	x	$s1,4($key)	x	$s2,8($key)	x	$s3,12($key)	l	$rounds,240($key)	aghi	$rounds,-1.Ldec_loop:	srlg	$i1,$s0,`16-3`	srlg	$i2,$s0,`8-3`	sllg	$i3,$s0,`0+3`	srl	$s0,`24-3`	nr	$s0,$mask	nr	$i1,$mask	nr	$i2,$mask	ngr	$i3,$mask	l	$s0,0($s0,$tbl)	# Td0[s0>>24]	l	$t1,3($i1,$tbl)	# Td1[s0>>16]	l	$t2,2($i2,$tbl)	# Td2[s0>>8]	l	$t3,1($i3,$tbl)	# Td3[s0>>0]	sllg	$i1,$s1,`0+3`	# i0	srlg	$i2,$s1,`16-3`	srlg	$i3,$s1,`8-3`	srl	$s1,`24-3`	ngr	$i1,$mask	nr	$s1,$mask	nr	$i2,$mask	nr	$i3,$mask	x	$s0,1($i1,$tbl)	# Td3[s1>>0]	l	$s1,0($s1,$tbl)	# Td0[s1>>24]	x	$t2,3($i2,$tbl)	# Td1[s1>>16]	x	$t3,2($i3,$tbl)	# Td2[s1>>8]	xr	$s1,$t1	srlg	$i1,$s2,`8-3`	# i0	sllg	$i2,$s2,`0+3`	# i1	srlg	$i3,$s2,`16-3`	srl	$s2,`24-3`	nr	$i1,$mask	ngr	$i2,$mask	nr	$s2,$mask	nr	$i3,$mask	x	$s0,2($i1,$tbl)	# Td2[s2>>8]	x	$s1,1($i2,$tbl)	# Td3[s2>>0]	l	$s2,0($s2,$tbl)	# Td0[s2>>24]	x	$t3,3($i3,$tbl)	# Td1[s2>>16]	xr	$s2,$t2	srlg	$i1,$s3,`16-3`	# i0	srlg	$i2,$s3,`8-3`	# i1	sllg	$i3,$s3,`0+3`	# i2	srl	$s3,`24-3`	nr	$i1,$mask	nr	$i2,$mask	ngr	$i3,$mask	nr	$s3,$mask	x	$s0,3($i1,$tbl)	# Td1[s3>>16]	x	$s1,2($i2,$tbl)	# Td2[s3>>8]	x	$s2,1($i3,$tbl)	# Td3[s3>>0]	l	$s3,0($s3,$tbl)	# Td0[s3>>24]	xr	$s3,$t3	la	$key,16($key)	x	$s0,0($key)	x	$s1,4($key)	x	$s2,8($key)	x	$s3,12($key)	brct	$rounds,.Ldec_loop	l	$t1,`2048+0`($tbl)	# prefetch Td4	l	$t2,`2048+32`($tbl)	l	$t3,`2048+64`($tbl)	l	$i1,`2048+96`($tbl)	l	$i2,`2048+128`($tbl)	l	$i3,`2048+160`($tbl)	l	$t1,`2048+192`($tbl)	l	$t2,`2048+224`($tbl)	llill	$mask,0xff	srlg	$i3,$s0,24	# i0	srlg	$i1,$s0,16	srlg	$i2,$s0,8	nr	$s0,$mask	# i3	nr	$i1,$mask	nr	$i2,$mask	llgc	$i3,2048($i3,$tbl)	# Td4[s0>>24]	llgc	$t1,2048($i1,$tbl)	# Td4[s0>>16]	llgc	$t2,2048($i2,$tbl)	# Td4[s0>>8]	llgc	$t3,2048($s0,$tbl)	# Td4[s0>>0]	sllg	$s0,$i3,24	sll	$t1,16	sll	$t2,8	srlg	$i1,$s1,24	srlg	$i2,$s1,16	srlg	$i3,$s1,8	nr	$s1,$mask	# i0	nr	$i2,$mask	nr	$i3,$mask	llgc	$s1,2048($s1,$tbl)	# Td4[s1>>0]	llgc	$i1,2048($i1,$tbl)	# Td4[s1>>24]	llgc	$i2,2048($i2,$tbl)	# Td4[s1>>16]	llgc	$i3,2048($i3,$tbl)	# Td4[s1>>8]	sll	$i1,24	sll	$i2,16	sll	$i3,8	or	$s0,$s1	or	$t1,$i1	or	$t2,$i2	or	$t3,$i3	srlg	$i1,$s2,8	# i0	srlg	$i2,$s2,24	srlg	$i3,$s2,16	nr	$s2,$mask	# i1	nr	$i1,$mask	nr	$i3,$mask	llgc	$i1,2048($i1,$tbl)	# Td4[s2>>8]	llgc	$s1,2048($s2,$tbl)	# Td4[s2>>0]	llgc	$i2,2048($i2,$tbl)	# Td4[s2>>24]	llgc	$i3,2048($i3,$tbl)	# Td4[s2>>16]	sll	$i1,8	sll	$i2,24	sll	$i3,16	or	$s0,$i1	or	$s1,$t1	or	$t2,$i2	or	$t3,$i3	srlg	$i1,$s3,16	# i0	srlg	$i2,$s3,8	# i1	srlg	$i3,$s3,24	nr	$s3,$mask	# i2	nr	$i1,$mask	nr	$i2,$mask	llgc	$i1,2048($i1,$tbl)	# Td4[s3>>16]	llgc	$i2,2048($i2,$tbl)	# Td4[s3>>8]	llgc	$s2,2048($s3,$tbl)	# Td4[s3>>0]	llgc	$s3,2048($i3,$tbl)	# Td4[s3>>24]	sll	$i1,16	sll	$i2,8	sll	$s3,24	or	$s0,$i1	or	$s1,$i2	or	$s2,$t2	or	$s3,$t3	x	$s0,16($key)	x	$s1,20($key)	x	$s2,24($key)	x	$s3,28($key)	br	$ra	.size	_s390x_AES_decrypt,.-_s390x_AES_decrypt# void AES_set_encrypt_key(const unsigned char *in, int bits,# 		 AES_KEY *key) {.globl	AES_set_encrypt_key.type	AES_set_encrypt_key,\@function.align	16AES_set_encrypt_key:	lghi	$t1,0	clgr	$inp,$t1	je	.Lminus1	clgr	$key,$t1	je	.Lminus1	lghi	$t1,128	clr	$bits,$t1	je	.Lproceed128	lghi	$t1,192	clr	$bits,$t1	je	.Lekey_internal	lghi	$t1,256	clr	$bits,$t1	je	.Lekey_internal	lghi	%r2,-2	br	%r14.align	4.Lproceed128:___$code.=<<___ if (!$softonly);	lghi	%r0,0		# query capability vector	la	%r1,16($sp)	.long	0xb92e0042	# km %r4,%r2	lg	%r0,16($sp)	tmhl	%r0,`0x8000>>2`	jz	.Lekey_internal	lmg	$t1,$t2,0($inp)	# just copy 128 bits...	stmg	$t1,$t2,0($key)	lghi	$t1,10	st	$t1,236($key)	# ... postpone key setup	st	$t1,240($key)	lghi	%r2,0	br	%r14___$code.=<<___;.align	16.Lekey_internal:	stmg	%r6,%r13,48($sp)	# all non-volatile regs	larl	$tbl,AES_Te+2048	llgf	$s0,0($inp)	llgf	$s1,4($inp)	llgf	$s2,8($inp)	llgf	$s3,12($inp)	st	$s0,0($key)	st	$s1,4($key)	st	$s2,8($key)	st	$s3,12($key)	lghi	$t1,128	cr	$bits,$t1	jne	.Lnot128	llill	$mask,0xff	lghi	$t3,0			# i=0	lghi	$rounds,10	st	$t3,236($key)		# mark as set up	st	$rounds,240($key).align	8.L128_loop:	llgfr	$t2,$s3			# temp=rk[3]	srlg	$i1,$s3,8	srlg	$i2,$s3,16	srlg	$i3,$s3,24	nr	$t2,$mask	nr	$i1,$mask	nr	$i2,$mask	la	$t2,0($t2,$tbl)	la	$i1,0($i1,$tbl)	la	$i2,0($i2,$tbl)	la	$i3,0($i3,$tbl)	icm	$t2,2,0($t2)		# Te4[rk[3]>>0]<<8	icm	$t2,4,0($i1)		# Te4[rk[3]>>8]<<16	icm	$t2,8,0($i2)		# Te4[rk[3]>>16]<<24	icm	$t2,1,0($i3)		# Te4[rk[3]>>24]	x	$t2,256($t3,$tbl)	# rcon[i]	xr	$s0,$t2			# rk[4]=rk[0]^...	xr	$s1,$s0			# rk[5]=rk[1]^rk[4]	xr	$s2,$s1			# rk[6]=rk[2]^rk[5]	xr	$s3,$s2			# rk[7]=rk[3]^rk[6]	st	$s0,16($key)	st	$s1,20($key)	st	$s2,24($key)	st	$s3,28($key)	la	$key,16($key)		# key+=4	la	$t3,4($t3)		# i++	brct	$rounds,.L128_loop	lghi	%r2,0	lmg	%r6,%r13,48($sp)	br	$ra.align	4.Lnot128:	llgf	$t1,16($inp)	llgf	$t2,20($inp)	st	$t1,16($key)	st	$t2,20($key)	lghi	$t1,192	cr	$bits,$t1	jne	.Lnot192	llill	$mask,0xff	lghi	$t3,0			# i=0	lghi	$rounds,12	st	$rounds,240($key)	lghi	$rounds,8.align	8.L192_loop:	srlg	$i1,$t2,8	srlg	$i2,$t2,16	srlg	$i3,$t2,24	nr	$t2,$mask	nr	$i1,$mask	nr	$i2,$mask	la	$t2,0($t2,$tbl)	la	$i1,0($i1,$tbl)	la	$i2,0($i2,$tbl)	la	$i3,0($i3,$tbl)	icm	$t2,2,0($t2)		# Te4[rk[5]>>0]<<8	icm	$t2,4,0($i1)		# Te4[rk[5]>>8]<<16	icm	$t2,8,0($i2)		# Te4[rk[5]>>16]<<24	icm	$t2,1,0($i3)		# Te4[rk[5]>>24]	x	$t2,256($t3,$tbl)	# rcon[i]	xr	$s0,$t2			# rk[6]=rk[0]^...	xr	$s1,$s0			# rk[7]=rk[1]^rk[6]	xr	$s2,$s1			# rk[8]=rk[2]^rk[7]	xr	$s3,$s2			# rk[9]=rk[3]^rk[8]	st	$s0,24($key)	st	$s1,28($key)	st	$s2,32($key)	st	$s3,36($key)	brct	$rounds,.L192_continue	lghi	%r2,0	lmg	%r6,%r13,48($sp)	br	$ra.align	4.L192_continue:	lgr	$t2,$s3	x	$t2,16($key)		# rk[10]=rk[4]^rk[9]	st	$t2,40($key)	x	$t2,20($key)		# rk[11]=rk[5]^rk[10]	st	$t2,44($key)	la	$key,24($key)		# key+=6	la	$t3,4($t3)		# i++	j	.L192_loop.align	4.Lnot192:	llgf	$t1,24($inp)	llgf	$t2,28($inp)	st	$t1,24($key)	st	$t2,28($key)	llill	$mask,0xff	lghi	$t3,0			# i=0	lghi	$rounds,14	st	$rounds,240($key)	lghi	$rounds,7.align	8.L256_loop:	srlg	$i1,$t2,8	srlg	$i2,$t2,16	srlg	$i3,$t2,24	nr	$t2,$mask	nr	$i1,$mask	nr	$i2,$mask	la	$t2,0($t2,$tbl)	la	$i1,0($i1,$tbl)	la	$i2,0($i2,$tbl)	la	$i3,0($i3,$tbl)	icm	$t2,2,0($t2)		# Te4[rk[7]>>0]<<8	icm	$t2,4,0($i1)		# Te4[rk[7]>>8]<<16	icm	$t2,8,0($i2)		# Te4[rk[7]>>16]<<24	icm	$t2,1,0($i3)		# Te4[rk[7]>>24]	x	$t2,256($t3,$tbl)	# rcon[i]	xr	$s0,$t2			# rk[8]=rk[0]^...	xr	$s1,$s0			# rk[9]=rk[1]^rk[8]	xr	$s2,$s1			# rk[10]=rk[2]^rk[9]	xr	$s3,$s2			# rk[11]=rk[3]^rk[10]	st	$s0,32($key)	st	$s1,36($key)	st	$s2,40($key)	st	$s3,44($key)	brct	$rounds,.L256_continue	lghi	%r2,0	lmg	%r6,%r13,48($sp)	br	$ra.align	4.L256_continue:	lgr	$t2,$s3			# temp=rk[11]	srlg	$i1,$s3,8	srlg	$i2,$s3,16	srlg	$i3,$s3,24	nr	$t2,$mask	nr	$i1,$mask	nr	$i2,$mask	la	$t2,0($t2,$tbl)	la	$i1,0($i1,$tbl)	la	$i2,0($i2,$tbl)	la	$i3,0($i3,$tbl)	llgc	$t2,0($t2)		# Te4[rk[11]>>0]	icm	$t2,2,0($i1)		# Te4[rk[11]>>8]<<8	icm	$t2,4,0($i2)		# Te4[rk[11]>>16]<<16	icm	$t2,8,0($i3)		# Te4[rk[11]>>24]<<24	x	$t2,16($key)		# rk[12]=rk[4]^...	st	$t2,48($key)	x	$t2,20($key)		# rk[13]=rk[5]^rk[12]	st	$t2,52($key)	x	$t2,24($key)		# rk[14]=rk[6]^rk[13]	st	$t2,56($key)	x	$t2,28($key)		# rk[15]=rk[7]^rk[14]	st	$t2,60($key)	la	$key,32($key)		# key+=8	la	$t3,4($t3)		# i++	j	.L256_loop.align	4.Lminus1:	lghi	%r2,-1	br	%r14.size	AES_set_encrypt_key,.-AES_set_encrypt_key# void AES_set_decrypt_key(const unsigned char *in, int bits,# 		 AES_KEY *key) {.globl	AES_set_decrypt_key.type	AES_set_decrypt_key,\@function.align	16AES_set_decrypt_key:	stg	$key,32($sp)		# I rely on AES_set_encrypt_key to	stg	$ra,112($sp)		# save non-volatile registers!	bras	$ra,AES_set_encrypt_key	lg	$key,32($sp)	lg	$ra,112($sp)	ltgr	%r2,%r2	bnzr	$ra___$code.=<<___ if (!$softonly);	lghi	$t1,10	c	$t1,240($key)	jne	.Lgo	lghi	$t1,0	c	$t1,236($key)	je	.Lgo	lmg	$t1,$t2,0($key)		# just copy 128 bits otherwise	stmg	$t1,$t2,160($key)	lghi	%r2,0	br	$ra.align	16.Ldkey_internal:	stg	$key,32($sp)	stg	$ra,40($sp)	bras	$ra,.Lekey_internal	lg	$key,32($sp)	lg	$ra,40($sp)___$code.=<<___;.Lgo:	llgf	$rounds,240($key)	la	$i1,0($key)	sllg	$i2,$rounds,4	la	$i2,0($i2,$key)	srl	$rounds,1.align	8.Linv:	lmg	$s0,$s1,0($i1)	lmg	$s2,$s3,0($i2)	stmg	$s0,$s1,0($i2)	stmg	$s2,$s3,0($i1)	aghi	$i1,16	aghi	$i2,-16	brct	$rounds,.Linv___$mask80=$i1;$mask1b=$i2;$maskfe=$i3;$code.=<<___;	llgf	$rounds,240($key)	aghi	$rounds,-1	sll	$rounds,2	# (rounds-1)*4	llilh	$mask80,0x8080	oill	$mask80,0x8080	llilh	$mask1b,0x1b1b	oill	$mask1b,0x1b1b	llilh	$maskfe,0xfefe	oill	$maskfe,0xfefe.align	8.Lmix:	l	$s0,16($key)	# tp1	lr	$s1,$s0	ngr	$s1,$mask80	srlg	$t1,$s1,7	slr	$s1,$t1	nr	$s1,$mask1b	sllg	$t1,$s0,1	nr	$t1,$maskfe	xr	$s1,$t1		# tp2	lr	$s2,$s1	ngr	$s2,$mask80	srlg	$t1,$s2,7	slr	$s2,$t1	nr	$s2,$mask1b	sllg	$t1,$s1,1	nr	$t1,$maskfe	xr	$s2,$t1		# tp4	lr	$s3,$s2	ngr	$s3,$mask80	srlg	$t1,$s3,7	slr	$s3,$t1	nr	$s3,$mask1b	sllg	$t1,$s2,1	nr	$t1,$maskfe	xr	$s3,$t1		# tp8	xr	$s1,$s0		# tp2^tp1	xr	$s2,$s0		# tp4^tp1	rll	$s0,$s0,24	# = ROTATE(tp1,8)	xr	$s0,$s1		# ^=tp2^tp1	xr	$s0,$s2		# ^=tp4^tp1	xr	$s0,$s3		# ^= tp8[^(tp4^tp1)^(tp2^tp1)=tp4^tp2]	xr	$s1,$s3		# tp2^tp1^tp8	rll	$s1,$s1,8	xr	$s0,$s1		# ^= ROTATE(tp8^tp2^tp1,24)	xr	$s2,$s3		# tp4^tp1^tp8	rll	$s2,$s2,16	xr	$s0,$s2    	# ^= ROTATE(tp8^tp4^tp1,16)	rll	$s3,$s3,24	xr	$s0,$s3		# ^= ROTATE(tp8,8)	st	$s0,16($key)	la	$key,4($key)	brct	$rounds,.Lmix	lmg	%r6,%r13,48($sp)# as was saved by AES_set_encrypt_key!	lghi	%r2,0	br	$ra.size	AES_set_decrypt_key,.-AES_set_decrypt_key.string	"AES for s390x, CRYPTOGAMS by <appro\@openssl.org>"___$code =~ s/\`([^\`]*)\`/eval $1/gem;print $code;

⌨️ 快捷键说明

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