Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(209)

Side by Side Diff: third_party/boringssl/win-x86/crypto/bn/x86-mont.asm

Issue 2695223006: Roll src/third_party/boringssl/src dc8c1d962..0f28691d3 (Closed)
Patch Set: Use correct parent. Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 %ifidn __OUTPUT_FORMAT__,obj 1 %ifidn __OUTPUT_FORMAT__,obj
2 section code use32 class=code align=64 2 section code use32 class=code align=64
3 %elifidn __OUTPUT_FORMAT__,win32 3 %elifidn __OUTPUT_FORMAT__,win32
4 %ifdef __YASM_VERSION_ID__ 4 %ifdef __YASM_VERSION_ID__
5 %if __YASM_VERSION_ID__ < 01010000h 5 %if __YASM_VERSION_ID__ < 01010000h
6 %error yasm version 1.1.0 or later needed. 6 %error yasm version 1.1.0 or later needed.
7 %endif 7 %endif
8 ; Yasm automatically includes .00 and complains about redefining it. 8 ; Yasm automatically includes .00 and complains about redefining it.
9 ; https://www.tortall.net/projects/yasm/manual/html/objfmt-win32-safeseh.html 9 ; https://www.tortall.net/projects/yasm/manual/html/objfmt-win32-safeseh.html
10 %else 10 %else
(...skipping 11 matching lines...) Expand all
22 push ebp 22 push ebp
23 push ebx 23 push ebx
24 push esi 24 push esi
25 push edi 25 push edi
26 xor eax,eax 26 xor eax,eax
27 mov edi,DWORD [40+esp] 27 mov edi,DWORD [40+esp]
28 cmp edi,4 28 cmp edi,4
29 jl NEAR L$000just_leave 29 jl NEAR L$000just_leave
30 lea esi,[20+esp] 30 lea esi,[20+esp]
31 lea edx,[24+esp] 31 lea edx,[24+esp]
32 mov ebp,esp
33 add edi,2 32 add edi,2
34 neg edi 33 neg edi
35 » lea» esp,[edi*4+esp-32] 34 » lea» ebp,[edi*4+esp-32]
36 neg edi 35 neg edi
37 » mov» eax,esp 36 » mov» eax,ebp
38 sub eax,edx 37 sub eax,edx
39 and eax,2047 38 and eax,2047
40 » sub» esp,eax 39 » sub» ebp,eax
41 » xor» edx,esp 40 » xor» edx,ebp
42 and edx,2048 41 and edx,2048
43 xor edx,2048 42 xor edx,2048
44 » sub» esp,edx 43 » sub» ebp,edx
45 » and» esp,-64 44 » and» ebp,-64
45 » mov» eax,esp
46 » sub» eax,ebp
47 » and» eax,-4096
48 » mov» edx,esp
49 » lea» esp,[eax*1+ebp]
50 » mov» eax,DWORD [esp]
51 » cmp» esp,ebp
52 » ja» NEAR L$001page_walk
53 » jmp» NEAR L$002page_walk_done
54 align» 16
55 L$001page_walk:
56 » lea» esp,[esp-4096]
57 » mov» eax,DWORD [esp]
58 » cmp» esp,ebp
59 » ja» NEAR L$001page_walk
60 L$002page_walk_done:
46 mov eax,DWORD [esi] 61 mov eax,DWORD [esi]
47 mov ebx,DWORD [4+esi] 62 mov ebx,DWORD [4+esi]
48 mov ecx,DWORD [8+esi] 63 mov ecx,DWORD [8+esi]
49 » mov» edx,DWORD [12+esi] 64 » mov» ebp,DWORD [12+esi]
50 mov esi,DWORD [16+esi] 65 mov esi,DWORD [16+esi]
51 mov esi,DWORD [esi] 66 mov esi,DWORD [esi]
52 mov DWORD [4+esp],eax 67 mov DWORD [4+esp],eax
53 mov DWORD [8+esp],ebx 68 mov DWORD [8+esp],ebx
54 mov DWORD [12+esp],ecx 69 mov DWORD [12+esp],ecx
55 » mov» DWORD [16+esp],edx 70 » mov» DWORD [16+esp],ebp
56 mov DWORD [20+esp],esi 71 mov DWORD [20+esp],esi
57 lea ebx,[edi-3] 72 lea ebx,[edi-3]
58 » mov» DWORD [24+esp],ebp 73 » mov» DWORD [24+esp],edx
59 lea eax,[_OPENSSL_ia32cap_P] 74 lea eax,[_OPENSSL_ia32cap_P]
60 bt DWORD [eax],26 75 bt DWORD [eax],26
61 » jnc» NEAR L$001non_sse2 76 » jnc» NEAR L$003non_sse2
62 mov eax,-1 77 mov eax,-1
63 movd mm7,eax 78 movd mm7,eax
64 mov esi,DWORD [8+esp] 79 mov esi,DWORD [8+esp]
65 mov edi,DWORD [12+esp] 80 mov edi,DWORD [12+esp]
66 mov ebp,DWORD [16+esp] 81 mov ebp,DWORD [16+esp]
67 xor edx,edx 82 xor edx,edx
68 xor ecx,ecx 83 xor ecx,ecx
69 movd mm4,DWORD [edi] 84 movd mm4,DWORD [edi]
70 movd mm5,DWORD [esi] 85 movd mm5,DWORD [esi]
71 movd mm3,DWORD [ebp] 86 movd mm3,DWORD [ebp]
72 pmuludq mm5,mm4 87 pmuludq mm5,mm4
73 movq mm2,mm5 88 movq mm2,mm5
74 movq mm0,mm5 89 movq mm0,mm5
75 pand mm0,mm7 90 pand mm0,mm7
76 pmuludq mm5,[20+esp] 91 pmuludq mm5,[20+esp]
77 pmuludq mm3,mm5 92 pmuludq mm3,mm5
78 paddq mm3,mm0 93 paddq mm3,mm0
79 movd mm1,DWORD [4+ebp] 94 movd mm1,DWORD [4+ebp]
80 movd mm0,DWORD [4+esi] 95 movd mm0,DWORD [4+esi]
81 psrlq mm2,32 96 psrlq mm2,32
82 psrlq mm3,32 97 psrlq mm3,32
83 inc ecx 98 inc ecx
84 align 16 99 align 16
85 L$0021st: 100 L$0041st:
86 pmuludq mm0,mm4 101 pmuludq mm0,mm4
87 pmuludq mm1,mm5 102 pmuludq mm1,mm5
88 paddq mm2,mm0 103 paddq mm2,mm0
89 paddq mm3,mm1 104 paddq mm3,mm1
90 movq mm0,mm2 105 movq mm0,mm2
91 pand mm0,mm7 106 pand mm0,mm7
92 movd mm1,DWORD [4+ecx*4+ebp] 107 movd mm1,DWORD [4+ecx*4+ebp]
93 paddq mm3,mm0 108 paddq mm3,mm0
94 movd mm0,DWORD [4+ecx*4+esi] 109 movd mm0,DWORD [4+ecx*4+esi]
95 psrlq mm2,32 110 psrlq mm2,32
96 movd DWORD [28+ecx*4+esp],mm3 111 movd DWORD [28+ecx*4+esp],mm3
97 psrlq mm3,32 112 psrlq mm3,32
98 lea ecx,[1+ecx] 113 lea ecx,[1+ecx]
99 cmp ecx,ebx 114 cmp ecx,ebx
100 » jl» NEAR L$0021st 115 » jl» NEAR L$0041st
101 pmuludq mm0,mm4 116 pmuludq mm0,mm4
102 pmuludq mm1,mm5 117 pmuludq mm1,mm5
103 paddq mm2,mm0 118 paddq mm2,mm0
104 paddq mm3,mm1 119 paddq mm3,mm1
105 movq mm0,mm2 120 movq mm0,mm2
106 pand mm0,mm7 121 pand mm0,mm7
107 paddq mm3,mm0 122 paddq mm3,mm0
108 movd DWORD [28+ecx*4+esp],mm3 123 movd DWORD [28+ecx*4+esp],mm3
109 psrlq mm2,32 124 psrlq mm2,32
110 psrlq mm3,32 125 psrlq mm3,32
111 paddq mm3,mm2 126 paddq mm3,mm2
112 movq [32+ebx*4+esp],mm3 127 movq [32+ebx*4+esp],mm3
113 inc edx 128 inc edx
114 L$003outer: 129 L$005outer:
115 xor ecx,ecx 130 xor ecx,ecx
116 movd mm4,DWORD [edx*4+edi] 131 movd mm4,DWORD [edx*4+edi]
117 movd mm5,DWORD [esi] 132 movd mm5,DWORD [esi]
118 movd mm6,DWORD [32+esp] 133 movd mm6,DWORD [32+esp]
119 movd mm3,DWORD [ebp] 134 movd mm3,DWORD [ebp]
120 pmuludq mm5,mm4 135 pmuludq mm5,mm4
121 paddq mm5,mm6 136 paddq mm5,mm6
122 movq mm0,mm5 137 movq mm0,mm5
123 movq mm2,mm5 138 movq mm2,mm5
124 pand mm0,mm7 139 pand mm0,mm7
125 pmuludq mm5,[20+esp] 140 pmuludq mm5,[20+esp]
126 pmuludq mm3,mm5 141 pmuludq mm3,mm5
127 paddq mm3,mm0 142 paddq mm3,mm0
128 movd mm6,DWORD [36+esp] 143 movd mm6,DWORD [36+esp]
129 movd mm1,DWORD [4+ebp] 144 movd mm1,DWORD [4+ebp]
130 movd mm0,DWORD [4+esi] 145 movd mm0,DWORD [4+esi]
131 psrlq mm2,32 146 psrlq mm2,32
132 psrlq mm3,32 147 psrlq mm3,32
133 paddq mm2,mm6 148 paddq mm2,mm6
134 inc ecx 149 inc ecx
135 dec ebx 150 dec ebx
136 L$004inner: 151 L$006inner:
137 pmuludq mm0,mm4 152 pmuludq mm0,mm4
138 pmuludq mm1,mm5 153 pmuludq mm1,mm5
139 paddq mm2,mm0 154 paddq mm2,mm0
140 paddq mm3,mm1 155 paddq mm3,mm1
141 movq mm0,mm2 156 movq mm0,mm2
142 movd mm6,DWORD [36+ecx*4+esp] 157 movd mm6,DWORD [36+ecx*4+esp]
143 pand mm0,mm7 158 pand mm0,mm7
144 movd mm1,DWORD [4+ecx*4+ebp] 159 movd mm1,DWORD [4+ecx*4+ebp]
145 paddq mm3,mm0 160 paddq mm3,mm0
146 movd mm0,DWORD [4+ecx*4+esi] 161 movd mm0,DWORD [4+ecx*4+esi]
147 psrlq mm2,32 162 psrlq mm2,32
148 movd DWORD [28+ecx*4+esp],mm3 163 movd DWORD [28+ecx*4+esp],mm3
149 psrlq mm3,32 164 psrlq mm3,32
150 paddq mm2,mm6 165 paddq mm2,mm6
151 dec ebx 166 dec ebx
152 lea ecx,[1+ecx] 167 lea ecx,[1+ecx]
153 » jnz» NEAR L$004inner 168 » jnz» NEAR L$006inner
154 mov ebx,ecx 169 mov ebx,ecx
155 pmuludq mm0,mm4 170 pmuludq mm0,mm4
156 pmuludq mm1,mm5 171 pmuludq mm1,mm5
157 paddq mm2,mm0 172 paddq mm2,mm0
158 paddq mm3,mm1 173 paddq mm3,mm1
159 movq mm0,mm2 174 movq mm0,mm2
160 pand mm0,mm7 175 pand mm0,mm7
161 paddq mm3,mm0 176 paddq mm3,mm0
162 movd DWORD [28+ecx*4+esp],mm3 177 movd DWORD [28+ecx*4+esp],mm3
163 psrlq mm2,32 178 psrlq mm2,32
164 psrlq mm3,32 179 psrlq mm3,32
165 movd mm6,DWORD [36+ebx*4+esp] 180 movd mm6,DWORD [36+ebx*4+esp]
166 paddq mm3,mm2 181 paddq mm3,mm2
167 paddq mm3,mm6 182 paddq mm3,mm6
168 movq [32+ebx*4+esp],mm3 183 movq [32+ebx*4+esp],mm3
169 lea edx,[1+edx] 184 lea edx,[1+edx]
170 cmp edx,ebx 185 cmp edx,ebx
171 » jle» NEAR L$003outer 186 » jle» NEAR L$005outer
172 emms 187 emms
173 » jmp» NEAR L$005common_tail 188 » jmp» NEAR L$007common_tail
174 align 16 189 align 16
175 L$001non_sse2: 190 L$003non_sse2:
176 mov esi,DWORD [8+esp] 191 mov esi,DWORD [8+esp]
177 lea ebp,[1+ebx] 192 lea ebp,[1+ebx]
178 mov edi,DWORD [12+esp] 193 mov edi,DWORD [12+esp]
179 xor ecx,ecx 194 xor ecx,ecx
180 mov edx,esi 195 mov edx,esi
181 and ebp,1 196 and ebp,1
182 sub edx,edi 197 sub edx,edi
183 lea eax,[4+ebx*4+edi] 198 lea eax,[4+ebx*4+edi]
184 or ebp,edx 199 or ebp,edx
185 mov edi,DWORD [edi] 200 mov edi,DWORD [edi]
186 » jz» NEAR L$006bn_sqr_mont 201 » jz» NEAR L$008bn_sqr_mont
187 mov DWORD [28+esp],eax 202 mov DWORD [28+esp],eax
188 mov eax,DWORD [esi] 203 mov eax,DWORD [esi]
189 xor edx,edx 204 xor edx,edx
190 align 16 205 align 16
191 L$007mull: 206 L$009mull:
192 mov ebp,edx 207 mov ebp,edx
193 mul edi 208 mul edi
194 add ebp,eax 209 add ebp,eax
195 lea ecx,[1+ecx] 210 lea ecx,[1+ecx]
196 adc edx,0 211 adc edx,0
197 mov eax,DWORD [ecx*4+esi] 212 mov eax,DWORD [ecx*4+esi]
198 cmp ecx,ebx 213 cmp ecx,ebx
199 mov DWORD [28+ecx*4+esp],ebp 214 mov DWORD [28+ecx*4+esp],ebp
200 » jl» NEAR L$007mull 215 » jl» NEAR L$009mull
201 mov ebp,edx 216 mov ebp,edx
202 mul edi 217 mul edi
203 mov edi,DWORD [20+esp] 218 mov edi,DWORD [20+esp]
204 add eax,ebp 219 add eax,ebp
205 mov esi,DWORD [16+esp] 220 mov esi,DWORD [16+esp]
206 adc edx,0 221 adc edx,0
207 imul edi,DWORD [32+esp] 222 imul edi,DWORD [32+esp]
208 mov DWORD [32+ebx*4+esp],eax 223 mov DWORD [32+ebx*4+esp],eax
209 xor ecx,ecx 224 xor ecx,ecx
210 mov DWORD [36+ebx*4+esp],edx 225 mov DWORD [36+ebx*4+esp],edx
211 mov DWORD [40+ebx*4+esp],ecx 226 mov DWORD [40+ebx*4+esp],ecx
212 mov eax,DWORD [esi] 227 mov eax,DWORD [esi]
213 mul edi 228 mul edi
214 add eax,DWORD [32+esp] 229 add eax,DWORD [32+esp]
215 mov eax,DWORD [4+esi] 230 mov eax,DWORD [4+esi]
216 adc edx,0 231 adc edx,0
217 inc ecx 232 inc ecx
218 » jmp» NEAR L$0082ndmadd 233 » jmp» NEAR L$0102ndmadd
219 align 16 234 align 16
220 L$0091stmadd: 235 L$0111stmadd:
221 mov ebp,edx 236 mov ebp,edx
222 mul edi 237 mul edi
223 add ebp,DWORD [32+ecx*4+esp] 238 add ebp,DWORD [32+ecx*4+esp]
224 lea ecx,[1+ecx] 239 lea ecx,[1+ecx]
225 adc edx,0 240 adc edx,0
226 add ebp,eax 241 add ebp,eax
227 mov eax,DWORD [ecx*4+esi] 242 mov eax,DWORD [ecx*4+esi]
228 adc edx,0 243 adc edx,0
229 cmp ecx,ebx 244 cmp ecx,ebx
230 mov DWORD [28+ecx*4+esp],ebp 245 mov DWORD [28+ecx*4+esp],ebp
231 » jl» NEAR L$0091stmadd 246 » jl» NEAR L$0111stmadd
232 mov ebp,edx 247 mov ebp,edx
233 mul edi 248 mul edi
234 add eax,DWORD [32+ebx*4+esp] 249 add eax,DWORD [32+ebx*4+esp]
235 mov edi,DWORD [20+esp] 250 mov edi,DWORD [20+esp]
236 adc edx,0 251 adc edx,0
237 mov esi,DWORD [16+esp] 252 mov esi,DWORD [16+esp]
238 add ebp,eax 253 add ebp,eax
239 adc edx,0 254 adc edx,0
240 imul edi,DWORD [32+esp] 255 imul edi,DWORD [32+esp]
241 xor ecx,ecx 256 xor ecx,ecx
242 add edx,DWORD [36+ebx*4+esp] 257 add edx,DWORD [36+ebx*4+esp]
243 mov DWORD [32+ebx*4+esp],ebp 258 mov DWORD [32+ebx*4+esp],ebp
244 adc ecx,0 259 adc ecx,0
245 mov eax,DWORD [esi] 260 mov eax,DWORD [esi]
246 mov DWORD [36+ebx*4+esp],edx 261 mov DWORD [36+ebx*4+esp],edx
247 mov DWORD [40+ebx*4+esp],ecx 262 mov DWORD [40+ebx*4+esp],ecx
248 mul edi 263 mul edi
249 add eax,DWORD [32+esp] 264 add eax,DWORD [32+esp]
250 mov eax,DWORD [4+esi] 265 mov eax,DWORD [4+esi]
251 adc edx,0 266 adc edx,0
252 mov ecx,1 267 mov ecx,1
253 align 16 268 align 16
254 L$0082ndmadd: 269 L$0102ndmadd:
255 mov ebp,edx 270 mov ebp,edx
256 mul edi 271 mul edi
257 add ebp,DWORD [32+ecx*4+esp] 272 add ebp,DWORD [32+ecx*4+esp]
258 lea ecx,[1+ecx] 273 lea ecx,[1+ecx]
259 adc edx,0 274 adc edx,0
260 add ebp,eax 275 add ebp,eax
261 mov eax,DWORD [ecx*4+esi] 276 mov eax,DWORD [ecx*4+esi]
262 adc edx,0 277 adc edx,0
263 cmp ecx,ebx 278 cmp ecx,ebx
264 mov DWORD [24+ecx*4+esp],ebp 279 mov DWORD [24+ecx*4+esp],ebp
265 » jl» NEAR L$0082ndmadd 280 » jl» NEAR L$0102ndmadd
266 mov ebp,edx 281 mov ebp,edx
267 mul edi 282 mul edi
268 add ebp,DWORD [32+ebx*4+esp] 283 add ebp,DWORD [32+ebx*4+esp]
269 adc edx,0 284 adc edx,0
270 add ebp,eax 285 add ebp,eax
271 adc edx,0 286 adc edx,0
272 mov DWORD [28+ebx*4+esp],ebp 287 mov DWORD [28+ebx*4+esp],ebp
273 xor eax,eax 288 xor eax,eax
274 mov ecx,DWORD [12+esp] 289 mov ecx,DWORD [12+esp]
275 add edx,DWORD [36+ebx*4+esp] 290 add edx,DWORD [36+ebx*4+esp]
276 adc eax,DWORD [40+ebx*4+esp] 291 adc eax,DWORD [40+ebx*4+esp]
277 lea ecx,[4+ecx] 292 lea ecx,[4+ecx]
278 mov DWORD [32+ebx*4+esp],edx 293 mov DWORD [32+ebx*4+esp],edx
279 cmp ecx,DWORD [28+esp] 294 cmp ecx,DWORD [28+esp]
280 mov DWORD [36+ebx*4+esp],eax 295 mov DWORD [36+ebx*4+esp],eax
281 » je» NEAR L$005common_tail 296 » je» NEAR L$007common_tail
282 mov edi,DWORD [ecx] 297 mov edi,DWORD [ecx]
283 mov esi,DWORD [8+esp] 298 mov esi,DWORD [8+esp]
284 mov DWORD [12+esp],ecx 299 mov DWORD [12+esp],ecx
285 xor ecx,ecx 300 xor ecx,ecx
286 xor edx,edx 301 xor edx,edx
287 mov eax,DWORD [esi] 302 mov eax,DWORD [esi]
288 » jmp» NEAR L$0091stmadd 303 » jmp» NEAR L$0111stmadd
289 align 16 304 align 16
290 L$006bn_sqr_mont: 305 L$008bn_sqr_mont:
291 mov DWORD [esp],ebx 306 mov DWORD [esp],ebx
292 mov DWORD [12+esp],ecx 307 mov DWORD [12+esp],ecx
293 mov eax,edi 308 mov eax,edi
294 mul edi 309 mul edi
295 mov DWORD [32+esp],eax 310 mov DWORD [32+esp],eax
296 mov ebx,edx 311 mov ebx,edx
297 shr edx,1 312 shr edx,1
298 and ebx,1 313 and ebx,1
299 inc ecx 314 inc ecx
300 align 16 315 align 16
301 L$010sqr: 316 L$012sqr:
302 mov eax,DWORD [ecx*4+esi] 317 mov eax,DWORD [ecx*4+esi]
303 mov ebp,edx 318 mov ebp,edx
304 mul edi 319 mul edi
305 add eax,ebp 320 add eax,ebp
306 lea ecx,[1+ecx] 321 lea ecx,[1+ecx]
307 adc edx,0 322 adc edx,0
308 lea ebp,[eax*2+ebx] 323 lea ebp,[eax*2+ebx]
309 shr eax,31 324 shr eax,31
310 cmp ecx,DWORD [esp] 325 cmp ecx,DWORD [esp]
311 mov ebx,eax 326 mov ebx,eax
312 mov DWORD [28+ecx*4+esp],ebp 327 mov DWORD [28+ecx*4+esp],ebp
313 » jl» NEAR L$010sqr 328 » jl» NEAR L$012sqr
314 mov eax,DWORD [ecx*4+esi] 329 mov eax,DWORD [ecx*4+esi]
315 mov ebp,edx 330 mov ebp,edx
316 mul edi 331 mul edi
317 add eax,ebp 332 add eax,ebp
318 mov edi,DWORD [20+esp] 333 mov edi,DWORD [20+esp]
319 adc edx,0 334 adc edx,0
320 mov esi,DWORD [16+esp] 335 mov esi,DWORD [16+esp]
321 lea ebp,[eax*2+ebx] 336 lea ebp,[eax*2+ebx]
322 imul edi,DWORD [32+esp] 337 imul edi,DWORD [32+esp]
323 shr eax,31 338 shr eax,31
324 mov DWORD [32+ecx*4+esp],ebp 339 mov DWORD [32+ecx*4+esp],ebp
325 lea ebp,[edx*2+eax] 340 lea ebp,[edx*2+eax]
326 mov eax,DWORD [esi] 341 mov eax,DWORD [esi]
327 shr edx,31 342 shr edx,31
328 mov DWORD [36+ecx*4+esp],ebp 343 mov DWORD [36+ecx*4+esp],ebp
329 mov DWORD [40+ecx*4+esp],edx 344 mov DWORD [40+ecx*4+esp],edx
330 mul edi 345 mul edi
331 add eax,DWORD [32+esp] 346 add eax,DWORD [32+esp]
332 mov ebx,ecx 347 mov ebx,ecx
333 adc edx,0 348 adc edx,0
334 mov eax,DWORD [4+esi] 349 mov eax,DWORD [4+esi]
335 mov ecx,1 350 mov ecx,1
336 align 16 351 align 16
337 L$0113rdmadd: 352 L$0133rdmadd:
338 mov ebp,edx 353 mov ebp,edx
339 mul edi 354 mul edi
340 add ebp,DWORD [32+ecx*4+esp] 355 add ebp,DWORD [32+ecx*4+esp]
341 adc edx,0 356 adc edx,0
342 add ebp,eax 357 add ebp,eax
343 mov eax,DWORD [4+ecx*4+esi] 358 mov eax,DWORD [4+ecx*4+esi]
344 adc edx,0 359 adc edx,0
345 mov DWORD [28+ecx*4+esp],ebp 360 mov DWORD [28+ecx*4+esp],ebp
346 mov ebp,edx 361 mov ebp,edx
347 mul edi 362 mul edi
348 add ebp,DWORD [36+ecx*4+esp] 363 add ebp,DWORD [36+ecx*4+esp]
349 lea ecx,[2+ecx] 364 lea ecx,[2+ecx]
350 adc edx,0 365 adc edx,0
351 add ebp,eax 366 add ebp,eax
352 mov eax,DWORD [ecx*4+esi] 367 mov eax,DWORD [ecx*4+esi]
353 adc edx,0 368 adc edx,0
354 cmp ecx,ebx 369 cmp ecx,ebx
355 mov DWORD [24+ecx*4+esp],ebp 370 mov DWORD [24+ecx*4+esp],ebp
356 » jl» NEAR L$0113rdmadd 371 » jl» NEAR L$0133rdmadd
357 mov ebp,edx 372 mov ebp,edx
358 mul edi 373 mul edi
359 add ebp,DWORD [32+ebx*4+esp] 374 add ebp,DWORD [32+ebx*4+esp]
360 adc edx,0 375 adc edx,0
361 add ebp,eax 376 add ebp,eax
362 adc edx,0 377 adc edx,0
363 mov DWORD [28+ebx*4+esp],ebp 378 mov DWORD [28+ebx*4+esp],ebp
364 mov ecx,DWORD [12+esp] 379 mov ecx,DWORD [12+esp]
365 xor eax,eax 380 xor eax,eax
366 mov esi,DWORD [8+esp] 381 mov esi,DWORD [8+esp]
367 add edx,DWORD [36+ebx*4+esp] 382 add edx,DWORD [36+ebx*4+esp]
368 adc eax,DWORD [40+ebx*4+esp] 383 adc eax,DWORD [40+ebx*4+esp]
369 mov DWORD [32+ebx*4+esp],edx 384 mov DWORD [32+ebx*4+esp],edx
370 cmp ecx,ebx 385 cmp ecx,ebx
371 mov DWORD [36+ebx*4+esp],eax 386 mov DWORD [36+ebx*4+esp],eax
372 » je» NEAR L$005common_tail 387 » je» NEAR L$007common_tail
373 mov edi,DWORD [4+ecx*4+esi] 388 mov edi,DWORD [4+ecx*4+esi]
374 lea ecx,[1+ecx] 389 lea ecx,[1+ecx]
375 mov eax,edi 390 mov eax,edi
376 mov DWORD [12+esp],ecx 391 mov DWORD [12+esp],ecx
377 mul edi 392 mul edi
378 add eax,DWORD [32+ecx*4+esp] 393 add eax,DWORD [32+ecx*4+esp]
379 adc edx,0 394 adc edx,0
380 mov DWORD [32+ecx*4+esp],eax 395 mov DWORD [32+ecx*4+esp],eax
381 xor ebp,ebp 396 xor ebp,ebp
382 cmp ecx,ebx 397 cmp ecx,ebx
383 lea ecx,[1+ecx] 398 lea ecx,[1+ecx]
384 » je» NEAR L$012sqrlast 399 » je» NEAR L$014sqrlast
385 mov ebx,edx 400 mov ebx,edx
386 shr edx,1 401 shr edx,1
387 and ebx,1 402 and ebx,1
388 align 16 403 align 16
389 L$013sqradd: 404 L$015sqradd:
390 mov eax,DWORD [ecx*4+esi] 405 mov eax,DWORD [ecx*4+esi]
391 mov ebp,edx 406 mov ebp,edx
392 mul edi 407 mul edi
393 add eax,ebp 408 add eax,ebp
394 lea ebp,[eax*1+eax] 409 lea ebp,[eax*1+eax]
395 adc edx,0 410 adc edx,0
396 shr eax,31 411 shr eax,31
397 add ebp,DWORD [32+ecx*4+esp] 412 add ebp,DWORD [32+ecx*4+esp]
398 lea ecx,[1+ecx] 413 lea ecx,[1+ecx]
399 adc eax,0 414 adc eax,0
400 add ebp,ebx 415 add ebp,ebx
401 adc eax,0 416 adc eax,0
402 cmp ecx,DWORD [esp] 417 cmp ecx,DWORD [esp]
403 mov DWORD [28+ecx*4+esp],ebp 418 mov DWORD [28+ecx*4+esp],ebp
404 mov ebx,eax 419 mov ebx,eax
405 » jle» NEAR L$013sqradd 420 » jle» NEAR L$015sqradd
406 mov ebp,edx 421 mov ebp,edx
407 add edx,edx 422 add edx,edx
408 shr ebp,31 423 shr ebp,31
409 add edx,ebx 424 add edx,ebx
410 adc ebp,0 425 adc ebp,0
411 L$012sqrlast: 426 L$014sqrlast:
412 mov edi,DWORD [20+esp] 427 mov edi,DWORD [20+esp]
413 mov esi,DWORD [16+esp] 428 mov esi,DWORD [16+esp]
414 imul edi,DWORD [32+esp] 429 imul edi,DWORD [32+esp]
415 add edx,DWORD [32+ecx*4+esp] 430 add edx,DWORD [32+ecx*4+esp]
416 mov eax,DWORD [esi] 431 mov eax,DWORD [esi]
417 adc ebp,0 432 adc ebp,0
418 mov DWORD [32+ecx*4+esp],edx 433 mov DWORD [32+ecx*4+esp],edx
419 mov DWORD [36+ecx*4+esp],ebp 434 mov DWORD [36+ecx*4+esp],ebp
420 mul edi 435 mul edi
421 add eax,DWORD [32+esp] 436 add eax,DWORD [32+esp]
422 lea ebx,[ecx-1] 437 lea ebx,[ecx-1]
423 adc edx,0 438 adc edx,0
424 mov ecx,1 439 mov ecx,1
425 mov eax,DWORD [4+esi] 440 mov eax,DWORD [4+esi]
426 » jmp» NEAR L$0113rdmadd 441 » jmp» NEAR L$0133rdmadd
427 align 16 442 align 16
428 L$005common_tail: 443 L$007common_tail:
429 mov ebp,DWORD [16+esp] 444 mov ebp,DWORD [16+esp]
430 mov edi,DWORD [4+esp] 445 mov edi,DWORD [4+esp]
431 lea esi,[32+esp] 446 lea esi,[32+esp]
432 mov eax,DWORD [esi] 447 mov eax,DWORD [esi]
433 mov ecx,ebx 448 mov ecx,ebx
434 xor edx,edx 449 xor edx,edx
435 align 16 450 align 16
436 L$014sub: 451 L$016sub:
437 sbb eax,DWORD [edx*4+ebp] 452 sbb eax,DWORD [edx*4+ebp]
438 mov DWORD [edx*4+edi],eax 453 mov DWORD [edx*4+edi],eax
439 dec ecx 454 dec ecx
440 mov eax,DWORD [4+edx*4+esi] 455 mov eax,DWORD [4+edx*4+esi]
441 lea edx,[1+edx] 456 lea edx,[1+edx]
442 » jge» NEAR L$014sub 457 » jge» NEAR L$016sub
443 sbb eax,0 458 sbb eax,0
459 and esi,eax
460 not eax
461 mov ebp,edi
462 and ebp,eax
463 or esi,ebp
444 align 16 464 align 16
445 L$015copy: 465 L$017copy:
446 » mov» edx,DWORD [ebx*4+esi] 466 » mov» eax,DWORD [ebx*4+esi]
447 » mov» ebp,DWORD [ebx*4+edi] 467 » mov» DWORD [ebx*4+edi],eax
448 » xor» edx,ebp 468 » mov» DWORD [32+ebx*4+esp],ecx
449 » and» edx,eax
450 » xor» edx,ebp
451 » mov» DWORD [ebx*4+esi],ecx
452 » mov» DWORD [ebx*4+edi],edx
453 dec ebx 469 dec ebx
454 » jge» NEAR L$015copy 470 » jge» NEAR L$017copy
455 mov esp,DWORD [24+esp] 471 mov esp,DWORD [24+esp]
456 mov eax,1 472 mov eax,1
457 L$000just_leave: 473 L$000just_leave:
458 pop edi 474 pop edi
459 pop esi 475 pop esi
460 pop ebx 476 pop ebx
461 pop ebp 477 pop ebp
462 ret 478 ret
463 db 77,111,110,116,103,111,109,101,114,121,32,77,117,108,116,105 479 db 77,111,110,116,103,111,109,101,114,121,32,77,117,108,116,105
464 db 112,108,105,99,97,116,105,111,110,32,102,111,114,32,120,56 480 db 112,108,105,99,97,116,105,111,110,32,102,111,114,32,120,56
465 db 54,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121 481 db 54,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121
466 db 32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46 482 db 32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46
467 db 111,114,103,62,0 483 db 111,114,103,62,0
468 segment .bss 484 segment .bss
469 common _OPENSSL_ia32cap_P 16 485 common _OPENSSL_ia32cap_P 16
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698