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