• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1.text
2
3.globl	RC4
4.type	RC4,@function
5.align	64
6RC4:
7	stmg	%r6,%r11,6*8(%r15)
8	llgc	%r6,0(%r2)
9	llgc	%r10,1(%r2)
10	la	%r6,1(%r6)
11	nill	%r6,0xff
12	srlg	%r1,%r3,3
13	ltgr	%r1,%r1
14	llgc	%r8,2(%r6,%r2)
15	jz	.Lshort
16	j	.Loop8
17
18.align	64
19.Loop8:
20	la	%r10,0(%r10,%r8)	# 0
21	nill	%r10,255
22	la	%r7,1(%r6)
23	nill	%r7,255
24	llgc	%r11,2(%r10,%r2)
25	stc	%r8,2(%r10,%r2)
26	llgc	%r9,2(%r7,%r2)
27	stc	%r11,2(%r6,%r2)
28	cr	%r7,%r10
29	jne	.Lcmov0
30	la	%r9,0(%r8)
31.Lcmov0:
32	la	%r11,0(%r11,%r8)
33	nill	%r11,255
34	la	%r10,0(%r10,%r9)	# 1
35	nill	%r10,255
36	la	%r6,1(%r7)
37	nill	%r6,255
38	llgc	%r0,2(%r11,%r2)
39	llgc	%r11,2(%r10,%r2)
40	stc	%r9,2(%r10,%r2)
41	llgc	%r8,2(%r6,%r2)
42	stc	%r11,2(%r7,%r2)
43	cr	%r6,%r10
44	jne	.Lcmov1
45	la	%r8,0(%r9)
46.Lcmov1:
47	la	%r11,0(%r11,%r9)
48	nill	%r11,255
49	la	%r10,0(%r10,%r8)	# 2
50	nill	%r10,255
51	la	%r7,1(%r6)
52	nill	%r7,255
53	sllg	%r0,%r0,8
54	ic	%r0,2(%r11,%r2)
55	llgc	%r11,2(%r10,%r2)
56	stc	%r8,2(%r10,%r2)
57	llgc	%r9,2(%r7,%r2)
58	stc	%r11,2(%r6,%r2)
59	cr	%r7,%r10
60	jne	.Lcmov2
61	la	%r9,0(%r8)
62.Lcmov2:
63	la	%r11,0(%r11,%r8)
64	nill	%r11,255
65	la	%r10,0(%r10,%r9)	# 3
66	nill	%r10,255
67	la	%r6,1(%r7)
68	nill	%r6,255
69	sllg	%r0,%r0,8
70	ic	%r0,2(%r11,%r2)
71	llgc	%r11,2(%r10,%r2)
72	stc	%r9,2(%r10,%r2)
73	llgc	%r8,2(%r6,%r2)
74	stc	%r11,2(%r7,%r2)
75	cr	%r6,%r10
76	jne	.Lcmov3
77	la	%r8,0(%r9)
78.Lcmov3:
79	la	%r11,0(%r11,%r9)
80	nill	%r11,255
81	la	%r10,0(%r10,%r8)	# 4
82	nill	%r10,255
83	la	%r7,1(%r6)
84	nill	%r7,255
85	sllg	%r0,%r0,8
86	ic	%r0,2(%r11,%r2)
87	llgc	%r11,2(%r10,%r2)
88	stc	%r8,2(%r10,%r2)
89	llgc	%r9,2(%r7,%r2)
90	stc	%r11,2(%r6,%r2)
91	cr	%r7,%r10
92	jne	.Lcmov4
93	la	%r9,0(%r8)
94.Lcmov4:
95	la	%r11,0(%r11,%r8)
96	nill	%r11,255
97	la	%r10,0(%r10,%r9)	# 5
98	nill	%r10,255
99	la	%r6,1(%r7)
100	nill	%r6,255
101	sllg	%r0,%r0,8
102	ic	%r0,2(%r11,%r2)
103	llgc	%r11,2(%r10,%r2)
104	stc	%r9,2(%r10,%r2)
105	llgc	%r8,2(%r6,%r2)
106	stc	%r11,2(%r7,%r2)
107	cr	%r6,%r10
108	jne	.Lcmov5
109	la	%r8,0(%r9)
110.Lcmov5:
111	la	%r11,0(%r11,%r9)
112	nill	%r11,255
113	la	%r10,0(%r10,%r8)	# 6
114	nill	%r10,255
115	la	%r7,1(%r6)
116	nill	%r7,255
117	sllg	%r0,%r0,8
118	ic	%r0,2(%r11,%r2)
119	llgc	%r11,2(%r10,%r2)
120	stc	%r8,2(%r10,%r2)
121	llgc	%r9,2(%r7,%r2)
122	stc	%r11,2(%r6,%r2)
123	cr	%r7,%r10
124	jne	.Lcmov6
125	la	%r9,0(%r8)
126.Lcmov6:
127	la	%r11,0(%r11,%r8)
128	nill	%r11,255
129	la	%r10,0(%r10,%r9)	# 7
130	nill	%r10,255
131	la	%r6,1(%r7)
132	nill	%r6,255
133	sllg	%r0,%r0,8
134	ic	%r0,2(%r11,%r2)
135	llgc	%r11,2(%r10,%r2)
136	stc	%r9,2(%r10,%r2)
137	llgc	%r8,2(%r6,%r2)
138	stc	%r11,2(%r7,%r2)
139	cr	%r6,%r10
140	jne	.Lcmov7
141	la	%r8,0(%r9)
142.Lcmov7:
143	la	%r11,0(%r11,%r9)
144	nill	%r11,255
145	lg	%r9,0(%r4)
146	sllg	%r0,%r0,8
147	la	%r4,8(%r4)
148	ic	%r0,2(%r11,%r2)
149	xgr	%r0,%r9
150	stg	%r0,0(%r5)
151	la	%r5,8(%r5)
152	brctg	%r1,.Loop8
153
154.Lshort:
155	lghi	%r0,7
156	ngr	%r3,%r0
157	jz	.Lexit
158	j	.Loop1
159
160.align	16
161.Loop1:
162	la	%r10,0(%r10,%r8)
163	nill	%r10,255
164	llgc	%r11,2(%r10,%r2)
165	stc	%r8,2(%r10,%r2)
166	stc	%r11,2(%r6,%r2)
167	ar	%r11,%r8
168	ahi	%r6,1
169	nill	%r11,255
170	nill	%r6,255
171	llgc	%r0,0(%r4)
172	la	%r4,1(%r4)
173	llgc	%r11,2(%r11,%r2)
174	llgc	%r8,2(%r6,%r2)
175	xr	%r0,%r11
176	stc	%r0,0(%r5)
177	la	%r5,1(%r5)
178	brct	%r3,.Loop1
179
180.Lexit:
181	ahi	%r6,-1
182	stc	%r6,0(%r2)
183	stc	%r10,1(%r2)
184	lmg	%r6,%r11,6*8(%r15)
185	br	%r14
186.size	RC4,.-RC4
187.string	"RC4 for s390x, CRYPTOGAMS by <appro@openssl.org>"
188
189.globl	RC4_set_key
190.type	RC4_set_key,@function
191.align	64
192RC4_set_key:
193	stmg	%r6,%r8,6*8(%r15)
194	lhi	%r0,256
195	la	%r1,0
196	sth	%r1,0(%r2)
197.align	4
198.L1stloop:
199	stc	%r1,2(%r1,%r2)
200	la	%r1,1(%r1)
201	brct	%r0,.L1stloop
202
203	lghi	%r7,-256
204	lr	%r0,%r3
205	la	%r8,0
206	la	%r1,0
207.align	16
208.L2ndloop:
209	llgc	%r5,2+256(%r7,%r2)
210	llgc	%r6,0(%r8,%r4)
211	la	%r1,0(%r1,%r5)
212	la	%r7,1(%r7)
213	la	%r1,0(%r1,%r6)
214	nill	%r1,255
215	la	%r8,1(%r8)
216	tml	%r7,255
217	llgc	%r6,2(%r1,%r2)
218	stc	%r6,2+256-1(%r7,%r2)
219	stc	%r5,2(%r1,%r2)
220	jz	.Ldone
221	brct	%r0,.L2ndloop
222	lr	%r0,%r3
223	la	%r8,0
224	j	.L2ndloop
225.Ldone:
226	lmg	%r6,%r8,6*8(%r15)
227	br	%r14
228.size	RC4_set_key,.-RC4_set_key
229
230.globl	RC4_options
231.type	RC4_options,@function
232.align	16
233RC4_options:
234	larl	%r2,.Loptions
235	br	%r14
236.size	RC4_options,.-RC4_options
237.section	.rodata
238.Loptions:
239.align	8
240.string	"rc4(8x,char)"
241