• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# This file is generated from a similarly-named Perl script in the BoringSSL
2# source tree. Do not edit by hand.
3
4#if defined(__i386__)
5#if defined(BORINGSSL_PREFIX)
6#include <boringssl_prefix_symbols_asm.h>
7#endif
8.text
9.LONE_mont:
10.long	1,0,0,-1,-1,-1,-2,0
11.hidden	_ecp_nistz256_div_by_2
12.type	_ecp_nistz256_div_by_2,@function
13.align	16
14_ecp_nistz256_div_by_2:
15	movl	(%esi),%ebp
16	xorl	%edx,%edx
17	movl	4(%esi),%ebx
18	movl	%ebp,%eax
19	andl	$1,%ebp
20	movl	8(%esi),%ecx
21	subl	%ebp,%edx
22	addl	%edx,%eax
23	adcl	%edx,%ebx
24	movl	%eax,(%edi)
25	adcl	%edx,%ecx
26	movl	%ebx,4(%edi)
27	movl	%ecx,8(%edi)
28	movl	12(%esi),%eax
29	movl	16(%esi),%ebx
30	adcl	$0,%eax
31	movl	20(%esi),%ecx
32	adcl	$0,%ebx
33	movl	%eax,12(%edi)
34	adcl	$0,%ecx
35	movl	%ebx,16(%edi)
36	movl	%ecx,20(%edi)
37	movl	24(%esi),%eax
38	movl	28(%esi),%ebx
39	adcl	%ebp,%eax
40	adcl	%edx,%ebx
41	movl	%eax,24(%edi)
42	sbbl	%esi,%esi
43	movl	%ebx,28(%edi)
44	movl	(%edi),%eax
45	movl	4(%edi),%ebx
46	movl	8(%edi),%ecx
47	movl	12(%edi),%edx
48	shrl	$1,%eax
49	movl	%ebx,%ebp
50	shll	$31,%ebx
51	orl	%ebx,%eax
52	shrl	$1,%ebp
53	movl	%ecx,%ebx
54	shll	$31,%ecx
55	movl	%eax,(%edi)
56	orl	%ecx,%ebp
57	movl	16(%edi),%eax
58	shrl	$1,%ebx
59	movl	%edx,%ecx
60	shll	$31,%edx
61	movl	%ebp,4(%edi)
62	orl	%edx,%ebx
63	movl	20(%edi),%ebp
64	shrl	$1,%ecx
65	movl	%eax,%edx
66	shll	$31,%eax
67	movl	%ebx,8(%edi)
68	orl	%eax,%ecx
69	movl	24(%edi),%ebx
70	shrl	$1,%edx
71	movl	%ebp,%eax
72	shll	$31,%ebp
73	movl	%ecx,12(%edi)
74	orl	%ebp,%edx
75	movl	28(%edi),%ecx
76	shrl	$1,%eax
77	movl	%ebx,%ebp
78	shll	$31,%ebx
79	movl	%edx,16(%edi)
80	orl	%ebx,%eax
81	shrl	$1,%ebp
82	movl	%ecx,%ebx
83	shll	$31,%ecx
84	movl	%eax,20(%edi)
85	orl	%ecx,%ebp
86	shrl	$1,%ebx
87	shll	$31,%esi
88	movl	%ebp,24(%edi)
89	orl	%esi,%ebx
90	movl	%ebx,28(%edi)
91	ret
92.size	_ecp_nistz256_div_by_2,.-_ecp_nistz256_div_by_2
93.globl	GFp_nistz256_add
94.hidden	GFp_nistz256_add
95.type	GFp_nistz256_add,@function
96.align	16
97GFp_nistz256_add:
98.L_GFp_nistz256_add_begin:
99	pushl	%ebp
100	pushl	%ebx
101	pushl	%esi
102	pushl	%edi
103	movl	24(%esp),%esi
104	movl	28(%esp),%ebp
105	movl	20(%esp),%edi
106	call	_ecp_nistz256_add
107	popl	%edi
108	popl	%esi
109	popl	%ebx
110	popl	%ebp
111	ret
112.size	GFp_nistz256_add,.-.L_GFp_nistz256_add_begin
113.hidden	_ecp_nistz256_add
114.type	_ecp_nistz256_add,@function
115.align	16
116_ecp_nistz256_add:
117	movl	(%esi),%eax
118	movl	4(%esi),%ebx
119	movl	8(%esi),%ecx
120	addl	(%ebp),%eax
121	movl	12(%esi),%edx
122	adcl	4(%ebp),%ebx
123	movl	%eax,(%edi)
124	adcl	8(%ebp),%ecx
125	movl	%ebx,4(%edi)
126	adcl	12(%ebp),%edx
127	movl	%ecx,8(%edi)
128	movl	%edx,12(%edi)
129	movl	16(%esi),%eax
130	movl	20(%esi),%ebx
131	movl	24(%esi),%ecx
132	adcl	16(%ebp),%eax
133	movl	28(%esi),%edx
134	adcl	20(%ebp),%ebx
135	movl	%eax,16(%edi)
136	adcl	24(%ebp),%ecx
137	movl	%ebx,20(%edi)
138	movl	$0,%esi
139	adcl	28(%ebp),%edx
140	movl	%ecx,24(%edi)
141	adcl	$0,%esi
142	movl	%edx,28(%edi)
143	movl	(%edi),%eax
144	movl	4(%edi),%ebx
145	movl	8(%edi),%ecx
146	subl	$-1,%eax
147	movl	12(%edi),%edx
148	sbbl	$-1,%ebx
149	movl	16(%edi),%eax
150	sbbl	$-1,%ecx
151	movl	20(%edi),%ebx
152	sbbl	$0,%edx
153	movl	24(%edi),%ecx
154	sbbl	$0,%eax
155	movl	28(%edi),%edx
156	sbbl	$0,%ebx
157	sbbl	$1,%ecx
158	sbbl	$-1,%edx
159	sbbl	$0,%esi
160	notl	%esi
161	movl	(%edi),%eax
162	movl	%esi,%ebp
163	movl	4(%edi),%ebx
164	shrl	$31,%ebp
165	movl	8(%edi),%ecx
166	subl	%esi,%eax
167	movl	12(%edi),%edx
168	sbbl	%esi,%ebx
169	movl	%eax,(%edi)
170	sbbl	%esi,%ecx
171	movl	%ebx,4(%edi)
172	sbbl	$0,%edx
173	movl	%ecx,8(%edi)
174	movl	%edx,12(%edi)
175	movl	16(%edi),%eax
176	movl	20(%edi),%ebx
177	movl	24(%edi),%ecx
178	sbbl	$0,%eax
179	movl	28(%edi),%edx
180	sbbl	$0,%ebx
181	movl	%eax,16(%edi)
182	sbbl	%ebp,%ecx
183	movl	%ebx,20(%edi)
184	sbbl	%esi,%edx
185	movl	%ecx,24(%edi)
186	movl	%edx,28(%edi)
187	ret
188.size	_ecp_nistz256_add,.-_ecp_nistz256_add
189.hidden	_ecp_nistz256_sub
190.type	_ecp_nistz256_sub,@function
191.align	16
192_ecp_nistz256_sub:
193	movl	(%esi),%eax
194	movl	4(%esi),%ebx
195	movl	8(%esi),%ecx
196	subl	(%ebp),%eax
197	movl	12(%esi),%edx
198	sbbl	4(%ebp),%ebx
199	movl	%eax,(%edi)
200	sbbl	8(%ebp),%ecx
201	movl	%ebx,4(%edi)
202	sbbl	12(%ebp),%edx
203	movl	%ecx,8(%edi)
204	movl	%edx,12(%edi)
205	movl	16(%esi),%eax
206	movl	20(%esi),%ebx
207	movl	24(%esi),%ecx
208	sbbl	16(%ebp),%eax
209	movl	28(%esi),%edx
210	sbbl	20(%ebp),%ebx
211	sbbl	24(%ebp),%ecx
212	movl	%eax,16(%edi)
213	sbbl	28(%ebp),%edx
214	movl	%ebx,20(%edi)
215	sbbl	%esi,%esi
216	movl	%ecx,24(%edi)
217	movl	%edx,28(%edi)
218	movl	(%edi),%eax
219	movl	%esi,%ebp
220	movl	4(%edi),%ebx
221	shrl	$31,%ebp
222	movl	8(%edi),%ecx
223	addl	%esi,%eax
224	movl	12(%edi),%edx
225	adcl	%esi,%ebx
226	movl	%eax,(%edi)
227	adcl	%esi,%ecx
228	movl	%ebx,4(%edi)
229	adcl	$0,%edx
230	movl	%ecx,8(%edi)
231	movl	%edx,12(%edi)
232	movl	16(%edi),%eax
233	movl	20(%edi),%ebx
234	movl	24(%edi),%ecx
235	adcl	$0,%eax
236	movl	28(%edi),%edx
237	adcl	$0,%ebx
238	movl	%eax,16(%edi)
239	adcl	%ebp,%ecx
240	movl	%ebx,20(%edi)
241	adcl	%esi,%edx
242	movl	%ecx,24(%edi)
243	movl	%edx,28(%edi)
244	ret
245.size	_ecp_nistz256_sub,.-_ecp_nistz256_sub
246.globl	GFp_nistz256_neg
247.hidden	GFp_nistz256_neg
248.type	GFp_nistz256_neg,@function
249.align	16
250GFp_nistz256_neg:
251.L_GFp_nistz256_neg_begin:
252	pushl	%ebp
253	pushl	%ebx
254	pushl	%esi
255	pushl	%edi
256	movl	24(%esp),%ebp
257	movl	20(%esp),%edi
258	xorl	%eax,%eax
259	subl	$32,%esp
260	movl	%eax,(%esp)
261	movl	%esp,%esi
262	movl	%eax,4(%esp)
263	movl	%eax,8(%esp)
264	movl	%eax,12(%esp)
265	movl	%eax,16(%esp)
266	movl	%eax,20(%esp)
267	movl	%eax,24(%esp)
268	movl	%eax,28(%esp)
269	call	_ecp_nistz256_sub
270	addl	$32,%esp
271	popl	%edi
272	popl	%esi
273	popl	%ebx
274	popl	%ebp
275	ret
276.size	GFp_nistz256_neg,.-.L_GFp_nistz256_neg_begin
277.hidden	_picup_eax
278.type	_picup_eax,@function
279.align	16
280_picup_eax:
281	movl	(%esp),%eax
282	ret
283.size	_picup_eax,.-_picup_eax
284.globl	GFp_nistz256_mul_mont
285.hidden	GFp_nistz256_mul_mont
286.type	GFp_nistz256_mul_mont,@function
287.align	16
288GFp_nistz256_mul_mont:
289.L_GFp_nistz256_mul_mont_begin:
290	pushl	%ebp
291	pushl	%ebx
292	pushl	%esi
293	pushl	%edi
294	movl	24(%esp),%esi
295	movl	28(%esp),%ebp
296	call	_picup_eax
297.L000pic:
298	leal	GFp_ia32cap_P-.L000pic(%eax),%eax
299	movl	(%eax),%eax
300	movl	20(%esp),%edi
301	call	_ecp_nistz256_mul_mont
302	popl	%edi
303	popl	%esi
304	popl	%ebx
305	popl	%ebp
306	ret
307.size	GFp_nistz256_mul_mont,.-.L_GFp_nistz256_mul_mont_begin
308.hidden	_ecp_nistz256_mul_mont
309.type	_ecp_nistz256_mul_mont,@function
310.align	16
311_ecp_nistz256_mul_mont:
312	movl	%esp,%edx
313	subl	$256,%esp
314	movd	(%ebp),%xmm7
315	leal	4(%ebp),%ebp
316	pcmpeqd	%xmm6,%xmm6
317	psrlq	$48,%xmm6
318	pshuflw	$220,%xmm7,%xmm7
319	andl	$-64,%esp
320	pshufd	$220,%xmm7,%xmm7
321	leal	128(%esp),%ebx
322	movd	(%esi),%xmm0
323	pshufd	$204,%xmm0,%xmm0
324	movd	4(%esi),%xmm1
325	movdqa	%xmm0,(%ebx)
326	pmuludq	%xmm7,%xmm0
327	movd	8(%esi),%xmm2
328	pshufd	$204,%xmm1,%xmm1
329	movdqa	%xmm1,16(%ebx)
330	pmuludq	%xmm7,%xmm1
331	movq	%xmm0,%xmm4
332	pslldq	$6,%xmm4
333	paddq	%xmm0,%xmm4
334	movdqa	%xmm4,%xmm5
335	psrldq	$10,%xmm4
336	pand	%xmm6,%xmm5
337	movd	12(%esi),%xmm3
338	pshufd	$204,%xmm2,%xmm2
339	movdqa	%xmm2,32(%ebx)
340	pmuludq	%xmm7,%xmm2
341	paddq	%xmm4,%xmm1
342	movdqa	%xmm1,(%esp)
343	movd	16(%esi),%xmm0
344	pshufd	$204,%xmm3,%xmm3
345	movdqa	%xmm3,48(%ebx)
346	pmuludq	%xmm7,%xmm3
347	movdqa	%xmm2,16(%esp)
348	movd	20(%esi),%xmm1
349	pshufd	$204,%xmm0,%xmm0
350	movdqa	%xmm0,64(%ebx)
351	pmuludq	%xmm7,%xmm0
352	paddq	%xmm5,%xmm3
353	movdqa	%xmm3,32(%esp)
354	movd	24(%esi),%xmm2
355	pshufd	$204,%xmm1,%xmm1
356	movdqa	%xmm1,80(%ebx)
357	pmuludq	%xmm7,%xmm1
358	movdqa	%xmm0,48(%esp)
359	pshufd	$177,%xmm5,%xmm4
360	movd	28(%esi),%xmm3
361	pshufd	$204,%xmm2,%xmm2
362	movdqa	%xmm2,96(%ebx)
363	pmuludq	%xmm7,%xmm2
364	movdqa	%xmm1,64(%esp)
365	psubq	%xmm5,%xmm4
366	movd	(%ebp),%xmm0
367	pshufd	$204,%xmm3,%xmm3
368	movdqa	%xmm3,112(%ebx)
369	pmuludq	%xmm7,%xmm3
370	pshuflw	$220,%xmm0,%xmm7
371	movdqa	(%ebx),%xmm0
372	pshufd	$220,%xmm7,%xmm7
373	movl	$6,%ecx
374	leal	4(%ebp),%ebp
375	jmp	.L001madd_sse2
376.align	16
377.L001madd_sse2:
378	paddq	%xmm5,%xmm2
379	paddq	%xmm4,%xmm3
380	movdqa	16(%ebx),%xmm1
381	pmuludq	%xmm7,%xmm0
382	movdqa	%xmm2,80(%esp)
383	movdqa	32(%ebx),%xmm2
384	pmuludq	%xmm7,%xmm1
385	movdqa	%xmm3,96(%esp)
386	paddq	(%esp),%xmm0
387	movdqa	48(%ebx),%xmm3
388	pmuludq	%xmm7,%xmm2
389	movq	%xmm0,%xmm4
390	pslldq	$6,%xmm4
391	paddq	16(%esp),%xmm1
392	paddq	%xmm0,%xmm4
393	movdqa	%xmm4,%xmm5
394	psrldq	$10,%xmm4
395	movdqa	64(%ebx),%xmm0
396	pmuludq	%xmm7,%xmm3
397	paddq	%xmm4,%xmm1
398	paddq	32(%esp),%xmm2
399	movdqa	%xmm1,(%esp)
400	movdqa	80(%ebx),%xmm1
401	pmuludq	%xmm7,%xmm0
402	paddq	48(%esp),%xmm3
403	movdqa	%xmm2,16(%esp)
404	pand	%xmm6,%xmm5
405	movdqa	96(%ebx),%xmm2
406	pmuludq	%xmm7,%xmm1
407	paddq	%xmm5,%xmm3
408	paddq	64(%esp),%xmm0
409	movdqa	%xmm3,32(%esp)
410	pshufd	$177,%xmm5,%xmm4
411	movdqa	%xmm7,%xmm3
412	pmuludq	%xmm7,%xmm2
413	movd	(%ebp),%xmm7
414	leal	4(%ebp),%ebp
415	paddq	80(%esp),%xmm1
416	psubq	%xmm5,%xmm4
417	movdqa	%xmm0,48(%esp)
418	pshuflw	$220,%xmm7,%xmm7
419	pmuludq	112(%ebx),%xmm3
420	pshufd	$220,%xmm7,%xmm7
421	movdqa	(%ebx),%xmm0
422	movdqa	%xmm1,64(%esp)
423	paddq	96(%esp),%xmm2
424	decl	%ecx
425	jnz	.L001madd_sse2
426	paddq	%xmm5,%xmm2
427	paddq	%xmm4,%xmm3
428	movdqa	16(%ebx),%xmm1
429	pmuludq	%xmm7,%xmm0
430	movdqa	%xmm2,80(%esp)
431	movdqa	32(%ebx),%xmm2
432	pmuludq	%xmm7,%xmm1
433	movdqa	%xmm3,96(%esp)
434	paddq	(%esp),%xmm0
435	movdqa	48(%ebx),%xmm3
436	pmuludq	%xmm7,%xmm2
437	movq	%xmm0,%xmm4
438	pslldq	$6,%xmm4
439	paddq	16(%esp),%xmm1
440	paddq	%xmm0,%xmm4
441	movdqa	%xmm4,%xmm5
442	psrldq	$10,%xmm4
443	movdqa	64(%ebx),%xmm0
444	pmuludq	%xmm7,%xmm3
445	paddq	%xmm4,%xmm1
446	paddq	32(%esp),%xmm2
447	movdqa	%xmm1,(%esp)
448	movdqa	80(%ebx),%xmm1
449	pmuludq	%xmm7,%xmm0
450	paddq	48(%esp),%xmm3
451	movdqa	%xmm2,16(%esp)
452	pand	%xmm6,%xmm5
453	movdqa	96(%ebx),%xmm2
454	pmuludq	%xmm7,%xmm1
455	paddq	%xmm5,%xmm3
456	paddq	64(%esp),%xmm0
457	movdqa	%xmm3,32(%esp)
458	pshufd	$177,%xmm5,%xmm4
459	movdqa	112(%ebx),%xmm3
460	pmuludq	%xmm7,%xmm2
461	paddq	80(%esp),%xmm1
462	psubq	%xmm5,%xmm4
463	movdqa	%xmm0,48(%esp)
464	pmuludq	%xmm7,%xmm3
465	pcmpeqd	%xmm7,%xmm7
466	movdqa	(%esp),%xmm0
467	pslldq	$8,%xmm7
468	movdqa	%xmm1,64(%esp)
469	paddq	96(%esp),%xmm2
470	paddq	%xmm5,%xmm2
471	paddq	%xmm4,%xmm3
472	movdqa	%xmm2,80(%esp)
473	movdqa	%xmm3,96(%esp)
474	movdqa	16(%esp),%xmm1
475	movdqa	32(%esp),%xmm2
476	movdqa	48(%esp),%xmm3
477	movq	%xmm0,%xmm4
478	pand	%xmm7,%xmm0
479	xorl	%ebp,%ebp
480	pslldq	$6,%xmm4
481	movq	%xmm1,%xmm5
482	paddq	%xmm4,%xmm0
483	pand	%xmm7,%xmm1
484	psrldq	$6,%xmm0
485	movd	%xmm0,%eax
486	psrldq	$4,%xmm0
487	paddq	%xmm0,%xmm5
488	movdqa	64(%esp),%xmm0
489	subl	$-1,%eax
490	pslldq	$6,%xmm5
491	movq	%xmm2,%xmm4
492	paddq	%xmm5,%xmm1
493	pand	%xmm7,%xmm2
494	psrldq	$6,%xmm1
495	movl	%eax,(%edi)
496	movd	%xmm1,%eax
497	psrldq	$4,%xmm1
498	paddq	%xmm1,%xmm4
499	movdqa	80(%esp),%xmm1
500	sbbl	$-1,%eax
501	pslldq	$6,%xmm4
502	movq	%xmm3,%xmm5
503	paddq	%xmm4,%xmm2
504	pand	%xmm7,%xmm3
505	psrldq	$6,%xmm2
506	movl	%eax,4(%edi)
507	movd	%xmm2,%eax
508	psrldq	$4,%xmm2
509	paddq	%xmm2,%xmm5
510	movdqa	96(%esp),%xmm2
511	sbbl	$-1,%eax
512	pslldq	$6,%xmm5
513	movq	%xmm0,%xmm4
514	paddq	%xmm5,%xmm3
515	pand	%xmm7,%xmm0
516	psrldq	$6,%xmm3
517	movl	%eax,8(%edi)
518	movd	%xmm3,%eax
519	psrldq	$4,%xmm3
520	paddq	%xmm3,%xmm4
521	sbbl	$0,%eax
522	pslldq	$6,%xmm4
523	movq	%xmm1,%xmm5
524	paddq	%xmm4,%xmm0
525	pand	%xmm7,%xmm1
526	psrldq	$6,%xmm0
527	movl	%eax,12(%edi)
528	movd	%xmm0,%eax
529	psrldq	$4,%xmm0
530	paddq	%xmm0,%xmm5
531	sbbl	$0,%eax
532	pslldq	$6,%xmm5
533	movq	%xmm2,%xmm4
534	paddq	%xmm5,%xmm1
535	pand	%xmm7,%xmm2
536	psrldq	$6,%xmm1
537	movd	%xmm1,%ebx
538	psrldq	$4,%xmm1
539	movl	%edx,%esp
540	paddq	%xmm1,%xmm4
541	pslldq	$6,%xmm4
542	paddq	%xmm4,%xmm2
543	psrldq	$6,%xmm2
544	movd	%xmm2,%ecx
545	psrldq	$4,%xmm2
546	sbbl	$0,%ebx
547	movd	%xmm2,%edx
548	pextrw	$2,%xmm2,%esi
549	sbbl	$1,%ecx
550	sbbl	$-1,%edx
551	sbbl	$0,%esi
552	subl	%esi,%ebp
553	addl	%esi,(%edi)
554	adcl	%esi,4(%edi)
555	adcl	%esi,8(%edi)
556	adcl	$0,12(%edi)
557	adcl	$0,%eax
558	adcl	$0,%ebx
559	movl	%eax,16(%edi)
560	adcl	%ebp,%ecx
561	movl	%ebx,20(%edi)
562	adcl	%esi,%edx
563	movl	%ecx,24(%edi)
564	movl	%edx,28(%edi)
565	ret
566.size	_ecp_nistz256_mul_mont,.-_ecp_nistz256_mul_mont
567.globl	GFp_nistz256_point_double
568.hidden	GFp_nistz256_point_double
569.type	GFp_nistz256_point_double,@function
570.align	16
571GFp_nistz256_point_double:
572.L_GFp_nistz256_point_double_begin:
573	pushl	%ebp
574	pushl	%ebx
575	pushl	%esi
576	pushl	%edi
577	movl	24(%esp),%esi
578	subl	$164,%esp
579	call	_picup_eax
580.L002pic:
581	leal	GFp_ia32cap_P-.L002pic(%eax),%edx
582	movl	(%edx),%ebp
583.Lpoint_double_shortcut:
584	movl	(%esi),%eax
585	movl	4(%esi),%ebx
586	movl	8(%esi),%ecx
587	movl	12(%esi),%edx
588	movl	%eax,96(%esp)
589	movl	%ebx,100(%esp)
590	movl	%ecx,104(%esp)
591	movl	%edx,108(%esp)
592	movl	16(%esi),%eax
593	movl	20(%esi),%ebx
594	movl	24(%esi),%ecx
595	movl	28(%esi),%edx
596	movl	%eax,112(%esp)
597	movl	%ebx,116(%esp)
598	movl	%ecx,120(%esp)
599	movl	%edx,124(%esp)
600	movl	%ebp,160(%esp)
601	leal	32(%esi),%ebp
602	leal	32(%esi),%esi
603	leal	(%esp),%edi
604	call	_ecp_nistz256_add
605	movl	160(%esp),%eax
606	movl	$64,%esi
607	addl	188(%esp),%esi
608	leal	64(%esp),%edi
609	movl	%esi,%ebp
610	call	_ecp_nistz256_mul_mont
611	movl	160(%esp),%eax
612	leal	(%esp),%esi
613	leal	(%esp),%ebp
614	leal	(%esp),%edi
615	call	_ecp_nistz256_mul_mont
616	movl	160(%esp),%eax
617	movl	188(%esp),%ebp
618	leal	32(%ebp),%esi
619	leal	64(%ebp),%ebp
620	leal	128(%esp),%edi
621	call	_ecp_nistz256_mul_mont
622	leal	96(%esp),%esi
623	leal	64(%esp),%ebp
624	leal	32(%esp),%edi
625	call	_ecp_nistz256_add
626	movl	$64,%edi
627	leal	128(%esp),%esi
628	leal	128(%esp),%ebp
629	addl	184(%esp),%edi
630	call	_ecp_nistz256_add
631	leal	96(%esp),%esi
632	leal	64(%esp),%ebp
633	leal	64(%esp),%edi
634	call	_ecp_nistz256_sub
635	movl	160(%esp),%eax
636	leal	(%esp),%esi
637	leal	(%esp),%ebp
638	leal	128(%esp),%edi
639	call	_ecp_nistz256_mul_mont
640	movl	160(%esp),%eax
641	leal	32(%esp),%esi
642	leal	64(%esp),%ebp
643	leal	32(%esp),%edi
644	call	_ecp_nistz256_mul_mont
645	movl	$32,%edi
646	leal	128(%esp),%esi
647	addl	184(%esp),%edi
648	call	_ecp_nistz256_div_by_2
649	leal	32(%esp),%esi
650	leal	32(%esp),%ebp
651	leal	128(%esp),%edi
652	call	_ecp_nistz256_add
653	movl	160(%esp),%eax
654	leal	96(%esp),%esi
655	leal	(%esp),%ebp
656	leal	(%esp),%edi
657	call	_ecp_nistz256_mul_mont
658	leal	128(%esp),%esi
659	leal	32(%esp),%ebp
660	leal	32(%esp),%edi
661	call	_ecp_nistz256_add
662	leal	(%esp),%esi
663	leal	(%esp),%ebp
664	leal	128(%esp),%edi
665	call	_ecp_nistz256_add
666	movl	160(%esp),%eax
667	leal	32(%esp),%esi
668	leal	32(%esp),%ebp
669	movl	184(%esp),%edi
670	call	_ecp_nistz256_mul_mont
671	movl	%edi,%esi
672	leal	128(%esp),%ebp
673	call	_ecp_nistz256_sub
674	leal	(%esp),%esi
675	movl	%edi,%ebp
676	leal	(%esp),%edi
677	call	_ecp_nistz256_sub
678	movl	160(%esp),%eax
679	movl	%edi,%esi
680	leal	32(%esp),%ebp
681	call	_ecp_nistz256_mul_mont
682	movl	$32,%ebp
683	leal	(%esp),%esi
684	addl	184(%esp),%ebp
685	movl	%ebp,%edi
686	call	_ecp_nistz256_sub
687	addl	$164,%esp
688	popl	%edi
689	popl	%esi
690	popl	%ebx
691	popl	%ebp
692	ret
693.size	GFp_nistz256_point_double,.-.L_GFp_nistz256_point_double_begin
694.globl	GFp_nistz256_point_add_affine
695.hidden	GFp_nistz256_point_add_affine
696.type	GFp_nistz256_point_add_affine,@function
697.align	16
698GFp_nistz256_point_add_affine:
699.L_GFp_nistz256_point_add_affine_begin:
700	pushl	%ebp
701	pushl	%ebx
702	pushl	%esi
703	pushl	%edi
704	movl	24(%esp),%esi
705	subl	$492,%esp
706	call	_picup_eax
707.L003pic:
708	leal	GFp_ia32cap_P-.L003pic(%eax),%edx
709	movl	(%edx),%ebp
710	leal	96(%esp),%edi
711	movl	(%esi),%eax
712	movl	4(%esi),%ebx
713	movl	8(%esi),%ecx
714	movl	12(%esi),%edx
715	movl	%eax,(%edi)
716	movl	%ebp,488(%esp)
717	movl	%ebx,4(%edi)
718	movl	%ecx,8(%edi)
719	movl	%edx,12(%edi)
720	movl	16(%esi),%eax
721	movl	20(%esi),%ebx
722	movl	24(%esi),%ecx
723	movl	28(%esi),%edx
724	movl	%eax,16(%edi)
725	movl	%ebx,20(%edi)
726	movl	%ecx,24(%edi)
727	movl	%edx,28(%edi)
728	movl	32(%esi),%eax
729	movl	36(%esi),%ebx
730	movl	40(%esi),%ecx
731	movl	44(%esi),%edx
732	movl	%eax,32(%edi)
733	movl	%ebx,36(%edi)
734	movl	%ecx,40(%edi)
735	movl	%edx,44(%edi)
736	movl	48(%esi),%eax
737	movl	52(%esi),%ebx
738	movl	56(%esi),%ecx
739	movl	60(%esi),%edx
740	movl	%eax,48(%edi)
741	movl	%ebx,52(%edi)
742	movl	%ecx,56(%edi)
743	movl	%edx,60(%edi)
744	movl	64(%esi),%eax
745	movl	68(%esi),%ebx
746	movl	72(%esi),%ecx
747	movl	76(%esi),%edx
748	movl	%eax,64(%edi)
749	movl	%eax,%ebp
750	movl	%ebx,68(%edi)
751	orl	%ebx,%ebp
752	movl	%ecx,72(%edi)
753	orl	%ecx,%ebp
754	movl	%edx,76(%edi)
755	orl	%edx,%ebp
756	movl	80(%esi),%eax
757	movl	84(%esi),%ebx
758	movl	88(%esi),%ecx
759	movl	92(%esi),%edx
760	movl	%eax,80(%edi)
761	orl	%eax,%ebp
762	movl	%ebx,84(%edi)
763	orl	%ebx,%ebp
764	movl	%ecx,88(%edi)
765	orl	%ecx,%ebp
766	movl	%edx,92(%edi)
767	orl	%edx,%ebp
768	xorl	%eax,%eax
769	movl	520(%esp),%esi
770	subl	%ebp,%eax
771	orl	%eax,%ebp
772	sarl	$31,%ebp
773	movl	%ebp,480(%esp)
774	leal	192(%esp),%edi
775	movl	(%esi),%eax
776	movl	4(%esi),%ebx
777	movl	8(%esi),%ecx
778	movl	12(%esi),%edx
779	movl	%eax,(%edi)
780	movl	%eax,%ebp
781	movl	%ebx,4(%edi)
782	orl	%ebx,%ebp
783	movl	%ecx,8(%edi)
784	orl	%ecx,%ebp
785	movl	%edx,12(%edi)
786	orl	%edx,%ebp
787	movl	16(%esi),%eax
788	movl	20(%esi),%ebx
789	movl	24(%esi),%ecx
790	movl	28(%esi),%edx
791	movl	%eax,16(%edi)
792	orl	%eax,%ebp
793	movl	%ebx,20(%edi)
794	orl	%ebx,%ebp
795	movl	%ecx,24(%edi)
796	orl	%ecx,%ebp
797	movl	%edx,28(%edi)
798	orl	%edx,%ebp
799	movl	32(%esi),%eax
800	movl	36(%esi),%ebx
801	movl	40(%esi),%ecx
802	movl	44(%esi),%edx
803	movl	%eax,32(%edi)
804	orl	%eax,%ebp
805	movl	%ebx,36(%edi)
806	orl	%ebx,%ebp
807	movl	%ecx,40(%edi)
808	orl	%ecx,%ebp
809	movl	%edx,44(%edi)
810	orl	%edx,%ebp
811	movl	48(%esi),%eax
812	movl	52(%esi),%ebx
813	movl	56(%esi),%ecx
814	movl	60(%esi),%edx
815	movl	%eax,48(%edi)
816	orl	%eax,%ebp
817	movl	%ebx,52(%edi)
818	orl	%ebx,%ebp
819	movl	%ecx,56(%edi)
820	orl	%ecx,%ebp
821	movl	%edx,60(%edi)
822	orl	%edx,%ebp
823	xorl	%ebx,%ebx
824	movl	488(%esp),%eax
825	subl	%ebp,%ebx
826	leal	160(%esp),%esi
827	orl	%ebp,%ebx
828	leal	160(%esp),%ebp
829	sarl	$31,%ebx
830	leal	288(%esp),%edi
831	movl	%ebx,484(%esp)
832	call	_ecp_nistz256_mul_mont
833	movl	488(%esp),%eax
834	leal	192(%esp),%esi
835	movl	%edi,%ebp
836	leal	256(%esp),%edi
837	call	_ecp_nistz256_mul_mont
838	movl	488(%esp),%eax
839	leal	160(%esp),%esi
840	leal	288(%esp),%ebp
841	leal	288(%esp),%edi
842	call	_ecp_nistz256_mul_mont
843	leal	256(%esp),%esi
844	leal	96(%esp),%ebp
845	leal	320(%esp),%edi
846	call	_ecp_nistz256_sub
847	movl	488(%esp),%eax
848	leal	224(%esp),%esi
849	leal	288(%esp),%ebp
850	leal	288(%esp),%edi
851	call	_ecp_nistz256_mul_mont
852	movl	488(%esp),%eax
853	leal	160(%esp),%esi
854	leal	320(%esp),%ebp
855	leal	64(%esp),%edi
856	call	_ecp_nistz256_mul_mont
857	leal	288(%esp),%esi
858	leal	128(%esp),%ebp
859	leal	352(%esp),%edi
860	call	_ecp_nistz256_sub
861	movl	488(%esp),%eax
862	leal	320(%esp),%esi
863	leal	320(%esp),%ebp
864	leal	384(%esp),%edi
865	call	_ecp_nistz256_mul_mont
866	movl	488(%esp),%eax
867	leal	352(%esp),%esi
868	leal	352(%esp),%ebp
869	leal	448(%esp),%edi
870	call	_ecp_nistz256_mul_mont
871	movl	488(%esp),%eax
872	leal	96(%esp),%esi
873	leal	384(%esp),%ebp
874	leal	256(%esp),%edi
875	call	_ecp_nistz256_mul_mont
876	movl	488(%esp),%eax
877	leal	320(%esp),%esi
878	leal	384(%esp),%ebp
879	leal	416(%esp),%edi
880	call	_ecp_nistz256_mul_mont
881	leal	256(%esp),%esi
882	leal	256(%esp),%ebp
883	leal	384(%esp),%edi
884	call	_ecp_nistz256_add
885	leal	448(%esp),%esi
886	leal	384(%esp),%ebp
887	leal	(%esp),%edi
888	call	_ecp_nistz256_sub
889	leal	(%esp),%esi
890	leal	416(%esp),%ebp
891	leal	(%esp),%edi
892	call	_ecp_nistz256_sub
893	leal	256(%esp),%esi
894	leal	(%esp),%ebp
895	leal	32(%esp),%edi
896	call	_ecp_nistz256_sub
897	movl	488(%esp),%eax
898	leal	416(%esp),%esi
899	leal	128(%esp),%ebp
900	leal	288(%esp),%edi
901	call	_ecp_nistz256_mul_mont
902	movl	488(%esp),%eax
903	leal	352(%esp),%esi
904	leal	32(%esp),%ebp
905	leal	32(%esp),%edi
906	call	_ecp_nistz256_mul_mont
907	leal	32(%esp),%esi
908	leal	288(%esp),%ebp
909	leal	32(%esp),%edi
910	call	_ecp_nistz256_sub
911	movl	480(%esp),%ebp
912	movl	484(%esp),%esi
913	movl	512(%esp),%edi
914	movl	%ebp,%edx
915	notl	%ebp
916	andl	%esi,%edx
917	andl	%esi,%ebp
918	notl	%esi
919	movl	%edx,%eax
920	andl	64(%esp),%eax
921	movl	%ebp,%ebx
922	andl	$1,%ebx
923	movl	%esi,%ecx
924	andl	160(%esp),%ecx
925	orl	%ebx,%eax
926	orl	%ecx,%eax
927	movl	%eax,64(%edi)
928	movl	%edx,%eax
929	andl	68(%esp),%eax
930	movl	%esi,%ecx
931	andl	164(%esp),%ecx
932	orl	%ecx,%eax
933	movl	%eax,68(%edi)
934	movl	%edx,%eax
935	andl	72(%esp),%eax
936	movl	%esi,%ecx
937	andl	168(%esp),%ecx
938	orl	%ecx,%eax
939	movl	%eax,72(%edi)
940	movl	%edx,%eax
941	andl	76(%esp),%eax
942	movl	%esi,%ecx
943	andl	172(%esp),%ecx
944	orl	%ebp,%eax
945	orl	%ecx,%eax
946	movl	%eax,76(%edi)
947	movl	%edx,%eax
948	andl	80(%esp),%eax
949	movl	%esi,%ecx
950	andl	176(%esp),%ecx
951	orl	%ebp,%eax
952	orl	%ecx,%eax
953	movl	%eax,80(%edi)
954	movl	%edx,%eax
955	andl	84(%esp),%eax
956	movl	%esi,%ecx
957	andl	180(%esp),%ecx
958	orl	%ebp,%eax
959	orl	%ecx,%eax
960	movl	%eax,84(%edi)
961	movl	%edx,%eax
962	andl	88(%esp),%eax
963	movl	%ebp,%ebx
964	andl	$-2,%ebx
965	movl	%esi,%ecx
966	andl	184(%esp),%ecx
967	orl	%ebx,%eax
968	orl	%ecx,%eax
969	movl	%eax,88(%edi)
970	movl	%edx,%eax
971	andl	92(%esp),%eax
972	movl	%esi,%ecx
973	andl	188(%esp),%ecx
974	orl	%ecx,%eax
975	movl	%eax,92(%edi)
976	movl	%edx,%eax
977	andl	(%esp),%eax
978	movl	%ebp,%ebx
979	andl	192(%esp),%ebx
980	movl	%esi,%ecx
981	andl	96(%esp),%ecx
982	orl	%ebx,%eax
983	orl	%ecx,%eax
984	movl	%eax,(%edi)
985	movl	%edx,%eax
986	andl	4(%esp),%eax
987	movl	%ebp,%ebx
988	andl	196(%esp),%ebx
989	movl	%esi,%ecx
990	andl	100(%esp),%ecx
991	orl	%ebx,%eax
992	orl	%ecx,%eax
993	movl	%eax,4(%edi)
994	movl	%edx,%eax
995	andl	8(%esp),%eax
996	movl	%ebp,%ebx
997	andl	200(%esp),%ebx
998	movl	%esi,%ecx
999	andl	104(%esp),%ecx
1000	orl	%ebx,%eax
1001	orl	%ecx,%eax
1002	movl	%eax,8(%edi)
1003	movl	%edx,%eax
1004	andl	12(%esp),%eax
1005	movl	%ebp,%ebx
1006	andl	204(%esp),%ebx
1007	movl	%esi,%ecx
1008	andl	108(%esp),%ecx
1009	orl	%ebx,%eax
1010	orl	%ecx,%eax
1011	movl	%eax,12(%edi)
1012	movl	%edx,%eax
1013	andl	16(%esp),%eax
1014	movl	%ebp,%ebx
1015	andl	208(%esp),%ebx
1016	movl	%esi,%ecx
1017	andl	112(%esp),%ecx
1018	orl	%ebx,%eax
1019	orl	%ecx,%eax
1020	movl	%eax,16(%edi)
1021	movl	%edx,%eax
1022	andl	20(%esp),%eax
1023	movl	%ebp,%ebx
1024	andl	212(%esp),%ebx
1025	movl	%esi,%ecx
1026	andl	116(%esp),%ecx
1027	orl	%ebx,%eax
1028	orl	%ecx,%eax
1029	movl	%eax,20(%edi)
1030	movl	%edx,%eax
1031	andl	24(%esp),%eax
1032	movl	%ebp,%ebx
1033	andl	216(%esp),%ebx
1034	movl	%esi,%ecx
1035	andl	120(%esp),%ecx
1036	orl	%ebx,%eax
1037	orl	%ecx,%eax
1038	movl	%eax,24(%edi)
1039	movl	%edx,%eax
1040	andl	28(%esp),%eax
1041	movl	%ebp,%ebx
1042	andl	220(%esp),%ebx
1043	movl	%esi,%ecx
1044	andl	124(%esp),%ecx
1045	orl	%ebx,%eax
1046	orl	%ecx,%eax
1047	movl	%eax,28(%edi)
1048	movl	%edx,%eax
1049	andl	32(%esp),%eax
1050	movl	%ebp,%ebx
1051	andl	224(%esp),%ebx
1052	movl	%esi,%ecx
1053	andl	128(%esp),%ecx
1054	orl	%ebx,%eax
1055	orl	%ecx,%eax
1056	movl	%eax,32(%edi)
1057	movl	%edx,%eax
1058	andl	36(%esp),%eax
1059	movl	%ebp,%ebx
1060	andl	228(%esp),%ebx
1061	movl	%esi,%ecx
1062	andl	132(%esp),%ecx
1063	orl	%ebx,%eax
1064	orl	%ecx,%eax
1065	movl	%eax,36(%edi)
1066	movl	%edx,%eax
1067	andl	40(%esp),%eax
1068	movl	%ebp,%ebx
1069	andl	232(%esp),%ebx
1070	movl	%esi,%ecx
1071	andl	136(%esp),%ecx
1072	orl	%ebx,%eax
1073	orl	%ecx,%eax
1074	movl	%eax,40(%edi)
1075	movl	%edx,%eax
1076	andl	44(%esp),%eax
1077	movl	%ebp,%ebx
1078	andl	236(%esp),%ebx
1079	movl	%esi,%ecx
1080	andl	140(%esp),%ecx
1081	orl	%ebx,%eax
1082	orl	%ecx,%eax
1083	movl	%eax,44(%edi)
1084	movl	%edx,%eax
1085	andl	48(%esp),%eax
1086	movl	%ebp,%ebx
1087	andl	240(%esp),%ebx
1088	movl	%esi,%ecx
1089	andl	144(%esp),%ecx
1090	orl	%ebx,%eax
1091	orl	%ecx,%eax
1092	movl	%eax,48(%edi)
1093	movl	%edx,%eax
1094	andl	52(%esp),%eax
1095	movl	%ebp,%ebx
1096	andl	244(%esp),%ebx
1097	movl	%esi,%ecx
1098	andl	148(%esp),%ecx
1099	orl	%ebx,%eax
1100	orl	%ecx,%eax
1101	movl	%eax,52(%edi)
1102	movl	%edx,%eax
1103	andl	56(%esp),%eax
1104	movl	%ebp,%ebx
1105	andl	248(%esp),%ebx
1106	movl	%esi,%ecx
1107	andl	152(%esp),%ecx
1108	orl	%ebx,%eax
1109	orl	%ecx,%eax
1110	movl	%eax,56(%edi)
1111	movl	%edx,%eax
1112	andl	60(%esp),%eax
1113	movl	%ebp,%ebx
1114	andl	252(%esp),%ebx
1115	movl	%esi,%ecx
1116	andl	156(%esp),%ecx
1117	orl	%ebx,%eax
1118	orl	%ecx,%eax
1119	movl	%eax,60(%edi)
1120	addl	$492,%esp
1121	popl	%edi
1122	popl	%esi
1123	popl	%ebx
1124	popl	%ebp
1125	ret
1126.size	GFp_nistz256_point_add_affine,.-.L_GFp_nistz256_point_add_affine_begin
1127#endif
1128.section	.note.GNU-stack,"",@progbits
1129