1%ifidn __OUTPUT_FORMAT__,obj
2section	code	use32 class=code align=64
3%elifidn __OUTPUT_FORMAT__,win32
4$@feat.00 equ 1
5section	.text	code align=64
6%else
7section	.text	code
8%endif
9;extern	_OPENSSL_ia32cap_P
10global	_bn_mul_add_words
11align	16
12_bn_mul_add_words:
13L$_bn_mul_add_words_begin:
14	lea	eax,[_OPENSSL_ia32cap_P]
15	bt	DWORD [eax],26
16	jnc	NEAR L$000maw_non_sse2
17	mov	eax,DWORD [4+esp]
18	mov	edx,DWORD [8+esp]
19	mov	ecx,DWORD [12+esp]
20	movd	mm0,DWORD [16+esp]
21	pxor	mm1,mm1
22	jmp	NEAR L$001maw_sse2_entry
23align	16
24L$002maw_sse2_unrolled:
25	movd	mm3,DWORD [eax]
26	paddq	mm1,mm3
27	movd	mm2,DWORD [edx]
28	pmuludq	mm2,mm0
29	movd	mm4,DWORD [4+edx]
30	pmuludq	mm4,mm0
31	movd	mm6,DWORD [8+edx]
32	pmuludq	mm6,mm0
33	movd	mm7,DWORD [12+edx]
34	pmuludq	mm7,mm0
35	paddq	mm1,mm2
36	movd	mm3,DWORD [4+eax]
37	paddq	mm3,mm4
38	movd	mm5,DWORD [8+eax]
39	paddq	mm5,mm6
40	movd	mm4,DWORD [12+eax]
41	paddq	mm7,mm4
42	movd	DWORD [eax],mm1
43	movd	mm2,DWORD [16+edx]
44	pmuludq	mm2,mm0
45	psrlq	mm1,32
46	movd	mm4,DWORD [20+edx]
47	pmuludq	mm4,mm0
48	paddq	mm1,mm3
49	movd	mm6,DWORD [24+edx]
50	pmuludq	mm6,mm0
51	movd	DWORD [4+eax],mm1
52	psrlq	mm1,32
53	movd	mm3,DWORD [28+edx]
54	add	edx,32
55	pmuludq	mm3,mm0
56	paddq	mm1,mm5
57	movd	mm5,DWORD [16+eax]
58	paddq	mm2,mm5
59	movd	DWORD [8+eax],mm1
60	psrlq	mm1,32
61	paddq	mm1,mm7
62	movd	mm5,DWORD [20+eax]
63	paddq	mm4,mm5
64	movd	DWORD [12+eax],mm1
65	psrlq	mm1,32
66	paddq	mm1,mm2
67	movd	mm5,DWORD [24+eax]
68	paddq	mm6,mm5
69	movd	DWORD [16+eax],mm1
70	psrlq	mm1,32
71	paddq	mm1,mm4
72	movd	mm5,DWORD [28+eax]
73	paddq	mm3,mm5
74	movd	DWORD [20+eax],mm1
75	psrlq	mm1,32
76	paddq	mm1,mm6
77	movd	DWORD [24+eax],mm1
78	psrlq	mm1,32
79	paddq	mm1,mm3
80	movd	DWORD [28+eax],mm1
81	lea	eax,[32+eax]
82	psrlq	mm1,32
83	sub	ecx,8
84	jz	NEAR L$003maw_sse2_exit
85L$001maw_sse2_entry:
86	test	ecx,4294967288
87	jnz	NEAR L$002maw_sse2_unrolled
88align	4
89L$004maw_sse2_loop:
90	movd	mm2,DWORD [edx]
91	movd	mm3,DWORD [eax]
92	pmuludq	mm2,mm0
93	lea	edx,[4+edx]
94	paddq	mm1,mm3
95	paddq	mm1,mm2
96	movd	DWORD [eax],mm1
97	sub	ecx,1
98	psrlq	mm1,32
99	lea	eax,[4+eax]
100	jnz	NEAR L$004maw_sse2_loop
101L$003maw_sse2_exit:
102	movd	eax,mm1
103	emms
104	ret
105align	16
106L$000maw_non_sse2:
107	push	ebp
108	push	ebx
109	push	esi
110	push	edi
111	;
112	xor	esi,esi
113	mov	edi,DWORD [20+esp]
114	mov	ecx,DWORD [28+esp]
115	mov	ebx,DWORD [24+esp]
116	and	ecx,4294967288
117	mov	ebp,DWORD [32+esp]
118	push	ecx
119	jz	NEAR L$005maw_finish
120align	16
121L$006maw_loop:
122	; Round 0
123	mov	eax,DWORD [ebx]
124	mul	ebp
125	add	eax,esi
126	adc	edx,0
127	add	eax,DWORD [edi]
128	adc	edx,0
129	mov	DWORD [edi],eax
130	mov	esi,edx
131	; Round 4
132	mov	eax,DWORD [4+ebx]
133	mul	ebp
134	add	eax,esi
135	adc	edx,0
136	add	eax,DWORD [4+edi]
137	adc	edx,0
138	mov	DWORD [4+edi],eax
139	mov	esi,edx
140	; Round 8
141	mov	eax,DWORD [8+ebx]
142	mul	ebp
143	add	eax,esi
144	adc	edx,0
145	add	eax,DWORD [8+edi]
146	adc	edx,0
147	mov	DWORD [8+edi],eax
148	mov	esi,edx
149	; Round 12
150	mov	eax,DWORD [12+ebx]
151	mul	ebp
152	add	eax,esi
153	adc	edx,0
154	add	eax,DWORD [12+edi]
155	adc	edx,0
156	mov	DWORD [12+edi],eax
157	mov	esi,edx
158	; Round 16
159	mov	eax,DWORD [16+ebx]
160	mul	ebp
161	add	eax,esi
162	adc	edx,0
163	add	eax,DWORD [16+edi]
164	adc	edx,0
165	mov	DWORD [16+edi],eax
166	mov	esi,edx
167	; Round 20
168	mov	eax,DWORD [20+ebx]
169	mul	ebp
170	add	eax,esi
171	adc	edx,0
172	add	eax,DWORD [20+edi]
173	adc	edx,0
174	mov	DWORD [20+edi],eax
175	mov	esi,edx
176	; Round 24
177	mov	eax,DWORD [24+ebx]
178	mul	ebp
179	add	eax,esi
180	adc	edx,0
181	add	eax,DWORD [24+edi]
182	adc	edx,0
183	mov	DWORD [24+edi],eax
184	mov	esi,edx
185	; Round 28
186	mov	eax,DWORD [28+ebx]
187	mul	ebp
188	add	eax,esi
189	adc	edx,0
190	add	eax,DWORD [28+edi]
191	adc	edx,0
192	mov	DWORD [28+edi],eax
193	mov	esi,edx
194	;
195	sub	ecx,8
196	lea	ebx,[32+ebx]
197	lea	edi,[32+edi]
198	jnz	NEAR L$006maw_loop
199L$005maw_finish:
200	mov	ecx,DWORD [32+esp]
201	and	ecx,7
202	jnz	NEAR L$007maw_finish2
203	jmp	NEAR L$008maw_end
204L$007maw_finish2:
205	; Tail Round 0
206	mov	eax,DWORD [ebx]
207	mul	ebp
208	add	eax,esi
209	adc	edx,0
210	add	eax,DWORD [edi]
211	adc	edx,0
212	dec	ecx
213	mov	DWORD [edi],eax
214	mov	esi,edx
215	jz	NEAR L$008maw_end
216	; Tail Round 1
217	mov	eax,DWORD [4+ebx]
218	mul	ebp
219	add	eax,esi
220	adc	edx,0
221	add	eax,DWORD [4+edi]
222	adc	edx,0
223	dec	ecx
224	mov	DWORD [4+edi],eax
225	mov	esi,edx
226	jz	NEAR L$008maw_end
227	; Tail Round 2
228	mov	eax,DWORD [8+ebx]
229	mul	ebp
230	add	eax,esi
231	adc	edx,0
232	add	eax,DWORD [8+edi]
233	adc	edx,0
234	dec	ecx
235	mov	DWORD [8+edi],eax
236	mov	esi,edx
237	jz	NEAR L$008maw_end
238	; Tail Round 3
239	mov	eax,DWORD [12+ebx]
240	mul	ebp
241	add	eax,esi
242	adc	edx,0
243	add	eax,DWORD [12+edi]
244	adc	edx,0
245	dec	ecx
246	mov	DWORD [12+edi],eax
247	mov	esi,edx
248	jz	NEAR L$008maw_end
249	; Tail Round 4
250	mov	eax,DWORD [16+ebx]
251	mul	ebp
252	add	eax,esi
253	adc	edx,0
254	add	eax,DWORD [16+edi]
255	adc	edx,0
256	dec	ecx
257	mov	DWORD [16+edi],eax
258	mov	esi,edx
259	jz	NEAR L$008maw_end
260	; Tail Round 5
261	mov	eax,DWORD [20+ebx]
262	mul	ebp
263	add	eax,esi
264	adc	edx,0
265	add	eax,DWORD [20+edi]
266	adc	edx,0
267	dec	ecx
268	mov	DWORD [20+edi],eax
269	mov	esi,edx
270	jz	NEAR L$008maw_end
271	; Tail Round 6
272	mov	eax,DWORD [24+ebx]
273	mul	ebp
274	add	eax,esi
275	adc	edx,0
276	add	eax,DWORD [24+edi]
277	adc	edx,0
278	mov	DWORD [24+edi],eax
279	mov	esi,edx
280L$008maw_end:
281	mov	eax,esi
282	pop	ecx
283	pop	edi
284	pop	esi
285	pop	ebx
286	pop	ebp
287	ret
288global	_bn_mul_words
289align	16
290_bn_mul_words:
291L$_bn_mul_words_begin:
292	lea	eax,[_OPENSSL_ia32cap_P]
293	bt	DWORD [eax],26
294	jnc	NEAR L$009mw_non_sse2
295	mov	eax,DWORD [4+esp]
296	mov	edx,DWORD [8+esp]
297	mov	ecx,DWORD [12+esp]
298	movd	mm0,DWORD [16+esp]
299	pxor	mm1,mm1
300align	16
301L$010mw_sse2_loop:
302	movd	mm2,DWORD [edx]
303	pmuludq	mm2,mm0
304	lea	edx,[4+edx]
305	paddq	mm1,mm2
306	movd	DWORD [eax],mm1
307	sub	ecx,1
308	psrlq	mm1,32
309	lea	eax,[4+eax]
310	jnz	NEAR L$010mw_sse2_loop
311	movd	eax,mm1
312	emms
313	ret
314align	16
315L$009mw_non_sse2:
316	push	ebp
317	push	ebx
318	push	esi
319	push	edi
320	;
321	xor	esi,esi
322	mov	edi,DWORD [20+esp]
323	mov	ebx,DWORD [24+esp]
324	mov	ebp,DWORD [28+esp]
325	mov	ecx,DWORD [32+esp]
326	and	ebp,4294967288
327	jz	NEAR L$011mw_finish
328L$012mw_loop:
329	; Round 0
330	mov	eax,DWORD [ebx]
331	mul	ecx
332	add	eax,esi
333	adc	edx,0
334	mov	DWORD [edi],eax
335	mov	esi,edx
336	; Round 4
337	mov	eax,DWORD [4+ebx]
338	mul	ecx
339	add	eax,esi
340	adc	edx,0
341	mov	DWORD [4+edi],eax
342	mov	esi,edx
343	; Round 8
344	mov	eax,DWORD [8+ebx]
345	mul	ecx
346	add	eax,esi
347	adc	edx,0
348	mov	DWORD [8+edi],eax
349	mov	esi,edx
350	; Round 12
351	mov	eax,DWORD [12+ebx]
352	mul	ecx
353	add	eax,esi
354	adc	edx,0
355	mov	DWORD [12+edi],eax
356	mov	esi,edx
357	; Round 16
358	mov	eax,DWORD [16+ebx]
359	mul	ecx
360	add	eax,esi
361	adc	edx,0
362	mov	DWORD [16+edi],eax
363	mov	esi,edx
364	; Round 20
365	mov	eax,DWORD [20+ebx]
366	mul	ecx
367	add	eax,esi
368	adc	edx,0
369	mov	DWORD [20+edi],eax
370	mov	esi,edx
371	; Round 24
372	mov	eax,DWORD [24+ebx]
373	mul	ecx
374	add	eax,esi
375	adc	edx,0
376	mov	DWORD [24+edi],eax
377	mov	esi,edx
378	; Round 28
379	mov	eax,DWORD [28+ebx]
380	mul	ecx
381	add	eax,esi
382	adc	edx,0
383	mov	DWORD [28+edi],eax
384	mov	esi,edx
385	;
386	add	ebx,32
387	add	edi,32
388	sub	ebp,8
389	jz	NEAR L$011mw_finish
390	jmp	NEAR L$012mw_loop
391L$011mw_finish:
392	mov	ebp,DWORD [28+esp]
393	and	ebp,7
394	jnz	NEAR L$013mw_finish2
395	jmp	NEAR L$014mw_end
396L$013mw_finish2:
397	; Tail Round 0
398	mov	eax,DWORD [ebx]
399	mul	ecx
400	add	eax,esi
401	adc	edx,0
402	mov	DWORD [edi],eax
403	mov	esi,edx
404	dec	ebp
405	jz	NEAR L$014mw_end
406	; Tail Round 1
407	mov	eax,DWORD [4+ebx]
408	mul	ecx
409	add	eax,esi
410	adc	edx,0
411	mov	DWORD [4+edi],eax
412	mov	esi,edx
413	dec	ebp
414	jz	NEAR L$014mw_end
415	; Tail Round 2
416	mov	eax,DWORD [8+ebx]
417	mul	ecx
418	add	eax,esi
419	adc	edx,0
420	mov	DWORD [8+edi],eax
421	mov	esi,edx
422	dec	ebp
423	jz	NEAR L$014mw_end
424	; Tail Round 3
425	mov	eax,DWORD [12+ebx]
426	mul	ecx
427	add	eax,esi
428	adc	edx,0
429	mov	DWORD [12+edi],eax
430	mov	esi,edx
431	dec	ebp
432	jz	NEAR L$014mw_end
433	; Tail Round 4
434	mov	eax,DWORD [16+ebx]
435	mul	ecx
436	add	eax,esi
437	adc	edx,0
438	mov	DWORD [16+edi],eax
439	mov	esi,edx
440	dec	ebp
441	jz	NEAR L$014mw_end
442	; Tail Round 5
443	mov	eax,DWORD [20+ebx]
444	mul	ecx
445	add	eax,esi
446	adc	edx,0
447	mov	DWORD [20+edi],eax
448	mov	esi,edx
449	dec	ebp
450	jz	NEAR L$014mw_end
451	; Tail Round 6
452	mov	eax,DWORD [24+ebx]
453	mul	ecx
454	add	eax,esi
455	adc	edx,0
456	mov	DWORD [24+edi],eax
457	mov	esi,edx
458L$014mw_end:
459	mov	eax,esi
460	pop	edi
461	pop	esi
462	pop	ebx
463	pop	ebp
464	ret
465global	_bn_sqr_words
466align	16
467_bn_sqr_words:
468L$_bn_sqr_words_begin:
469	lea	eax,[_OPENSSL_ia32cap_P]
470	bt	DWORD [eax],26
471	jnc	NEAR L$015sqr_non_sse2
472	mov	eax,DWORD [4+esp]
473	mov	edx,DWORD [8+esp]
474	mov	ecx,DWORD [12+esp]
475align	16
476L$016sqr_sse2_loop:
477	movd	mm0,DWORD [edx]
478	pmuludq	mm0,mm0
479	lea	edx,[4+edx]
480	movq	[eax],mm0
481	sub	ecx,1
482	lea	eax,[8+eax]
483	jnz	NEAR L$016sqr_sse2_loop
484	emms
485	ret
486align	16
487L$015sqr_non_sse2:
488	push	ebp
489	push	ebx
490	push	esi
491	push	edi
492	;
493	mov	esi,DWORD [20+esp]
494	mov	edi,DWORD [24+esp]
495	mov	ebx,DWORD [28+esp]
496	and	ebx,4294967288
497	jz	NEAR L$017sw_finish
498L$018sw_loop:
499	; Round 0
500	mov	eax,DWORD [edi]
501	mul	eax
502	mov	DWORD [esi],eax
503	mov	DWORD [4+esi],edx
504	; Round 4
505	mov	eax,DWORD [4+edi]
506	mul	eax
507	mov	DWORD [8+esi],eax
508	mov	DWORD [12+esi],edx
509	; Round 8
510	mov	eax,DWORD [8+edi]
511	mul	eax
512	mov	DWORD [16+esi],eax
513	mov	DWORD [20+esi],edx
514	; Round 12
515	mov	eax,DWORD [12+edi]
516	mul	eax
517	mov	DWORD [24+esi],eax
518	mov	DWORD [28+esi],edx
519	; Round 16
520	mov	eax,DWORD [16+edi]
521	mul	eax
522	mov	DWORD [32+esi],eax
523	mov	DWORD [36+esi],edx
524	; Round 20
525	mov	eax,DWORD [20+edi]
526	mul	eax
527	mov	DWORD [40+esi],eax
528	mov	DWORD [44+esi],edx
529	; Round 24
530	mov	eax,DWORD [24+edi]
531	mul	eax
532	mov	DWORD [48+esi],eax
533	mov	DWORD [52+esi],edx
534	; Round 28
535	mov	eax,DWORD [28+edi]
536	mul	eax
537	mov	DWORD [56+esi],eax
538	mov	DWORD [60+esi],edx
539	;
540	add	edi,32
541	add	esi,64
542	sub	ebx,8
543	jnz	NEAR L$018sw_loop
544L$017sw_finish:
545	mov	ebx,DWORD [28+esp]
546	and	ebx,7
547	jz	NEAR L$019sw_end
548	; Tail Round 0
549	mov	eax,DWORD [edi]
550	mul	eax
551	mov	DWORD [esi],eax
552	dec	ebx
553	mov	DWORD [4+esi],edx
554	jz	NEAR L$019sw_end
555	; Tail Round 1
556	mov	eax,DWORD [4+edi]
557	mul	eax
558	mov	DWORD [8+esi],eax
559	dec	ebx
560	mov	DWORD [12+esi],edx
561	jz	NEAR L$019sw_end
562	; Tail Round 2
563	mov	eax,DWORD [8+edi]
564	mul	eax
565	mov	DWORD [16+esi],eax
566	dec	ebx
567	mov	DWORD [20+esi],edx
568	jz	NEAR L$019sw_end
569	; Tail Round 3
570	mov	eax,DWORD [12+edi]
571	mul	eax
572	mov	DWORD [24+esi],eax
573	dec	ebx
574	mov	DWORD [28+esi],edx
575	jz	NEAR L$019sw_end
576	; Tail Round 4
577	mov	eax,DWORD [16+edi]
578	mul	eax
579	mov	DWORD [32+esi],eax
580	dec	ebx
581	mov	DWORD [36+esi],edx
582	jz	NEAR L$019sw_end
583	; Tail Round 5
584	mov	eax,DWORD [20+edi]
585	mul	eax
586	mov	DWORD [40+esi],eax
587	dec	ebx
588	mov	DWORD [44+esi],edx
589	jz	NEAR L$019sw_end
590	; Tail Round 6
591	mov	eax,DWORD [24+edi]
592	mul	eax
593	mov	DWORD [48+esi],eax
594	mov	DWORD [52+esi],edx
595L$019sw_end:
596	pop	edi
597	pop	esi
598	pop	ebx
599	pop	ebp
600	ret
601global	_bn_div_words
602align	16
603_bn_div_words:
604L$_bn_div_words_begin:
605	mov	edx,DWORD [4+esp]
606	mov	eax,DWORD [8+esp]
607	mov	ecx,DWORD [12+esp]
608	div	ecx
609	ret
610global	_bn_add_words
611align	16
612_bn_add_words:
613L$_bn_add_words_begin:
614	push	ebp
615	push	ebx
616	push	esi
617	push	edi
618	;
619	mov	ebx,DWORD [20+esp]
620	mov	esi,DWORD [24+esp]
621	mov	edi,DWORD [28+esp]
622	mov	ebp,DWORD [32+esp]
623	xor	eax,eax
624	and	ebp,4294967288
625	jz	NEAR L$020aw_finish
626L$021aw_loop:
627	; Round 0
628	mov	ecx,DWORD [esi]
629	mov	edx,DWORD [edi]
630	add	ecx,eax
631	mov	eax,0
632	adc	eax,eax
633	add	ecx,edx
634	adc	eax,0
635	mov	DWORD [ebx],ecx
636	; Round 1
637	mov	ecx,DWORD [4+esi]
638	mov	edx,DWORD [4+edi]
639	add	ecx,eax
640	mov	eax,0
641	adc	eax,eax
642	add	ecx,edx
643	adc	eax,0
644	mov	DWORD [4+ebx],ecx
645	; Round 2
646	mov	ecx,DWORD [8+esi]
647	mov	edx,DWORD [8+edi]
648	add	ecx,eax
649	mov	eax,0
650	adc	eax,eax
651	add	ecx,edx
652	adc	eax,0
653	mov	DWORD [8+ebx],ecx
654	; Round 3
655	mov	ecx,DWORD [12+esi]
656	mov	edx,DWORD [12+edi]
657	add	ecx,eax
658	mov	eax,0
659	adc	eax,eax
660	add	ecx,edx
661	adc	eax,0
662	mov	DWORD [12+ebx],ecx
663	; Round 4
664	mov	ecx,DWORD [16+esi]
665	mov	edx,DWORD [16+edi]
666	add	ecx,eax
667	mov	eax,0
668	adc	eax,eax
669	add	ecx,edx
670	adc	eax,0
671	mov	DWORD [16+ebx],ecx
672	; Round 5
673	mov	ecx,DWORD [20+esi]
674	mov	edx,DWORD [20+edi]
675	add	ecx,eax
676	mov	eax,0
677	adc	eax,eax
678	add	ecx,edx
679	adc	eax,0
680	mov	DWORD [20+ebx],ecx
681	; Round 6
682	mov	ecx,DWORD [24+esi]
683	mov	edx,DWORD [24+edi]
684	add	ecx,eax
685	mov	eax,0
686	adc	eax,eax
687	add	ecx,edx
688	adc	eax,0
689	mov	DWORD [24+ebx],ecx
690	; Round 7
691	mov	ecx,DWORD [28+esi]
692	mov	edx,DWORD [28+edi]
693	add	ecx,eax
694	mov	eax,0
695	adc	eax,eax
696	add	ecx,edx
697	adc	eax,0
698	mov	DWORD [28+ebx],ecx
699	;
700	add	esi,32
701	add	edi,32
702	add	ebx,32
703	sub	ebp,8
704	jnz	NEAR L$021aw_loop
705L$020aw_finish:
706	mov	ebp,DWORD [32+esp]
707	and	ebp,7
708	jz	NEAR L$022aw_end
709	; Tail Round 0
710	mov	ecx,DWORD [esi]
711	mov	edx,DWORD [edi]
712	add	ecx,eax
713	mov	eax,0
714	adc	eax,eax
715	add	ecx,edx
716	adc	eax,0
717	dec	ebp
718	mov	DWORD [ebx],ecx
719	jz	NEAR L$022aw_end
720	; Tail Round 1
721	mov	ecx,DWORD [4+esi]
722	mov	edx,DWORD [4+edi]
723	add	ecx,eax
724	mov	eax,0
725	adc	eax,eax
726	add	ecx,edx
727	adc	eax,0
728	dec	ebp
729	mov	DWORD [4+ebx],ecx
730	jz	NEAR L$022aw_end
731	; Tail Round 2
732	mov	ecx,DWORD [8+esi]
733	mov	edx,DWORD [8+edi]
734	add	ecx,eax
735	mov	eax,0
736	adc	eax,eax
737	add	ecx,edx
738	adc	eax,0
739	dec	ebp
740	mov	DWORD [8+ebx],ecx
741	jz	NEAR L$022aw_end
742	; Tail Round 3
743	mov	ecx,DWORD [12+esi]
744	mov	edx,DWORD [12+edi]
745	add	ecx,eax
746	mov	eax,0
747	adc	eax,eax
748	add	ecx,edx
749	adc	eax,0
750	dec	ebp
751	mov	DWORD [12+ebx],ecx
752	jz	NEAR L$022aw_end
753	; Tail Round 4
754	mov	ecx,DWORD [16+esi]
755	mov	edx,DWORD [16+edi]
756	add	ecx,eax
757	mov	eax,0
758	adc	eax,eax
759	add	ecx,edx
760	adc	eax,0
761	dec	ebp
762	mov	DWORD [16+ebx],ecx
763	jz	NEAR L$022aw_end
764	; Tail Round 5
765	mov	ecx,DWORD [20+esi]
766	mov	edx,DWORD [20+edi]
767	add	ecx,eax
768	mov	eax,0
769	adc	eax,eax
770	add	ecx,edx
771	adc	eax,0
772	dec	ebp
773	mov	DWORD [20+ebx],ecx
774	jz	NEAR L$022aw_end
775	; Tail Round 6
776	mov	ecx,DWORD [24+esi]
777	mov	edx,DWORD [24+edi]
778	add	ecx,eax
779	mov	eax,0
780	adc	eax,eax
781	add	ecx,edx
782	adc	eax,0
783	mov	DWORD [24+ebx],ecx
784L$022aw_end:
785	pop	edi
786	pop	esi
787	pop	ebx
788	pop	ebp
789	ret
790global	_bn_sub_words
791align	16
792_bn_sub_words:
793L$_bn_sub_words_begin:
794	push	ebp
795	push	ebx
796	push	esi
797	push	edi
798	;
799	mov	ebx,DWORD [20+esp]
800	mov	esi,DWORD [24+esp]
801	mov	edi,DWORD [28+esp]
802	mov	ebp,DWORD [32+esp]
803	xor	eax,eax
804	and	ebp,4294967288
805	jz	NEAR L$023aw_finish
806L$024aw_loop:
807	; Round 0
808	mov	ecx,DWORD [esi]
809	mov	edx,DWORD [edi]
810	sub	ecx,eax
811	mov	eax,0
812	adc	eax,eax
813	sub	ecx,edx
814	adc	eax,0
815	mov	DWORD [ebx],ecx
816	; Round 1
817	mov	ecx,DWORD [4+esi]
818	mov	edx,DWORD [4+edi]
819	sub	ecx,eax
820	mov	eax,0
821	adc	eax,eax
822	sub	ecx,edx
823	adc	eax,0
824	mov	DWORD [4+ebx],ecx
825	; Round 2
826	mov	ecx,DWORD [8+esi]
827	mov	edx,DWORD [8+edi]
828	sub	ecx,eax
829	mov	eax,0
830	adc	eax,eax
831	sub	ecx,edx
832	adc	eax,0
833	mov	DWORD [8+ebx],ecx
834	; Round 3
835	mov	ecx,DWORD [12+esi]
836	mov	edx,DWORD [12+edi]
837	sub	ecx,eax
838	mov	eax,0
839	adc	eax,eax
840	sub	ecx,edx
841	adc	eax,0
842	mov	DWORD [12+ebx],ecx
843	; Round 4
844	mov	ecx,DWORD [16+esi]
845	mov	edx,DWORD [16+edi]
846	sub	ecx,eax
847	mov	eax,0
848	adc	eax,eax
849	sub	ecx,edx
850	adc	eax,0
851	mov	DWORD [16+ebx],ecx
852	; Round 5
853	mov	ecx,DWORD [20+esi]
854	mov	edx,DWORD [20+edi]
855	sub	ecx,eax
856	mov	eax,0
857	adc	eax,eax
858	sub	ecx,edx
859	adc	eax,0
860	mov	DWORD [20+ebx],ecx
861	; Round 6
862	mov	ecx,DWORD [24+esi]
863	mov	edx,DWORD [24+edi]
864	sub	ecx,eax
865	mov	eax,0
866	adc	eax,eax
867	sub	ecx,edx
868	adc	eax,0
869	mov	DWORD [24+ebx],ecx
870	; Round 7
871	mov	ecx,DWORD [28+esi]
872	mov	edx,DWORD [28+edi]
873	sub	ecx,eax
874	mov	eax,0
875	adc	eax,eax
876	sub	ecx,edx
877	adc	eax,0
878	mov	DWORD [28+ebx],ecx
879	;
880	add	esi,32
881	add	edi,32
882	add	ebx,32
883	sub	ebp,8
884	jnz	NEAR L$024aw_loop
885L$023aw_finish:
886	mov	ebp,DWORD [32+esp]
887	and	ebp,7
888	jz	NEAR L$025aw_end
889	; Tail Round 0
890	mov	ecx,DWORD [esi]
891	mov	edx,DWORD [edi]
892	sub	ecx,eax
893	mov	eax,0
894	adc	eax,eax
895	sub	ecx,edx
896	adc	eax,0
897	dec	ebp
898	mov	DWORD [ebx],ecx
899	jz	NEAR L$025aw_end
900	; Tail Round 1
901	mov	ecx,DWORD [4+esi]
902	mov	edx,DWORD [4+edi]
903	sub	ecx,eax
904	mov	eax,0
905	adc	eax,eax
906	sub	ecx,edx
907	adc	eax,0
908	dec	ebp
909	mov	DWORD [4+ebx],ecx
910	jz	NEAR L$025aw_end
911	; Tail Round 2
912	mov	ecx,DWORD [8+esi]
913	mov	edx,DWORD [8+edi]
914	sub	ecx,eax
915	mov	eax,0
916	adc	eax,eax
917	sub	ecx,edx
918	adc	eax,0
919	dec	ebp
920	mov	DWORD [8+ebx],ecx
921	jz	NEAR L$025aw_end
922	; Tail Round 3
923	mov	ecx,DWORD [12+esi]
924	mov	edx,DWORD [12+edi]
925	sub	ecx,eax
926	mov	eax,0
927	adc	eax,eax
928	sub	ecx,edx
929	adc	eax,0
930	dec	ebp
931	mov	DWORD [12+ebx],ecx
932	jz	NEAR L$025aw_end
933	; Tail Round 4
934	mov	ecx,DWORD [16+esi]
935	mov	edx,DWORD [16+edi]
936	sub	ecx,eax
937	mov	eax,0
938	adc	eax,eax
939	sub	ecx,edx
940	adc	eax,0
941	dec	ebp
942	mov	DWORD [16+ebx],ecx
943	jz	NEAR L$025aw_end
944	; Tail Round 5
945	mov	ecx,DWORD [20+esi]
946	mov	edx,DWORD [20+edi]
947	sub	ecx,eax
948	mov	eax,0
949	adc	eax,eax
950	sub	ecx,edx
951	adc	eax,0
952	dec	ebp
953	mov	DWORD [20+ebx],ecx
954	jz	NEAR L$025aw_end
955	; Tail Round 6
956	mov	ecx,DWORD [24+esi]
957	mov	edx,DWORD [24+edi]
958	sub	ecx,eax
959	mov	eax,0
960	adc	eax,eax
961	sub	ecx,edx
962	adc	eax,0
963	mov	DWORD [24+ebx],ecx
964L$025aw_end:
965	pop	edi
966	pop	esi
967	pop	ebx
968	pop	ebp
969	ret
970global	_bn_sub_part_words
971align	16
972_bn_sub_part_words:
973L$_bn_sub_part_words_begin:
974	push	ebp
975	push	ebx
976	push	esi
977	push	edi
978	;
979	mov	ebx,DWORD [20+esp]
980	mov	esi,DWORD [24+esp]
981	mov	edi,DWORD [28+esp]
982	mov	ebp,DWORD [32+esp]
983	xor	eax,eax
984	and	ebp,4294967288
985	jz	NEAR L$026aw_finish
986L$027aw_loop:
987	; Round 0
988	mov	ecx,DWORD [esi]
989	mov	edx,DWORD [edi]
990	sub	ecx,eax
991	mov	eax,0
992	adc	eax,eax
993	sub	ecx,edx
994	adc	eax,0
995	mov	DWORD [ebx],ecx
996	; Round 1
997	mov	ecx,DWORD [4+esi]
998	mov	edx,DWORD [4+edi]
999	sub	ecx,eax
1000	mov	eax,0
1001	adc	eax,eax
1002	sub	ecx,edx
1003	adc	eax,0
1004	mov	DWORD [4+ebx],ecx
1005	; Round 2
1006	mov	ecx,DWORD [8+esi]
1007	mov	edx,DWORD [8+edi]
1008	sub	ecx,eax
1009	mov	eax,0
1010	adc	eax,eax
1011	sub	ecx,edx
1012	adc	eax,0
1013	mov	DWORD [8+ebx],ecx
1014	; Round 3
1015	mov	ecx,DWORD [12+esi]
1016	mov	edx,DWORD [12+edi]
1017	sub	ecx,eax
1018	mov	eax,0
1019	adc	eax,eax
1020	sub	ecx,edx
1021	adc	eax,0
1022	mov	DWORD [12+ebx],ecx
1023	; Round 4
1024	mov	ecx,DWORD [16+esi]
1025	mov	edx,DWORD [16+edi]
1026	sub	ecx,eax
1027	mov	eax,0
1028	adc	eax,eax
1029	sub	ecx,edx
1030	adc	eax,0
1031	mov	DWORD [16+ebx],ecx
1032	; Round 5
1033	mov	ecx,DWORD [20+esi]
1034	mov	edx,DWORD [20+edi]
1035	sub	ecx,eax
1036	mov	eax,0
1037	adc	eax,eax
1038	sub	ecx,edx
1039	adc	eax,0
1040	mov	DWORD [20+ebx],ecx
1041	; Round 6
1042	mov	ecx,DWORD [24+esi]
1043	mov	edx,DWORD [24+edi]
1044	sub	ecx,eax
1045	mov	eax,0
1046	adc	eax,eax
1047	sub	ecx,edx
1048	adc	eax,0
1049	mov	DWORD [24+ebx],ecx
1050	; Round 7
1051	mov	ecx,DWORD [28+esi]
1052	mov	edx,DWORD [28+edi]
1053	sub	ecx,eax
1054	mov	eax,0
1055	adc	eax,eax
1056	sub	ecx,edx
1057	adc	eax,0
1058	mov	DWORD [28+ebx],ecx
1059	;
1060	add	esi,32
1061	add	edi,32
1062	add	ebx,32
1063	sub	ebp,8
1064	jnz	NEAR L$027aw_loop
1065L$026aw_finish:
1066	mov	ebp,DWORD [32+esp]
1067	and	ebp,7
1068	jz	NEAR L$028aw_end
1069	; Tail Round 0
1070	mov	ecx,DWORD [esi]
1071	mov	edx,DWORD [edi]
1072	sub	ecx,eax
1073	mov	eax,0
1074	adc	eax,eax
1075	sub	ecx,edx
1076	adc	eax,0
1077	mov	DWORD [ebx],ecx
1078	add	esi,4
1079	add	edi,4
1080	add	ebx,4
1081	dec	ebp
1082	jz	NEAR L$028aw_end
1083	; Tail Round 1
1084	mov	ecx,DWORD [esi]
1085	mov	edx,DWORD [edi]
1086	sub	ecx,eax
1087	mov	eax,0
1088	adc	eax,eax
1089	sub	ecx,edx
1090	adc	eax,0
1091	mov	DWORD [ebx],ecx
1092	add	esi,4
1093	add	edi,4
1094	add	ebx,4
1095	dec	ebp
1096	jz	NEAR L$028aw_end
1097	; Tail Round 2
1098	mov	ecx,DWORD [esi]
1099	mov	edx,DWORD [edi]
1100	sub	ecx,eax
1101	mov	eax,0
1102	adc	eax,eax
1103	sub	ecx,edx
1104	adc	eax,0
1105	mov	DWORD [ebx],ecx
1106	add	esi,4
1107	add	edi,4
1108	add	ebx,4
1109	dec	ebp
1110	jz	NEAR L$028aw_end
1111	; Tail Round 3
1112	mov	ecx,DWORD [esi]
1113	mov	edx,DWORD [edi]
1114	sub	ecx,eax
1115	mov	eax,0
1116	adc	eax,eax
1117	sub	ecx,edx
1118	adc	eax,0
1119	mov	DWORD [ebx],ecx
1120	add	esi,4
1121	add	edi,4
1122	add	ebx,4
1123	dec	ebp
1124	jz	NEAR L$028aw_end
1125	; Tail Round 4
1126	mov	ecx,DWORD [esi]
1127	mov	edx,DWORD [edi]
1128	sub	ecx,eax
1129	mov	eax,0
1130	adc	eax,eax
1131	sub	ecx,edx
1132	adc	eax,0
1133	mov	DWORD [ebx],ecx
1134	add	esi,4
1135	add	edi,4
1136	add	ebx,4
1137	dec	ebp
1138	jz	NEAR L$028aw_end
1139	; Tail Round 5
1140	mov	ecx,DWORD [esi]
1141	mov	edx,DWORD [edi]
1142	sub	ecx,eax
1143	mov	eax,0
1144	adc	eax,eax
1145	sub	ecx,edx
1146	adc	eax,0
1147	mov	DWORD [ebx],ecx
1148	add	esi,4
1149	add	edi,4
1150	add	ebx,4
1151	dec	ebp
1152	jz	NEAR L$028aw_end
1153	; Tail Round 6
1154	mov	ecx,DWORD [esi]
1155	mov	edx,DWORD [edi]
1156	sub	ecx,eax
1157	mov	eax,0
1158	adc	eax,eax
1159	sub	ecx,edx
1160	adc	eax,0
1161	mov	DWORD [ebx],ecx
1162	add	esi,4
1163	add	edi,4
1164	add	ebx,4
1165L$028aw_end:
1166	cmp	DWORD [36+esp],0
1167	je	NEAR L$029pw_end
1168	mov	ebp,DWORD [36+esp]
1169	cmp	ebp,0
1170	je	NEAR L$029pw_end
1171	jge	NEAR L$030pw_pos
1172	; pw_neg
1173	mov	edx,0
1174	sub	edx,ebp
1175	mov	ebp,edx
1176	and	ebp,4294967288
1177	jz	NEAR L$031pw_neg_finish
1178L$032pw_neg_loop:
1179	; dl<0 Round 0
1180	mov	ecx,0
1181	mov	edx,DWORD [edi]
1182	sub	ecx,eax
1183	mov	eax,0
1184	adc	eax,eax
1185	sub	ecx,edx
1186	adc	eax,0
1187	mov	DWORD [ebx],ecx
1188	; dl<0 Round 1
1189	mov	ecx,0
1190	mov	edx,DWORD [4+edi]
1191	sub	ecx,eax
1192	mov	eax,0
1193	adc	eax,eax
1194	sub	ecx,edx
1195	adc	eax,0
1196	mov	DWORD [4+ebx],ecx
1197	; dl<0 Round 2
1198	mov	ecx,0
1199	mov	edx,DWORD [8+edi]
1200	sub	ecx,eax
1201	mov	eax,0
1202	adc	eax,eax
1203	sub	ecx,edx
1204	adc	eax,0
1205	mov	DWORD [8+ebx],ecx
1206	; dl<0 Round 3
1207	mov	ecx,0
1208	mov	edx,DWORD [12+edi]
1209	sub	ecx,eax
1210	mov	eax,0
1211	adc	eax,eax
1212	sub	ecx,edx
1213	adc	eax,0
1214	mov	DWORD [12+ebx],ecx
1215	; dl<0 Round 4
1216	mov	ecx,0
1217	mov	edx,DWORD [16+edi]
1218	sub	ecx,eax
1219	mov	eax,0
1220	adc	eax,eax
1221	sub	ecx,edx
1222	adc	eax,0
1223	mov	DWORD [16+ebx],ecx
1224	; dl<0 Round 5
1225	mov	ecx,0
1226	mov	edx,DWORD [20+edi]
1227	sub	ecx,eax
1228	mov	eax,0
1229	adc	eax,eax
1230	sub	ecx,edx
1231	adc	eax,0
1232	mov	DWORD [20+ebx],ecx
1233	; dl<0 Round 6
1234	mov	ecx,0
1235	mov	edx,DWORD [24+edi]
1236	sub	ecx,eax
1237	mov	eax,0
1238	adc	eax,eax
1239	sub	ecx,edx
1240	adc	eax,0
1241	mov	DWORD [24+ebx],ecx
1242	; dl<0 Round 7
1243	mov	ecx,0
1244	mov	edx,DWORD [28+edi]
1245	sub	ecx,eax
1246	mov	eax,0
1247	adc	eax,eax
1248	sub	ecx,edx
1249	adc	eax,0
1250	mov	DWORD [28+ebx],ecx
1251	;
1252	add	edi,32
1253	add	ebx,32
1254	sub	ebp,8
1255	jnz	NEAR L$032pw_neg_loop
1256L$031pw_neg_finish:
1257	mov	edx,DWORD [36+esp]
1258	mov	ebp,0
1259	sub	ebp,edx
1260	and	ebp,7
1261	jz	NEAR L$029pw_end
1262	; dl<0 Tail Round 0
1263	mov	ecx,0
1264	mov	edx,DWORD [edi]
1265	sub	ecx,eax
1266	mov	eax,0
1267	adc	eax,eax
1268	sub	ecx,edx
1269	adc	eax,0
1270	dec	ebp
1271	mov	DWORD [ebx],ecx
1272	jz	NEAR L$029pw_end
1273	; dl<0 Tail Round 1
1274	mov	ecx,0
1275	mov	edx,DWORD [4+edi]
1276	sub	ecx,eax
1277	mov	eax,0
1278	adc	eax,eax
1279	sub	ecx,edx
1280	adc	eax,0
1281	dec	ebp
1282	mov	DWORD [4+ebx],ecx
1283	jz	NEAR L$029pw_end
1284	; dl<0 Tail Round 2
1285	mov	ecx,0
1286	mov	edx,DWORD [8+edi]
1287	sub	ecx,eax
1288	mov	eax,0
1289	adc	eax,eax
1290	sub	ecx,edx
1291	adc	eax,0
1292	dec	ebp
1293	mov	DWORD [8+ebx],ecx
1294	jz	NEAR L$029pw_end
1295	; dl<0 Tail Round 3
1296	mov	ecx,0
1297	mov	edx,DWORD [12+edi]
1298	sub	ecx,eax
1299	mov	eax,0
1300	adc	eax,eax
1301	sub	ecx,edx
1302	adc	eax,0
1303	dec	ebp
1304	mov	DWORD [12+ebx],ecx
1305	jz	NEAR L$029pw_end
1306	; dl<0 Tail Round 4
1307	mov	ecx,0
1308	mov	edx,DWORD [16+edi]
1309	sub	ecx,eax
1310	mov	eax,0
1311	adc	eax,eax
1312	sub	ecx,edx
1313	adc	eax,0
1314	dec	ebp
1315	mov	DWORD [16+ebx],ecx
1316	jz	NEAR L$029pw_end
1317	; dl<0 Tail Round 5
1318	mov	ecx,0
1319	mov	edx,DWORD [20+edi]
1320	sub	ecx,eax
1321	mov	eax,0
1322	adc	eax,eax
1323	sub	ecx,edx
1324	adc	eax,0
1325	dec	ebp
1326	mov	DWORD [20+ebx],ecx
1327	jz	NEAR L$029pw_end
1328	; dl<0 Tail Round 6
1329	mov	ecx,0
1330	mov	edx,DWORD [24+edi]
1331	sub	ecx,eax
1332	mov	eax,0
1333	adc	eax,eax
1334	sub	ecx,edx
1335	adc	eax,0
1336	mov	DWORD [24+ebx],ecx
1337	jmp	NEAR L$029pw_end
1338L$030pw_pos:
1339	and	ebp,4294967288
1340	jz	NEAR L$033pw_pos_finish
1341L$034pw_pos_loop:
1342	; dl>0 Round 0
1343	mov	ecx,DWORD [esi]
1344	sub	ecx,eax
1345	mov	DWORD [ebx],ecx
1346	jnc	NEAR L$035pw_nc0
1347	; dl>0 Round 1
1348	mov	ecx,DWORD [4+esi]
1349	sub	ecx,eax
1350	mov	DWORD [4+ebx],ecx
1351	jnc	NEAR L$036pw_nc1
1352	; dl>0 Round 2
1353	mov	ecx,DWORD [8+esi]
1354	sub	ecx,eax
1355	mov	DWORD [8+ebx],ecx
1356	jnc	NEAR L$037pw_nc2
1357	; dl>0 Round 3
1358	mov	ecx,DWORD [12+esi]
1359	sub	ecx,eax
1360	mov	DWORD [12+ebx],ecx
1361	jnc	NEAR L$038pw_nc3
1362	; dl>0 Round 4
1363	mov	ecx,DWORD [16+esi]
1364	sub	ecx,eax
1365	mov	DWORD [16+ebx],ecx
1366	jnc	NEAR L$039pw_nc4
1367	; dl>0 Round 5
1368	mov	ecx,DWORD [20+esi]
1369	sub	ecx,eax
1370	mov	DWORD [20+ebx],ecx
1371	jnc	NEAR L$040pw_nc5
1372	; dl>0 Round 6
1373	mov	ecx,DWORD [24+esi]
1374	sub	ecx,eax
1375	mov	DWORD [24+ebx],ecx
1376	jnc	NEAR L$041pw_nc6
1377	; dl>0 Round 7
1378	mov	ecx,DWORD [28+esi]
1379	sub	ecx,eax
1380	mov	DWORD [28+ebx],ecx
1381	jnc	NEAR L$042pw_nc7
1382	;
1383	add	esi,32
1384	add	ebx,32
1385	sub	ebp,8
1386	jnz	NEAR L$034pw_pos_loop
1387L$033pw_pos_finish:
1388	mov	ebp,DWORD [36+esp]
1389	and	ebp,7
1390	jz	NEAR L$029pw_end
1391	; dl>0 Tail Round 0
1392	mov	ecx,DWORD [esi]
1393	sub	ecx,eax
1394	mov	DWORD [ebx],ecx
1395	jnc	NEAR L$043pw_tail_nc0
1396	dec	ebp
1397	jz	NEAR L$029pw_end
1398	; dl>0 Tail Round 1
1399	mov	ecx,DWORD [4+esi]
1400	sub	ecx,eax
1401	mov	DWORD [4+ebx],ecx
1402	jnc	NEAR L$044pw_tail_nc1
1403	dec	ebp
1404	jz	NEAR L$029pw_end
1405	; dl>0 Tail Round 2
1406	mov	ecx,DWORD [8+esi]
1407	sub	ecx,eax
1408	mov	DWORD [8+ebx],ecx
1409	jnc	NEAR L$045pw_tail_nc2
1410	dec	ebp
1411	jz	NEAR L$029pw_end
1412	; dl>0 Tail Round 3
1413	mov	ecx,DWORD [12+esi]
1414	sub	ecx,eax
1415	mov	DWORD [12+ebx],ecx
1416	jnc	NEAR L$046pw_tail_nc3
1417	dec	ebp
1418	jz	NEAR L$029pw_end
1419	; dl>0 Tail Round 4
1420	mov	ecx,DWORD [16+esi]
1421	sub	ecx,eax
1422	mov	DWORD [16+ebx],ecx
1423	jnc	NEAR L$047pw_tail_nc4
1424	dec	ebp
1425	jz	NEAR L$029pw_end
1426	; dl>0 Tail Round 5
1427	mov	ecx,DWORD [20+esi]
1428	sub	ecx,eax
1429	mov	DWORD [20+ebx],ecx
1430	jnc	NEAR L$048pw_tail_nc5
1431	dec	ebp
1432	jz	NEAR L$029pw_end
1433	; dl>0 Tail Round 6
1434	mov	ecx,DWORD [24+esi]
1435	sub	ecx,eax
1436	mov	DWORD [24+ebx],ecx
1437	jnc	NEAR L$049pw_tail_nc6
1438	mov	eax,1
1439	jmp	NEAR L$029pw_end
1440L$050pw_nc_loop:
1441	mov	ecx,DWORD [esi]
1442	mov	DWORD [ebx],ecx
1443L$035pw_nc0:
1444	mov	ecx,DWORD [4+esi]
1445	mov	DWORD [4+ebx],ecx
1446L$036pw_nc1:
1447	mov	ecx,DWORD [8+esi]
1448	mov	DWORD [8+ebx],ecx
1449L$037pw_nc2:
1450	mov	ecx,DWORD [12+esi]
1451	mov	DWORD [12+ebx],ecx
1452L$038pw_nc3:
1453	mov	ecx,DWORD [16+esi]
1454	mov	DWORD [16+ebx],ecx
1455L$039pw_nc4:
1456	mov	ecx,DWORD [20+esi]
1457	mov	DWORD [20+ebx],ecx
1458L$040pw_nc5:
1459	mov	ecx,DWORD [24+esi]
1460	mov	DWORD [24+ebx],ecx
1461L$041pw_nc6:
1462	mov	ecx,DWORD [28+esi]
1463	mov	DWORD [28+ebx],ecx
1464L$042pw_nc7:
1465	;
1466	add	esi,32
1467	add	ebx,32
1468	sub	ebp,8
1469	jnz	NEAR L$050pw_nc_loop
1470	mov	ebp,DWORD [36+esp]
1471	and	ebp,7
1472	jz	NEAR L$051pw_nc_end
1473	mov	ecx,DWORD [esi]
1474	mov	DWORD [ebx],ecx
1475L$043pw_tail_nc0:
1476	dec	ebp
1477	jz	NEAR L$051pw_nc_end
1478	mov	ecx,DWORD [4+esi]
1479	mov	DWORD [4+ebx],ecx
1480L$044pw_tail_nc1:
1481	dec	ebp
1482	jz	NEAR L$051pw_nc_end
1483	mov	ecx,DWORD [8+esi]
1484	mov	DWORD [8+ebx],ecx
1485L$045pw_tail_nc2:
1486	dec	ebp
1487	jz	NEAR L$051pw_nc_end
1488	mov	ecx,DWORD [12+esi]
1489	mov	DWORD [12+ebx],ecx
1490L$046pw_tail_nc3:
1491	dec	ebp
1492	jz	NEAR L$051pw_nc_end
1493	mov	ecx,DWORD [16+esi]
1494	mov	DWORD [16+ebx],ecx
1495L$047pw_tail_nc4:
1496	dec	ebp
1497	jz	NEAR L$051pw_nc_end
1498	mov	ecx,DWORD [20+esi]
1499	mov	DWORD [20+ebx],ecx
1500L$048pw_tail_nc5:
1501	dec	ebp
1502	jz	NEAR L$051pw_nc_end
1503	mov	ecx,DWORD [24+esi]
1504	mov	DWORD [24+ebx],ecx
1505L$049pw_tail_nc6:
1506L$051pw_nc_end:
1507	mov	eax,0
1508L$029pw_end:
1509	pop	edi
1510	pop	esi
1511	pop	ebx
1512	pop	ebp
1513	ret
1514segment	.bss
1515common	_OPENSSL_ia32cap_P 16
1516