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