OLD | NEW |
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 Loading... |
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 |
OLD | NEW |