| .text | 
 |  | 
 | .globl	OPENSSL_s390x_facilities | 
 | .type	OPENSSL_s390x_facilities,@function | 
 | .align	16 | 
 | OPENSSL_s390x_facilities: | 
 | 	lghi	%r0,0 | 
 | 	larl	%r4,OPENSSL_s390xcap_P | 
 | 	stg	%r0,8(%r4)	# wipe capability vectors | 
 | 	stg	%r0,16(%r4) | 
 | 	stg	%r0,24(%r4) | 
 | 	stg	%r0,32(%r4) | 
 | 	stg	%r0,40(%r4) | 
 | 	stg	%r0,48(%r4) | 
 | 	stg	%r0,56(%r4) | 
 | 	stg	%r0,64(%r4) | 
 | 	stg	%r0,72(%r4) | 
 |  | 
 | 	.long	0xb2b04000	# stfle	0(%r4) | 
 | 	brc	8,.Ldone | 
 | 	lghi	%r0,1 | 
 | 	.long	0xb2b04000	# stfle 0(%r4) | 
 | .Ldone: | 
 | 	lmg	%r2,%r3,0(%r4) | 
 | 	tmhl	%r2,0x4000	# check for message-security-assist | 
 | 	jz	.Lret | 
 |  | 
 | 	lghi	%r0,0		# query kimd capabilities | 
 | 	la	%r1,16(%r4) | 
 | 	.long	0xb93e0002	# kimd %r0,%r2 | 
 |  | 
 | 	lghi	%r0,0		# query km capability vector | 
 | 	la	%r1,32(%r4) | 
 | 	.long	0xb92e0042	# km %r4,%r2 | 
 |  | 
 | 	lghi	%r0,0		# query kmc capability vector | 
 | 	la	%r1,48(%r4) | 
 | 	.long	0xb92f0042	# kmc %r4,%r2 | 
 |  | 
 | 	tmhh	%r3,0x0004	# check for message-security-assist-4 | 
 | 	jz	.Lret | 
 |  | 
 | 	lghi	%r0,0		# query kmctr capability vector | 
 | 	la	%r1,64(%r4) | 
 | 	.long	0xb92d2042	# kmctr %r4,%r2,%r2 | 
 |  | 
 | .Lret: | 
 | 	br	%r14 | 
 | .size	OPENSSL_s390x_facilities,.-OPENSSL_s390x_facilities | 
 |  | 
 | .globl	OPENSSL_rdtsc | 
 | .type	OPENSSL_rdtsc,@function | 
 | .align	16 | 
 | OPENSSL_rdtsc: | 
 | 	stck	16(%r15) | 
 | 	lg	%r2,16(%r15) | 
 | 	br	%r14 | 
 | .size	OPENSSL_rdtsc,.-OPENSSL_rdtsc | 
 |  | 
 | .globl	OPENSSL_atomic_add | 
 | .type	OPENSSL_atomic_add,@function | 
 | .align	16 | 
 | OPENSSL_atomic_add: | 
 | 	l	%r1,0(%r2) | 
 | .Lspin:	lr	%r0,%r1 | 
 | 	ar	%r0,%r3 | 
 | 	cs	%r1,%r0,0(%r2) | 
 | 	brc	4,.Lspin | 
 | 	lgfr	%r2,%r0		# OpenSSL expects the new value | 
 | 	br	%r14 | 
 | .size	OPENSSL_atomic_add,.-OPENSSL_atomic_add | 
 |  | 
 | .globl	OPENSSL_wipe_cpu | 
 | .type	OPENSSL_wipe_cpu,@function | 
 | .align	16 | 
 | OPENSSL_wipe_cpu: | 
 | 	xgr	%r0,%r0 | 
 | 	xgr	%r1,%r1 | 
 | 	lgr	%r2,%r15 | 
 | 	xgr	%r3,%r3 | 
 | 	xgr	%r4,%r4 | 
 | 	lzdr	%f0 | 
 | 	lzdr	%f1 | 
 | 	lzdr	%f2 | 
 | 	lzdr	%f3 | 
 | 	lzdr	%f4 | 
 | 	lzdr	%f5 | 
 | 	lzdr	%f6 | 
 | 	lzdr	%f7 | 
 | 	br	%r14 | 
 | .size	OPENSSL_wipe_cpu,.-OPENSSL_wipe_cpu | 
 |  | 
 | .globl	OPENSSL_cleanse | 
 | .type	OPENSSL_cleanse,@function | 
 | .align	16 | 
 | OPENSSL_cleanse: | 
 | #if !defined(__s390x__) && !defined(__s390x) | 
 | 	llgfr	%r3,%r3 | 
 | #endif | 
 | 	lghi	%r4,15 | 
 | 	lghi	%r0,0 | 
 | 	clgr	%r3,%r4 | 
 | 	jh	.Lot | 
 | 	clgr	%r3,%r0 | 
 | 	bcr	8,%r14 | 
 | .Little: | 
 | 	stc	%r0,0(%r2) | 
 | 	la	%r2,1(%r2) | 
 | 	brctg	%r3,.Little | 
 | 	br	%r14 | 
 | .align	4 | 
 | .Lot:	tmll	%r2,7 | 
 | 	jz	.Laligned | 
 | 	stc	%r0,0(%r2) | 
 | 	la	%r2,1(%r2) | 
 | 	brctg	%r3,.Lot | 
 | .Laligned: | 
 | 	srlg	%r4,%r3,3 | 
 | .Loop:	stg	%r0,0(%r2) | 
 | 	la	%r2,8(%r2) | 
 | 	brctg	%r4,.Loop | 
 | 	lghi	%r4,7 | 
 | 	ngr	%r3,%r4 | 
 | 	jnz	.Little | 
 | 	br	%r14 | 
 | .size	OPENSSL_cleanse,.-OPENSSL_cleanse | 
 |  | 
 | .globl	OPENSSL_instrument_bus | 
 | .type	OPENSSL_instrument_bus,@function | 
 | .align	16 | 
 | OPENSSL_instrument_bus: | 
 | 	lghi	%r2,0 | 
 | 	br	%r14 | 
 | .size	OPENSSL_instrument_bus,.-OPENSSL_instrument_bus | 
 |  | 
 | .globl	OPENSSL_instrument_bus2 | 
 | .type	OPENSSL_instrument_bus2,@function | 
 | .align	16 | 
 | OPENSSL_instrument_bus2: | 
 | 	lghi	%r2,0 | 
 | 	br	%r14 | 
 | .size	OPENSSL_instrument_bus2,.-OPENSSL_instrument_bus2 | 
 |  | 
 | .section	.init | 
 | 	brasl	%r14,OPENSSL_cpuid_setup | 
 |  | 
 | .comm	OPENSSL_s390xcap_P,80,8 |