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