Mercurial > sdl-ios-xcode
comparison src/stdlib/SDL_stdlib.c @ 1663:11775724e3fe SDL-1.3
fine tuning indent output
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Sun, 28 May 2006 13:29:03 +0000 |
parents | 782fd950bd46 |
children | 4da1ee79c9af |
comparison
equal
deleted
inserted
replaced
1662:782fd950bd46 | 1663:11775724e3fe |
---|---|
40 #endif | 40 #endif |
41 | 41 |
42 /* Float to long */ | 42 /* Float to long */ |
43 void __declspec (naked) _ftol () | 43 void __declspec (naked) _ftol () |
44 { | 44 { |
45 __asm { | 45 /* *INDENT-OFF* */ |
46 push ebp mov ebp, esp sub esp, 20 h and esp, 0F FFFFFF0h fld st (0) | 46 __asm { |
47 fst dword ptr[esp + 18 h] | 47 push ebp |
48 fistp qword ptr[esp + 10 h] | 48 mov ebp,esp |
49 fild qword ptr[esp + 10 h] | 49 sub esp,20h |
50 mov edx, dword ptr[esp + 18 h] | 50 and esp,0FFFFFFF0h |
51 mov eax, dword ptr[esp + 10 h] | 51 fld st(0) |
52 test eax, eax | 52 fst dword ptr [esp+18h] |
53 je integer_QnaN_or_zero | 53 fistp qword ptr [esp+10h] |
54 arg_is_not_integer_QnaN:fsubp st (1), st | 54 fild qword ptr [esp+10h] |
55 test edx, edx jns positive fstp dword ptr[esp] | 55 mov edx,dword ptr [esp+18h] |
56 mov ecx, dword ptr[esp] | 56 mov eax,dword ptr [esp+10h] |
57 xor ecx, 80000000 h | 57 test eax,eax |
58 add ecx, 7F FFFFFFh adc eax, 0 mov edx, dword ptr[esp + 14 h] | 58 je integer_QnaN_or_zero |
59 adc edx, 0 jmp localexit positive:fstp dword ptr[esp] | 59 arg_is_not_integer_QnaN: |
60 mov ecx, dword ptr[esp] | 60 fsubp st(1),st |
61 add ecx, 7F FFFFFFh sbb eax, 0 mov edx, dword ptr[esp + 14 h] | 61 test edx,edx |
62 sbb edx, 0 | 62 jns positive |
63 jmp localexit integer_QnaN_or_zero:mov edx, dword ptr[esp + 14 h] | 63 fstp dword ptr [esp] |
64 test edx, 7F FFFFFFh | 64 mov ecx,dword ptr [esp] |
65 jne arg_is_not_integer_QnaN fstp dword ptr[esp + 18 h] | 65 xor ecx,80000000h |
66 fstp dword ptr[esp + 18 h] localexit:leave ret} | 66 add ecx,7FFFFFFFh |
67 } | 67 adc eax,0 |
68 mov edx,dword ptr [esp+14h] | |
69 adc edx,0 | |
70 jmp localexit | |
71 positive: | |
72 fstp dword ptr [esp] | |
73 mov ecx,dword ptr [esp] | |
74 add ecx,7FFFFFFFh | |
75 sbb eax,0 | |
76 mov edx,dword ptr [esp+14h] | |
77 sbb edx,0 | |
78 jmp localexit | |
79 integer_QnaN_or_zero: | |
80 mov edx,dword ptr [esp+14h] | |
81 test edx,7FFFFFFFh | |
82 jne arg_is_not_integer_QnaN | |
83 fstp dword ptr [esp+18h] | |
84 fstp dword ptr [esp+18h] | |
85 localexit: | |
86 leave | |
87 ret | |
88 } | |
89 /* *INDENT-ON* */ | |
90 } | |
91 | |
68 void | 92 void |
69 __declspec (naked) | 93 __declspec (naked) |
70 _ftol2_sse () | 94 _ftol2_sse () |
71 { | 95 { |
72 _ftol (); | 96 _ftol (); |
75 /* 64-bit math operators for 32-bit systems */ | 99 /* 64-bit math operators for 32-bit systems */ |
76 void | 100 void |
77 __declspec (naked) | 101 __declspec (naked) |
78 _allmul () | 102 _allmul () |
79 { | 103 { |
80 __asm { | 104 /* *INDENT-OFF* */ |
81 push ebp | 105 __asm { |
82 mov ebp, esp | 106 push ebp |
83 push edi | 107 mov ebp,esp |
84 push esi push ebx sub esp, 0 Ch mov eax, dword ptr[ebp + 10 h] | 108 push edi |
85 mov edi, dword ptr[ebp + 8] | 109 push esi |
86 mov ebx, eax mov esi, eax sar esi, 1F h mov eax, dword ptr[ebp + 8] | 110 push ebx |
87 mul ebx | 111 sub esp,0Ch |
88 imul edi, esi | 112 mov eax,dword ptr [ebp+10h] |
89 mov ecx, edx | 113 mov edi,dword ptr [ebp+8] |
90 mov dword ptr[ebp - 18 h], eax mov edx, dword ptr[ebp + 0 Ch] | 114 mov ebx,eax |
91 add ecx, edi imul ebx, edx mov eax, dword ptr[ebp - 18 h] | 115 mov esi,eax |
92 lea ebx,[ebx + ecx] | 116 sar esi,1Fh |
93 mov dword ptr[ebp - 14 h], ebx mov edx, dword ptr[ebp - 14 h] | 117 mov eax,dword ptr [ebp+8] |
94 add esp, 0 Ch pop ebx pop esi pop edi pop ebp ret} | 118 mul ebx |
119 imul edi,esi | |
120 mov ecx,edx | |
121 mov dword ptr [ebp-18h],eax | |
122 mov edx,dword ptr [ebp+0Ch] | |
123 add ecx,edi | |
124 imul ebx,edx | |
125 mov eax,dword ptr [ebp-18h] | |
126 lea ebx,[ebx+ecx] | |
127 mov dword ptr [ebp-14h],ebx | |
128 mov edx,dword ptr [ebp-14h] | |
129 add esp,0Ch | |
130 pop ebx | |
131 pop esi | |
132 pop edi | |
133 pop ebp | |
134 ret | |
135 } | |
136 /* *INDENT-ON* */ | |
95 } | 137 } |
96 void | 138 void |
97 __declspec (naked) | 139 __declspec (naked) |
98 _alldiv () | 140 _alldiv () |
99 { | 141 { |
100 __asm { | 142 /* *INDENT-OFF* */ |
101 push edi push esi push ebx xor edi, edi mov eax, dword ptr[esp + 14 h] | 143 __asm { |
102 or eax, eax jge L1 inc edi mov edx, dword ptr[esp + 10 h] | 144 push edi |
103 neg eax | 145 push esi |
104 neg edx | 146 push ebx |
105 sbb eax, 0 | 147 xor edi,edi |
106 mov dword ptr[esp + 14 h], eax | 148 mov eax,dword ptr [esp+14h] |
107 mov dword ptr[esp + 10 h], edx L1:mov eax, dword ptr[esp + 1 Ch] | 149 or eax,eax |
108 or eax, eax jge L2 inc edi mov edx, dword ptr[esp + 18 h] | 150 jge L1 |
109 neg eax | 151 inc edi |
110 neg edx | 152 mov edx,dword ptr [esp+10h] |
111 sbb eax, 0 | 153 neg eax |
112 mov dword ptr[esp + 1 Ch], eax | 154 neg edx |
113 mov dword ptr[esp + 18 h], edx | 155 sbb eax,0 |
114 L2:or eax, eax jne L3 mov ecx, dword ptr[esp + 18 h] | 156 mov dword ptr [esp+14h],eax |
115 mov eax, dword ptr[esp + 14 h] | 157 mov dword ptr [esp+10h],edx |
116 xor edx, edx div ecx mov ebx, eax mov eax, dword ptr[esp + 10 h] | 158 L1: |
117 div ecx | 159 mov eax,dword ptr [esp+1Ch] |
118 mov edx, ebx jmp L4 L3:mov ebx, eax mov ecx, dword ptr[esp + 18 h] | 160 or eax,eax |
119 mov edx, dword ptr[esp + 14 h] | 161 jge L2 |
120 mov eax, dword ptr[esp + 10 h] | 162 inc edi |
121 | 163 mov edx,dword ptr [esp+18h] |
122 | 164 neg eax |
123 | 165 neg edx |
124 | 166 sbb eax,0 |
125 | 167 mov dword ptr [esp+1Ch],eax |
126 | 168 mov dword ptr [esp+18h],edx |
127 | 169 L2: |
128 L5:shr ebx, 1 | 170 or eax,eax |
129 rcr ecx, 1 | 171 jne L3 |
130 shr edx, 1 | 172 mov ecx,dword ptr [esp+18h] |
131 rcr eax, 1 | 173 mov eax,dword ptr [esp+14h] |
132 or ebx, ebx jne L5 div ecx mov esi, eax mul dword ptr[esp + 1 Ch] | 174 xor edx,edx |
133 mov ecx, eax mov eax, dword ptr[esp + 18 h] | 175 div ecx |
134 mul esi add edx, ecx jb L6 cmp edx, dword ptr[esp + 14 h] | 176 mov ebx,eax |
135 ja L6 jb L7 cmp eax, dword ptr[esp + 10 h] | 177 mov eax,dword ptr [esp+10h] |
136 jbe L7 | 178 div ecx |
137 L6:dec esi | 179 mov edx,ebx |
138 L7:xor edx, edx | 180 jmp L4 |
139 mov eax, esi | 181 L3: |
140 L4:dec edi | 182 mov ebx,eax |
141 jne L8 | 183 mov ecx,dword ptr [esp+18h] |
142 neg edx neg eax sbb edx, 0 L8:pop ebx pop esi pop edi ret 10 h} | 184 mov edx,dword ptr [esp+14h] |
185 mov eax,dword ptr [esp+10h] | |
186 L5: | |
187 shr ebx,1 | |
188 rcr ecx,1 | |
189 shr edx,1 | |
190 rcr eax,1 | |
191 or ebx,ebx | |
192 jne L5 | |
193 div ecx | |
194 mov esi,eax | |
195 mul dword ptr [esp+1Ch] | |
196 mov ecx,eax | |
197 mov eax,dword ptr [esp+18h] | |
198 mul esi | |
199 add edx,ecx | |
200 jb L6 | |
201 cmp edx,dword ptr [esp+14h] | |
202 ja L6 | |
203 jb L7 | |
204 cmp eax,dword ptr [esp+10h] | |
205 jbe L7 | |
206 L6: | |
207 dec esi | |
208 L7: | |
209 xor edx,edx | |
210 mov eax,esi | |
211 L4: | |
212 dec edi | |
213 jne L8 | |
214 neg edx | |
215 neg eax | |
216 sbb edx,0 | |
217 L8: | |
218 pop ebx | |
219 pop esi | |
220 pop edi | |
221 ret 10h | |
222 } | |
223 /* *INDENT-ON* */ | |
143 } | 224 } |
144 void | 225 void |
145 __declspec (naked) | 226 __declspec (naked) |
146 _aulldiv () | 227 _aulldiv () |
147 { | 228 { |
148 __asm { | 229 /* *INDENT-OFF* */ |
149 push ebx push esi mov eax, dword ptr[esp + 18 h] | 230 __asm { |
150 or eax, eax jne L1 mov ecx, dword ptr[esp + 14 h] | 231 push ebx |
151 mov eax, dword ptr[esp + 10 h] | 232 push esi |
152 xor edx, edx div ecx mov ebx, eax mov eax, dword ptr[esp + 0 Ch] | 233 mov eax,dword ptr [esp+18h] |
153 div ecx | 234 or eax,eax |
154 mov edx, ebx jmp L2 L1:mov ecx, eax mov ebx, dword ptr[esp + 14 h] | 235 jne L1 |
155 mov edx, dword ptr[esp + 10 h] | 236 mov ecx,dword ptr [esp+14h] |
156 mov eax, dword ptr[esp + 0 Ch] | 237 mov eax,dword ptr [esp+10h] |
157 | 238 xor edx,edx |
158 | 239 div ecx |
159 | 240 mov ebx,eax |
160 | 241 mov eax,dword ptr [esp+0Ch] |
161 | 242 div ecx |
162 | 243 mov edx,ebx |
163 | 244 jmp L2 |
164 L3:shr ecx, 1 | 245 L1: |
165 rcr ebx, 1 | 246 mov ecx,eax |
166 shr edx, 1 | 247 mov ebx,dword ptr [esp+14h] |
167 rcr eax, 1 | 248 mov edx,dword ptr [esp+10h] |
168 or ecx, ecx jne L3 div ebx mov esi, eax mul dword ptr[esp + 18 h] | 249 mov eax,dword ptr [esp+0Ch] |
169 mov ecx, eax mov eax, dword ptr[esp + 14 h] | 250 L3: |
170 mul esi add edx, ecx jb L4 cmp edx, dword ptr[esp + 10 h] | 251 shr ecx,1 |
171 ja L4 jb L5 cmp eax, dword ptr[esp + 0 Ch] | 252 rcr ebx,1 |
172 jbe L5 | 253 shr edx,1 |
173 L4:dec esi | 254 rcr eax,1 |
174 L5:xor edx, edx mov eax, esi L2:pop esi pop ebx ret 10 h} | 255 or ecx,ecx |
256 jne L3 | |
257 div ebx | |
258 mov esi,eax | |
259 mul dword ptr [esp+18h] | |
260 mov ecx,eax | |
261 mov eax,dword ptr [esp+14h] | |
262 mul esi | |
263 add edx,ecx | |
264 jb L4 | |
265 cmp edx,dword ptr [esp+10h] | |
266 ja L4 | |
267 jb L5 | |
268 cmp eax,dword ptr [esp+0Ch] | |
269 jbe L5 | |
270 L4: | |
271 dec esi | |
272 L5: | |
273 xor edx,edx | |
274 mov eax,esi | |
275 L2: | |
276 pop esi | |
277 pop ebx | |
278 ret 10h | |
279 } | |
280 /* *INDENT-ON* */ | |
175 } | 281 } |
176 void | 282 void |
177 __declspec (naked) | 283 __declspec (naked) |
178 _allrem () | 284 _allrem () |
179 { | 285 { |
180 __asm { | 286 /* *INDENT-OFF* */ |
181 push ebx push edi xor edi, edi mov eax, dword ptr[esp + 10 h] | 287 __asm { |
182 or eax, eax jge L1 inc edi mov edx, dword ptr[esp + 0 Ch] | 288 push ebx |
183 neg eax | 289 push edi |
184 neg edx | 290 xor edi,edi |
185 sbb eax, 0 | 291 mov eax,dword ptr [esp+10h] |
186 mov dword ptr[esp + 10 h], eax | 292 or eax,eax |
187 mov dword ptr[esp + 0 Ch], edx L1:mov eax, dword ptr[esp + 18 h] | 293 jge L1 |
188 or eax, eax jge L2 mov edx, dword ptr[esp + 14 h] | 294 inc edi |
189 neg eax | 295 mov edx,dword ptr [esp+0Ch] |
190 neg edx | 296 neg eax |
191 sbb eax, 0 | 297 neg edx |
192 mov dword ptr[esp + 18 h], eax | 298 sbb eax,0 |
193 mov dword ptr[esp + 14 h], edx | 299 mov dword ptr [esp+10h],eax |
194 L2:or eax, eax jne L3 mov ecx, dword ptr[esp + 14 h] | 300 mov dword ptr [esp+0Ch],edx |
195 mov eax, dword ptr[esp + 10 h] | 301 L1: |
196 xor edx, edx div ecx mov eax, dword ptr[esp + 0 Ch] | 302 mov eax,dword ptr [esp+18h] |
197 div ecx | 303 or eax,eax |
198 mov eax, edx | 304 jge L2 |
199 xor edx, edx | 305 mov edx,dword ptr [esp+14h] |
200 dec edi | 306 neg eax |
201 jns L4 jmp L8 L3:mov ebx, eax mov ecx, dword ptr[esp + 14 h] | 307 neg edx |
202 mov edx, dword ptr[esp + 10 h] | 308 sbb eax,0 |
203 mov eax, dword ptr[esp + 0 Ch] | 309 mov dword ptr [esp+18h],eax |
204 | 310 mov dword ptr [esp+14h],edx |
205 | 311 L2: |
206 | 312 or eax,eax |
207 | 313 jne L3 |
208 | 314 mov ecx,dword ptr [esp+14h] |
209 | 315 mov eax,dword ptr [esp+10h] |
210 | 316 xor edx,edx |
211 L5:shr ebx, 1 | 317 div ecx |
212 rcr ecx, 1 | 318 mov eax,dword ptr [esp+0Ch] |
213 shr edx, 1 | 319 div ecx |
214 rcr eax, 1 | 320 mov eax,edx |
215 or ebx, ebx jne L5 div ecx mov ecx, eax mul dword ptr[esp + 18 h] | 321 xor edx,edx |
216 xchg eax, ecx mul dword ptr[esp + 14 h] | 322 dec edi |
217 add edx, ecx jb L6 cmp edx, dword ptr[esp + 10 h] | 323 jns L4 |
218 ja L6 jb L7 cmp eax, dword ptr[esp + 0 Ch] | 324 jmp L8 |
219 jbe L7 L6:sub eax, dword ptr[esp + 14 h] | 325 L3: |
220 sbb edx, dword ptr[esp + 18 h] | 326 mov ebx,eax |
221 L7:sub eax, dword ptr[esp + 0 Ch] | 327 mov ecx,dword ptr [esp+14h] |
222 sbb edx, dword ptr[esp + 10 h] | 328 mov edx,dword ptr [esp+10h] |
223 dec edi | 329 mov eax,dword ptr [esp+0Ch] |
224 jns L8 L4:neg edx neg eax sbb edx, 0 L8:pop edi pop ebx ret 10 h} | 330 L5: |
331 shr ebx,1 | |
332 rcr ecx,1 | |
333 shr edx,1 | |
334 rcr eax,1 | |
335 or ebx,ebx | |
336 jne L5 | |
337 div ecx | |
338 mov ecx,eax | |
339 mul dword ptr [esp+18h] | |
340 xchg eax,ecx | |
341 mul dword ptr [esp+14h] | |
342 add edx,ecx | |
343 jb L6 | |
344 cmp edx,dword ptr [esp+10h] | |
345 ja L6 | |
346 jb L7 | |
347 cmp eax,dword ptr [esp+0Ch] | |
348 jbe L7 | |
349 L6: | |
350 sub eax,dword ptr [esp+14h] | |
351 sbb edx,dword ptr [esp+18h] | |
352 L7: | |
353 sub eax,dword ptr [esp+0Ch] | |
354 sbb edx,dword ptr [esp+10h] | |
355 dec edi | |
356 jns L8 | |
357 L4: | |
358 neg edx | |
359 neg eax | |
360 sbb edx,0 | |
361 L8: | |
362 pop edi | |
363 pop ebx | |
364 ret 10h | |
365 } | |
366 /* *INDENT-ON* */ | |
225 } | 367 } |
226 void | 368 void |
227 __declspec (naked) | 369 __declspec (naked) |
228 _aullrem () | 370 _aullrem () |
229 { | 371 { |
230 __asm { | 372 /* *INDENT-OFF* */ |
231 push ebx mov eax, dword ptr[esp + 14 h] | 373 __asm { |
232 or eax, eax jne L1 mov ecx, dword ptr[esp + 10 h] | 374 push ebx |
233 mov eax, dword ptr[esp + 0 Ch] | 375 mov eax,dword ptr [esp+14h] |
234 xor edx, edx div ecx mov eax, dword ptr[esp + 8] | 376 or eax,eax |
235 div ecx | 377 jne L1 |
236 mov eax, edx | 378 mov ecx,dword ptr [esp+10h] |
237 xor edx, edx jmp L2 L1:mov ecx, eax mov ebx, dword ptr[esp + 10 h] | 379 mov eax,dword ptr [esp+0Ch] |
238 mov edx, dword ptr[esp + 0 Ch] | 380 xor edx,edx |
239 mov eax, dword ptr[esp + 8] | 381 div ecx |
240 | 382 mov eax,dword ptr [esp+8] |
241 | 383 div ecx |
242 | 384 mov eax,edx |
243 | 385 xor edx,edx |
244 | 386 jmp L2 |
245 | 387 L1: |
246 | 388 mov ecx,eax |
247 L3:shr ecx, 1 | 389 mov ebx,dword ptr [esp+10h] |
248 rcr ebx, 1 | 390 mov edx,dword ptr [esp+0Ch] |
249 shr edx, 1 | 391 mov eax,dword ptr [esp+8] |
250 rcr eax, 1 | 392 L3: |
251 or ecx, ecx jne L3 div ebx mov ecx, eax mul dword ptr[esp + 14 h] | 393 shr ecx,1 |
252 xchg eax, ecx mul dword ptr[esp + 10 h] | 394 rcr ebx,1 |
253 add edx, ecx jb L4 cmp edx, dword ptr[esp + 0 Ch] | 395 shr edx,1 |
254 ja L4 jb L5 cmp eax, dword ptr[esp + 8] | 396 rcr eax,1 |
255 jbe L5 L4:sub eax, dword ptr[esp + 10 h] | 397 or ecx,ecx |
256 sbb edx, dword ptr[esp + 14 h] | 398 jne L3 |
257 L5:sub eax, dword ptr[esp + 8] | 399 div ebx |
258 sbb edx, dword ptr[esp + 0 Ch] | 400 mov ecx,eax |
259 neg edx neg eax sbb edx, 0 L2:pop ebx ret 10 h} | 401 mul dword ptr [esp+14h] |
402 xchg eax,ecx | |
403 mul dword ptr [esp+10h] | |
404 add edx,ecx | |
405 jb L4 | |
406 cmp edx,dword ptr [esp+0Ch] | |
407 ja L4 | |
408 jb L5 | |
409 cmp eax,dword ptr [esp+8] | |
410 jbe L5 | |
411 L4: | |
412 sub eax,dword ptr [esp+10h] | |
413 sbb edx,dword ptr [esp+14h] | |
414 L5: | |
415 sub eax,dword ptr [esp+8] | |
416 sbb edx,dword ptr [esp+0Ch] | |
417 neg edx | |
418 neg eax | |
419 sbb edx,0 | |
420 L2: | |
421 pop ebx | |
422 ret 10h | |
423 } | |
424 /* *INDENT-ON* */ | |
260 } | 425 } |
261 void | 426 void |
262 __declspec (naked) | 427 __declspec (naked) |
263 _alldvrm () | 428 _alldvrm () |
264 { | 429 { |
265 __asm { | 430 /* *INDENT-OFF* */ |
266 push edi | 431 __asm { |
267 push esi | 432 push edi |
268 push ebp xor edi, edi xor ebp, ebp mov eax, dword ptr[esp + 14 h] | 433 push esi |
269 or eax, eax jge L1 inc edi inc ebp mov edx, dword ptr[esp + 10 h] | 434 push ebp |
270 neg eax | 435 xor edi,edi |
271 neg edx | 436 xor ebp,ebp |
272 sbb eax, 0 | 437 mov eax,dword ptr [esp+14h] |
273 mov dword ptr[esp + 14 h], eax | 438 or eax,eax |
274 mov dword ptr[esp + 10 h], edx L1:mov eax, dword ptr[esp + 1 Ch] | 439 jge L1 |
275 or eax, eax jge L2 inc edi mov edx, dword ptr[esp + 18 h] | 440 inc edi |
276 neg eax | 441 inc ebp |
277 neg edx | 442 mov edx,dword ptr [esp+10h] |
278 sbb eax, 0 | 443 neg eax |
279 mov dword ptr[esp + 1 Ch], eax | 444 neg edx |
280 mov dword ptr[esp + 18 h], edx | 445 sbb eax,0 |
281 L2:or eax, eax jne L3 mov ecx, dword ptr[esp + 18 h] | 446 mov dword ptr [esp+14h],eax |
282 mov eax, dword ptr[esp + 14 h] | 447 mov dword ptr [esp+10h],edx |
283 xor edx, edx div ecx mov ebx, eax mov eax, dword ptr[esp + 10 h] | 448 L1: |
284 div ecx mov esi, eax mov eax, ebx mul dword ptr[esp + 18 h] | 449 mov eax,dword ptr [esp+1Ch] |
285 mov ecx, eax mov eax, esi mul dword ptr[esp + 18 h] | 450 or eax,eax |
286 add edx, ecx jmp L4 L3:mov ebx, eax mov ecx, dword ptr[esp + 18 h] | 451 jge L2 |
287 mov edx, dword ptr[esp + 14 h] | 452 inc edi |
288 mov eax, dword ptr[esp + 10 h] | 453 mov edx,dword ptr [esp+18h] |
289 | 454 neg eax |
290 | 455 neg edx |
291 | 456 sbb eax,0 |
292 | 457 mov dword ptr [esp+1Ch],eax |
293 | 458 mov dword ptr [esp+18h],edx |
294 | 459 L2: |
295 | 460 or eax,eax |
296 L5:shr ebx, 1 | 461 jne L3 |
297 rcr ecx, 1 | 462 mov ecx,dword ptr [esp+18h] |
298 shr edx, 1 | 463 mov eax,dword ptr [esp+14h] |
299 rcr eax, 1 | 464 xor edx,edx |
300 or ebx, ebx jne L5 div ecx mov esi, eax mul dword ptr[esp + 1 Ch] | 465 div ecx |
301 mov ecx, eax mov eax, dword ptr[esp + 18 h] | 466 mov ebx,eax |
302 mul esi add edx, ecx jb L6 cmp edx, dword ptr[esp + 14 h] | 467 mov eax,dword ptr [esp+10h] |
303 ja L6 jb L7 cmp eax, dword ptr[esp + 10 h] | 468 div ecx |
304 jbe L7 L6:dec esi sub eax, dword ptr[esp + 18 h] | 469 mov esi,eax |
305 sbb edx, dword ptr[esp + 1 Ch] | 470 mov eax,ebx |
306 L7:xor ebx, ebx L4:sub eax, dword ptr[esp + 10 h] | 471 mul dword ptr [esp+18h] |
307 sbb edx, dword ptr[esp + 14 h] | 472 mov ecx,eax |
308 dec ebp | 473 mov eax,esi |
309 jns L9 | 474 mul dword ptr [esp+18h] |
310 neg edx | 475 add edx,ecx |
311 neg eax | 476 jmp L4 |
312 sbb edx, 0 | 477 L3: |
313 L9:mov ecx, edx | 478 mov ebx,eax |
314 mov edx, ebx | 479 mov ecx,dword ptr [esp+18h] |
315 mov ebx, ecx | 480 mov edx,dword ptr [esp+14h] |
316 mov ecx, eax | 481 mov eax,dword ptr [esp+10h] |
317 mov eax, esi | 482 L5: |
318 dec edi | 483 shr ebx,1 |
319 jne L8 | 484 rcr ecx,1 |
320 neg edx neg eax sbb edx, 0 L8:pop ebp pop esi pop edi ret 10 h} | 485 shr edx,1 |
486 rcr eax,1 | |
487 or ebx,ebx | |
488 jne L5 | |
489 div ecx | |
490 mov esi,eax | |
491 mul dword ptr [esp+1Ch] | |
492 mov ecx,eax | |
493 mov eax,dword ptr [esp+18h] | |
494 mul esi | |
495 add edx,ecx | |
496 jb L6 | |
497 cmp edx,dword ptr [esp+14h] | |
498 ja L6 | |
499 jb L7 | |
500 cmp eax,dword ptr [esp+10h] | |
501 jbe L7 | |
502 L6: | |
503 dec esi | |
504 sub eax,dword ptr [esp+18h] | |
505 sbb edx,dword ptr [esp+1Ch] | |
506 L7: | |
507 xor ebx,ebx | |
508 L4: | |
509 sub eax,dword ptr [esp+10h] | |
510 sbb edx,dword ptr [esp+14h] | |
511 dec ebp | |
512 jns L9 | |
513 neg edx | |
514 neg eax | |
515 sbb edx,0 | |
516 L9: | |
517 mov ecx,edx | |
518 mov edx,ebx | |
519 mov ebx,ecx | |
520 mov ecx,eax | |
521 mov eax,esi | |
522 dec edi | |
523 jne L8 | |
524 neg edx | |
525 neg eax | |
526 sbb edx,0 | |
527 L8: | |
528 pop ebp | |
529 pop esi | |
530 pop edi | |
531 ret 10h | |
532 } | |
533 /* *INDENT-ON* */ | |
321 } | 534 } |
322 void | 535 void |
323 __declspec (naked) | 536 __declspec (naked) |
324 _aulldvrm () | 537 _aulldvrm () |
325 { | 538 { |
326 __asm { | 539 /* *INDENT-OFF* */ |
327 push esi mov eax, dword ptr[esp + 14 h] | 540 __asm { |
328 or eax, eax jne L1 mov ecx, dword ptr[esp + 10 h] | 541 push esi |
329 mov eax, dword ptr[esp + 0 Ch] | 542 mov eax,dword ptr [esp+14h] |
330 xor edx, edx div ecx mov ebx, eax mov eax, dword ptr[esp + 8] | 543 or eax,eax |
331 div ecx mov esi, eax mov eax, ebx mul dword ptr[esp + 10 h] | 544 jne L1 |
332 mov ecx, eax mov eax, esi mul dword ptr[esp + 10 h] | 545 mov ecx,dword ptr [esp+10h] |
333 add edx, ecx jmp L2 L1:mov ecx, eax mov ebx, dword ptr[esp + 10 h] | 546 mov eax,dword ptr [esp+0Ch] |
334 mov edx, dword ptr[esp + 0 Ch] | 547 xor edx,edx |
335 mov eax, dword ptr[esp + 8] | 548 div ecx |
336 | 549 mov ebx,eax |
337 | 550 mov eax,dword ptr [esp+8] |
338 | 551 div ecx |
339 | 552 mov esi,eax |
340 | 553 mov eax,ebx |
341 | 554 mul dword ptr [esp+10h] |
342 | 555 mov ecx,eax |
343 L3:shr ecx, 1 | 556 mov eax,esi |
344 rcr ebx, 1 | 557 mul dword ptr [esp+10h] |
345 shr edx, 1 | 558 add edx,ecx |
346 rcr eax, 1 | 559 jmp L2 |
347 or ecx, ecx jne L3 div ebx mov esi, eax mul dword ptr[esp + 14 h] | 560 L1: |
348 mov ecx, eax mov eax, dword ptr[esp + 10 h] | 561 mov ecx,eax |
349 mul esi add edx, ecx jb L4 cmp edx, dword ptr[esp + 0 Ch] | 562 mov ebx,dword ptr [esp+10h] |
350 ja L4 jb L5 cmp eax, dword ptr[esp + 8] | 563 mov edx,dword ptr [esp+0Ch] |
351 jbe L5 L4:dec esi sub eax, dword ptr[esp + 10 h] | 564 mov eax,dword ptr [esp+8] |
352 sbb edx, dword ptr[esp + 14 h] | 565 L3: |
353 L5:xor ebx, ebx L2:sub eax, dword ptr[esp + 8] | 566 shr ecx,1 |
354 sbb edx, dword ptr[esp + 0 Ch] | 567 rcr ebx,1 |
355 neg edx | 568 shr edx,1 |
356 neg eax | 569 rcr eax,1 |
357 sbb edx, 0 | 570 or ecx,ecx |
358 mov ecx, edx | 571 jne L3 |
359 mov edx, ebx | 572 div ebx |
360 mov ebx, ecx mov ecx, eax mov eax, esi pop esi ret 10 h} | 573 mov esi,eax |
574 mul dword ptr [esp+14h] | |
575 mov ecx,eax | |
576 mov eax,dword ptr [esp+10h] | |
577 mul esi | |
578 add edx,ecx | |
579 jb L4 | |
580 cmp edx,dword ptr [esp+0Ch] | |
581 ja L4 | |
582 jb L5 | |
583 cmp eax,dword ptr [esp+8] | |
584 jbe L5 | |
585 L4: | |
586 dec esi | |
587 sub eax,dword ptr [esp+10h] | |
588 sbb edx,dword ptr [esp+14h] | |
589 L5: | |
590 xor ebx,ebx | |
591 L2: | |
592 sub eax,dword ptr [esp+8] | |
593 sbb edx,dword ptr [esp+0Ch] | |
594 neg edx | |
595 neg eax | |
596 sbb edx,0 | |
597 mov ecx,edx | |
598 mov edx,ebx | |
599 mov ebx,ecx | |
600 mov ecx,eax | |
601 mov eax,esi | |
602 pop esi | |
603 ret 10h | |
604 } | |
605 /* *INDENT-ON* */ | |
361 } | 606 } |
362 void | 607 void |
363 __declspec (naked) | 608 __declspec (naked) |
364 _allshl () | 609 _allshl () |
365 { | 610 { |
366 __asm { | 611 /* *INDENT-OFF* */ |
367 cmp cl, 40 h | 612 __asm { |
368 jae RETZERO | 613 cmp cl,40h |
369 cmp cl, 20 h | 614 jae RETZERO |
370 jae MORE32 | 615 cmp cl,20h |
371 shld edx, eax, cl | 616 jae MORE32 |
372 shl eax, cl | 617 shld edx,eax,cl |
373 ret | 618 shl eax,cl |
374 MORE32:mov edx, eax | 619 ret |
375 xor eax, eax | 620 MORE32: |
376 and cl, 1F h | 621 mov edx,eax |
377 shl edx, cl ret RETZERO:xor eax, eax xor edx, edx ret} | 622 xor eax,eax |
623 and cl,1Fh | |
624 shl edx,cl | |
625 ret | |
626 RETZERO: | |
627 xor eax,eax | |
628 xor edx,edx | |
629 ret | |
630 } | |
631 /* *INDENT-ON* */ | |
378 } | 632 } |
379 void | 633 void |
380 __declspec (naked) | 634 __declspec (naked) |
381 _aullshr () | 635 _aullshr () |
382 { | 636 { |
383 __asm { | 637 /* *INDENT-OFF* */ |
384 cmp cl, 40 h | 638 __asm { |
385 jae RETZERO | 639 cmp cl,40h |
386 cmp cl, 20 h | 640 jae RETZERO |
387 jae MORE32 | 641 cmp cl,20h |
388 shrd eax, edx, cl | 642 jae MORE32 |
389 shr edx, cl | 643 shrd eax,edx,cl |
390 ret | 644 shr edx,cl |
391 MORE32:mov eax, edx | 645 ret |
392 xor edx, edx | 646 MORE32: |
393 and cl, 1F h | 647 mov eax,edx |
394 shr eax, cl ret RETZERO:xor eax, eax xor edx, edx ret} | 648 xor edx,edx |
395 } | 649 and cl,1Fh |
396 | 650 shr eax,cl |
397 #endif /* MSC_VER */ | 651 ret |
398 | 652 RETZERO: |
399 #endif /* !HAVE_LIBC */ | 653 xor eax,eax |
654 xor edx,edx | |
655 ret | |
656 } | |
657 /* *INDENT-ON* */ | |
658 } | |
659 | |
660 #endif /* MSC_VER */ | |
661 | |
662 #endif /* !HAVE_LIBC */ | |
663 | |
400 /* vi: set ts=4 sw=4 expandtab: */ | 664 /* vi: set ts=4 sw=4 expandtab: */ |