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