• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1.text
2.type	_mul_1x1_mmx,@function
3.align	16
4_mul_1x1_mmx:
5	%ifdef __CET__
6
7.byte	243,15,30,251
8	%endif
9
10	subl	$36,%esp
11	movl	%eax,%ecx
12	leal	(%eax,%eax,1),%edx
13	andl	$1073741823,%ecx
14	leal	(%edx,%edx,1),%ebp
15	movl	$0,(%esp)
16	andl	$2147483647,%edx
17	movd	%eax,%mm2
18	movd	%ebx,%mm3
19	movl	%ecx,4(%esp)
20	xorl	%edx,%ecx
21	pxor	%mm5,%mm5
22	pxor	%mm4,%mm4
23	movl	%edx,8(%esp)
24	xorl	%ebp,%edx
25	movl	%ecx,12(%esp)
26	pcmpgtd	%mm2,%mm5
27	paddd	%mm2,%mm2
28	xorl	%edx,%ecx
29	movl	%ebp,16(%esp)
30	xorl	%edx,%ebp
31	pand	%mm3,%mm5
32	pcmpgtd	%mm2,%mm4
33	movl	%ecx,20(%esp)
34	xorl	%ecx,%ebp
35	psllq	$31,%mm5
36	pand	%mm3,%mm4
37	movl	%edx,24(%esp)
38	movl	$7,%esi
39	movl	%ebp,28(%esp)
40	movl	%esi,%ebp
41	andl	%ebx,%esi
42	shrl	$3,%ebx
43	movl	%ebp,%edi
44	psllq	$30,%mm4
45	andl	%ebx,%edi
46	shrl	$3,%ebx
47	movd	(%esp,%esi,4),%mm0
48	movl	%ebp,%esi
49	andl	%ebx,%esi
50	shrl	$3,%ebx
51	movd	(%esp,%edi,4),%mm2
52	movl	%ebp,%edi
53	psllq	$3,%mm2
54	andl	%ebx,%edi
55	shrl	$3,%ebx
56	pxor	%mm2,%mm0
57	movd	(%esp,%esi,4),%mm1
58	movl	%ebp,%esi
59	psllq	$6,%mm1
60	andl	%ebx,%esi
61	shrl	$3,%ebx
62	pxor	%mm1,%mm0
63	movd	(%esp,%edi,4),%mm2
64	movl	%ebp,%edi
65	psllq	$9,%mm2
66	andl	%ebx,%edi
67	shrl	$3,%ebx
68	pxor	%mm2,%mm0
69	movd	(%esp,%esi,4),%mm1
70	movl	%ebp,%esi
71	psllq	$12,%mm1
72	andl	%ebx,%esi
73	shrl	$3,%ebx
74	pxor	%mm1,%mm0
75	movd	(%esp,%edi,4),%mm2
76	movl	%ebp,%edi
77	psllq	$15,%mm2
78	andl	%ebx,%edi
79	shrl	$3,%ebx
80	pxor	%mm2,%mm0
81	movd	(%esp,%esi,4),%mm1
82	movl	%ebp,%esi
83	psllq	$18,%mm1
84	andl	%ebx,%esi
85	shrl	$3,%ebx
86	pxor	%mm1,%mm0
87	movd	(%esp,%edi,4),%mm2
88	movl	%ebp,%edi
89	psllq	$21,%mm2
90	andl	%ebx,%edi
91	shrl	$3,%ebx
92	pxor	%mm2,%mm0
93	movd	(%esp,%esi,4),%mm1
94	movl	%ebp,%esi
95	psllq	$24,%mm1
96	andl	%ebx,%esi
97	shrl	$3,%ebx
98	pxor	%mm1,%mm0
99	movd	(%esp,%edi,4),%mm2
100	pxor	%mm4,%mm0
101	psllq	$27,%mm2
102	pxor	%mm2,%mm0
103	movd	(%esp,%esi,4),%mm1
104	pxor	%mm5,%mm0
105	psllq	$30,%mm1
106	addl	$36,%esp
107	pxor	%mm1,%mm0
108	ret
109.size	_mul_1x1_mmx,.-_mul_1x1_mmx
110.type	_mul_1x1_ialu,@function
111.align	16
112_mul_1x1_ialu:
113	%ifdef __CET__
114
115.byte	243,15,30,251
116	%endif
117
118	subl	$36,%esp
119	movl	%eax,%ecx
120	leal	(%eax,%eax,1),%edx
121	leal	(,%eax,4),%ebp
122	andl	$1073741823,%ecx
123	leal	(%eax,%eax,1),%edi
124	sarl	$31,%eax
125	movl	$0,(%esp)
126	andl	$2147483647,%edx
127	movl	%ecx,4(%esp)
128	xorl	%edx,%ecx
129	movl	%edx,8(%esp)
130	xorl	%ebp,%edx
131	movl	%ecx,12(%esp)
132	xorl	%edx,%ecx
133	movl	%ebp,16(%esp)
134	xorl	%edx,%ebp
135	movl	%ecx,20(%esp)
136	xorl	%ecx,%ebp
137	sarl	$31,%edi
138	andl	%ebx,%eax
139	movl	%edx,24(%esp)
140	andl	%ebx,%edi
141	movl	%ebp,28(%esp)
142	movl	%eax,%edx
143	shll	$31,%eax
144	movl	%edi,%ecx
145	shrl	$1,%edx
146	movl	$7,%esi
147	shll	$30,%edi
148	andl	%ebx,%esi
149	shrl	$2,%ecx
150	xorl	%edi,%eax
151	shrl	$3,%ebx
152	movl	$7,%edi
153	andl	%ebx,%edi
154	shrl	$3,%ebx
155	xorl	%ecx,%edx
156	xorl	(%esp,%esi,4),%eax
157	movl	$7,%esi
158	andl	%ebx,%esi
159	shrl	$3,%ebx
160	movl	(%esp,%edi,4),%ebp
161	movl	$7,%edi
162	movl	%ebp,%ecx
163	shll	$3,%ebp
164	andl	%ebx,%edi
165	shrl	$29,%ecx
166	xorl	%ebp,%eax
167	shrl	$3,%ebx
168	xorl	%ecx,%edx
169	movl	(%esp,%esi,4),%ecx
170	movl	$7,%esi
171	movl	%ecx,%ebp
172	shll	$6,%ecx
173	andl	%ebx,%esi
174	shrl	$26,%ebp
175	xorl	%ecx,%eax
176	shrl	$3,%ebx
177	xorl	%ebp,%edx
178	movl	(%esp,%edi,4),%ebp
179	movl	$7,%edi
180	movl	%ebp,%ecx
181	shll	$9,%ebp
182	andl	%ebx,%edi
183	shrl	$23,%ecx
184	xorl	%ebp,%eax
185	shrl	$3,%ebx
186	xorl	%ecx,%edx
187	movl	(%esp,%esi,4),%ecx
188	movl	$7,%esi
189	movl	%ecx,%ebp
190	shll	$12,%ecx
191	andl	%ebx,%esi
192	shrl	$20,%ebp
193	xorl	%ecx,%eax
194	shrl	$3,%ebx
195	xorl	%ebp,%edx
196	movl	(%esp,%edi,4),%ebp
197	movl	$7,%edi
198	movl	%ebp,%ecx
199	shll	$15,%ebp
200	andl	%ebx,%edi
201	shrl	$17,%ecx
202	xorl	%ebp,%eax
203	shrl	$3,%ebx
204	xorl	%ecx,%edx
205	movl	(%esp,%esi,4),%ecx
206	movl	$7,%esi
207	movl	%ecx,%ebp
208	shll	$18,%ecx
209	andl	%ebx,%esi
210	shrl	$14,%ebp
211	xorl	%ecx,%eax
212	shrl	$3,%ebx
213	xorl	%ebp,%edx
214	movl	(%esp,%edi,4),%ebp
215	movl	$7,%edi
216	movl	%ebp,%ecx
217	shll	$21,%ebp
218	andl	%ebx,%edi
219	shrl	$11,%ecx
220	xorl	%ebp,%eax
221	shrl	$3,%ebx
222	xorl	%ecx,%edx
223	movl	(%esp,%esi,4),%ecx
224	movl	$7,%esi
225	movl	%ecx,%ebp
226	shll	$24,%ecx
227	andl	%ebx,%esi
228	shrl	$8,%ebp
229	xorl	%ecx,%eax
230	shrl	$3,%ebx
231	xorl	%ebp,%edx
232	movl	(%esp,%edi,4),%ebp
233	movl	%ebp,%ecx
234	shll	$27,%ebp
235	movl	(%esp,%esi,4),%edi
236	shrl	$5,%ecx
237	movl	%edi,%esi
238	xorl	%ebp,%eax
239	shll	$30,%edi
240	xorl	%ecx,%edx
241	shrl	$2,%esi
242	xorl	%edi,%eax
243	xorl	%esi,%edx
244	addl	$36,%esp
245	ret
246.size	_mul_1x1_ialu,.-_mul_1x1_ialu
247.globl	bn_GF2m_mul_2x2
248.type	bn_GF2m_mul_2x2,@function
249.align	16
250bn_GF2m_mul_2x2:
251.L_bn_GF2m_mul_2x2_begin:
252	%ifdef __CET__
253
254.byte	243,15,30,251
255	%endif
256
257	call	.L000PIC_me_up
258.L000PIC_me_up:
259	popl	%edx
260	leal	OPENSSL_ia32cap_P-.L000PIC_me_up(%edx),%edx
261	movl	(%edx),%eax
262	movl	4(%edx),%edx
263	testl	$8388608,%eax
264	jz	.L001ialu
265	testl	$16777216,%eax
266	jz	.L002mmx
267	testl	$2,%edx
268	jz	.L002mmx
269	movups	8(%esp),%xmm0
270	shufps	$177,%xmm0,%xmm0
271.byte	102,15,58,68,192,1
272	movl	4(%esp),%eax
273	movups	%xmm0,(%eax)
274	ret
275.align	16
276.L002mmx:
277	pushl	%ebp
278	pushl	%ebx
279	pushl	%esi
280	pushl	%edi
281	movl	24(%esp),%eax
282	movl	32(%esp),%ebx
283	call	_mul_1x1_mmx
284	movq	%mm0,%mm7
285	movl	28(%esp),%eax
286	movl	36(%esp),%ebx
287	call	_mul_1x1_mmx
288	movq	%mm0,%mm6
289	movl	24(%esp),%eax
290	movl	32(%esp),%ebx
291	xorl	28(%esp),%eax
292	xorl	36(%esp),%ebx
293	call	_mul_1x1_mmx
294	pxor	%mm7,%mm0
295	movl	20(%esp),%eax
296	pxor	%mm6,%mm0
297	movq	%mm0,%mm2
298	psllq	$32,%mm0
299	popl	%edi
300	psrlq	$32,%mm2
301	popl	%esi
302	pxor	%mm6,%mm0
303	popl	%ebx
304	pxor	%mm7,%mm2
305	movq	%mm0,(%eax)
306	popl	%ebp
307	movq	%mm2,8(%eax)
308	emms
309	ret
310.align	16
311.L001ialu:
312	pushl	%ebp
313	pushl	%ebx
314	pushl	%esi
315	pushl	%edi
316	subl	$20,%esp
317	movl	44(%esp),%eax
318	movl	52(%esp),%ebx
319	call	_mul_1x1_ialu
320	movl	%eax,8(%esp)
321	movl	%edx,12(%esp)
322	movl	48(%esp),%eax
323	movl	56(%esp),%ebx
324	call	_mul_1x1_ialu
325	movl	%eax,(%esp)
326	movl	%edx,4(%esp)
327	movl	44(%esp),%eax
328	movl	52(%esp),%ebx
329	xorl	48(%esp),%eax
330	xorl	56(%esp),%ebx
331	call	_mul_1x1_ialu
332	movl	40(%esp),%ebp
333	movl	(%esp),%ebx
334	movl	4(%esp),%ecx
335	movl	8(%esp),%edi
336	movl	12(%esp),%esi
337	xorl	%edx,%eax
338	xorl	%ecx,%edx
339	xorl	%ebx,%eax
340	movl	%ebx,(%ebp)
341	xorl	%edi,%edx
342	movl	%esi,12(%ebp)
343	xorl	%esi,%eax
344	addl	$20,%esp
345	xorl	%esi,%edx
346	popl	%edi
347	xorl	%edx,%eax
348	popl	%esi
349	movl	%edx,8(%ebp)
350	popl	%ebx
351	movl	%eax,4(%ebp)
352	popl	%ebp
353	ret
354.size	bn_GF2m_mul_2x2,.-.L_bn_GF2m_mul_2x2_begin
355.byte	71,70,40,50,94,109,41,32,77,117,108,116,105,112,108,105
356.byte	99,97,116,105,111,110,32,102,111,114,32,120,56,54,44,32
357.byte	67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97
358.byte	112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103
359.byte	62,0
360.comm	OPENSSL_ia32cap_P,16,4
361
362	.section ".note.gnu.property", "a"
363	.p2align 2
364	.long 1f - 0f
365	.long 4f - 1f
366	.long 5
3670:
368	.asciz "GNU"
3691:
370	.p2align 2
371	.long 0xc0000002
372	.long 3f - 2f
3732:
374	.long 3
3753:
376	.p2align 2
3774:
378