• 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.globl	_GFp_bn_mul_mont
10.private_extern	_GFp_bn_mul_mont
11.align	4
12_GFp_bn_mul_mont:
13L_GFp_bn_mul_mont_begin:
14	pushl	%ebp
15	pushl	%ebx
16	pushl	%esi
17	pushl	%edi
18	xorl	%eax,%eax
19	movl	40(%esp),%edi
20	leal	20(%esp),%esi
21	leal	24(%esp),%edx
22	addl	$2,%edi
23	negl	%edi
24	leal	-32(%esp,%edi,4),%ebp
25	negl	%edi
26	movl	%ebp,%eax
27	subl	%edx,%eax
28	andl	$2047,%eax
29	subl	%eax,%ebp
30	xorl	%ebp,%edx
31	andl	$2048,%edx
32	xorl	$2048,%edx
33	subl	%edx,%ebp
34	andl	$-64,%ebp
35	movl	%esp,%eax
36	subl	%ebp,%eax
37	andl	$-4096,%eax
38	movl	%esp,%edx
39	leal	(%ebp,%eax,1),%esp
40	movl	(%esp),%eax
41	cmpl	%ebp,%esp
42	ja	L000page_walk
43	jmp	L001page_walk_done
44.align	4,0x90
45L000page_walk:
46	leal	-4096(%esp),%esp
47	movl	(%esp),%eax
48	cmpl	%ebp,%esp
49	ja	L000page_walk
50L001page_walk_done:
51	movl	(%esi),%eax
52	movl	4(%esi),%ebx
53	movl	8(%esi),%ecx
54	movl	12(%esi),%ebp
55	movl	16(%esi),%esi
56	movl	(%esi),%esi
57	movl	%eax,4(%esp)
58	movl	%ebx,8(%esp)
59	movl	%ecx,12(%esp)
60	movl	%ebp,16(%esp)
61	movl	%esi,20(%esp)
62	leal	-3(%edi),%ebx
63	movl	%edx,24(%esp)
64	call	L002PIC_me_up
65L002PIC_me_up:
66	popl	%eax
67	movl	L_GFp_ia32cap_P$non_lazy_ptr-L002PIC_me_up(%eax),%eax
68	btl	$26,(%eax)
69	movl	$-1,%eax
70	movd	%eax,%mm7
71	movl	8(%esp),%esi
72	movl	12(%esp),%edi
73	movl	16(%esp),%ebp
74	xorl	%edx,%edx
75	xorl	%ecx,%ecx
76	movd	(%edi),%mm4
77	movd	(%esi),%mm5
78	movd	(%ebp),%mm3
79	pmuludq	%mm4,%mm5
80	movq	%mm5,%mm2
81	movq	%mm5,%mm0
82	pand	%mm7,%mm0
83	pmuludq	20(%esp),%mm5
84	pmuludq	%mm5,%mm3
85	paddq	%mm0,%mm3
86	movd	4(%ebp),%mm1
87	movd	4(%esi),%mm0
88	psrlq	$32,%mm2
89	psrlq	$32,%mm3
90	incl	%ecx
91.align	4,0x90
92L0031st:
93	pmuludq	%mm4,%mm0
94	pmuludq	%mm5,%mm1
95	paddq	%mm0,%mm2
96	paddq	%mm1,%mm3
97	movq	%mm2,%mm0
98	pand	%mm7,%mm0
99	movd	4(%ebp,%ecx,4),%mm1
100	paddq	%mm0,%mm3
101	movd	4(%esi,%ecx,4),%mm0
102	psrlq	$32,%mm2
103	movd	%mm3,28(%esp,%ecx,4)
104	psrlq	$32,%mm3
105	leal	1(%ecx),%ecx
106	cmpl	%ebx,%ecx
107	jl	L0031st
108	pmuludq	%mm4,%mm0
109	pmuludq	%mm5,%mm1
110	paddq	%mm0,%mm2
111	paddq	%mm1,%mm3
112	movq	%mm2,%mm0
113	pand	%mm7,%mm0
114	paddq	%mm0,%mm3
115	movd	%mm3,28(%esp,%ecx,4)
116	psrlq	$32,%mm2
117	psrlq	$32,%mm3
118	paddq	%mm2,%mm3
119	movq	%mm3,32(%esp,%ebx,4)
120	incl	%edx
121L004outer:
122	xorl	%ecx,%ecx
123	movd	(%edi,%edx,4),%mm4
124	movd	(%esi),%mm5
125	movd	32(%esp),%mm6
126	movd	(%ebp),%mm3
127	pmuludq	%mm4,%mm5
128	paddq	%mm6,%mm5
129	movq	%mm5,%mm0
130	movq	%mm5,%mm2
131	pand	%mm7,%mm0
132	pmuludq	20(%esp),%mm5
133	pmuludq	%mm5,%mm3
134	paddq	%mm0,%mm3
135	movd	36(%esp),%mm6
136	movd	4(%ebp),%mm1
137	movd	4(%esi),%mm0
138	psrlq	$32,%mm2
139	psrlq	$32,%mm3
140	paddq	%mm6,%mm2
141	incl	%ecx
142	decl	%ebx
143L005inner:
144	pmuludq	%mm4,%mm0
145	pmuludq	%mm5,%mm1
146	paddq	%mm0,%mm2
147	paddq	%mm1,%mm3
148	movq	%mm2,%mm0
149	movd	36(%esp,%ecx,4),%mm6
150	pand	%mm7,%mm0
151	movd	4(%ebp,%ecx,4),%mm1
152	paddq	%mm0,%mm3
153	movd	4(%esi,%ecx,4),%mm0
154	psrlq	$32,%mm2
155	movd	%mm3,28(%esp,%ecx,4)
156	psrlq	$32,%mm3
157	paddq	%mm6,%mm2
158	decl	%ebx
159	leal	1(%ecx),%ecx
160	jnz	L005inner
161	movl	%ecx,%ebx
162	pmuludq	%mm4,%mm0
163	pmuludq	%mm5,%mm1
164	paddq	%mm0,%mm2
165	paddq	%mm1,%mm3
166	movq	%mm2,%mm0
167	pand	%mm7,%mm0
168	paddq	%mm0,%mm3
169	movd	%mm3,28(%esp,%ecx,4)
170	psrlq	$32,%mm2
171	psrlq	$32,%mm3
172	movd	36(%esp,%ebx,4),%mm6
173	paddq	%mm2,%mm3
174	paddq	%mm6,%mm3
175	movq	%mm3,32(%esp,%ebx,4)
176	leal	1(%edx),%edx
177	cmpl	%ebx,%edx
178	jle	L004outer
179	emms
180.align	4,0x90
181L006common_tail:
182	movl	16(%esp),%ebp
183	movl	4(%esp),%edi
184	leal	32(%esp),%esi
185	movl	(%esi),%eax
186	movl	%ebx,%ecx
187	xorl	%edx,%edx
188.align	4,0x90
189L007sub:
190	sbbl	(%ebp,%edx,4),%eax
191	movl	%eax,(%edi,%edx,4)
192	decl	%ecx
193	movl	4(%esi,%edx,4),%eax
194	leal	1(%edx),%edx
195	jge	L007sub
196	sbbl	$0,%eax
197	movl	$-1,%edx
198	xorl	%eax,%edx
199	jmp	L008copy
200.align	4,0x90
201L008copy:
202	movl	32(%esp,%ebx,4),%esi
203	movl	(%edi,%ebx,4),%ebp
204	movl	%ecx,32(%esp,%ebx,4)
205	andl	%eax,%esi
206	andl	%edx,%ebp
207	orl	%esi,%ebp
208	movl	%ebp,(%edi,%ebx,4)
209	decl	%ebx
210	jge	L008copy
211	movl	24(%esp),%esp
212	movl	$1,%eax
213	popl	%edi
214	popl	%esi
215	popl	%ebx
216	popl	%ebp
217	ret
218.byte	77,111,110,116,103,111,109,101,114,121,32,77,117,108,116,105
219.byte	112,108,105,99,97,116,105,111,110,32,102,111,114,32,120,56
220.byte	54,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121
221.byte	32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46
222.byte	111,114,103,62,0
223.section __IMPORT,__pointers,non_lazy_symbol_pointers
224L_GFp_ia32cap_P$non_lazy_ptr:
225.indirect_symbol	_GFp_ia32cap_P
226.long	0
227#endif
228