Rev 893 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 893 | Rev 920 | ||
---|---|---|---|
Line 272... | Line 272... | ||
272 | .repmovsbz: |
272 | .repmovsbz: |
273 | push esi |
273 | push esi |
274 | .repmovsbr: |
274 | .repmovsbr: |
275 | mov eax, [ebp+.rep0] |
275 | mov eax, [ebp+.rep0] |
276 | cmp eax, [ebp+.dictSize] |
276 | cmp eax, [ebp+.dictSize] |
277 | jae return.err |
277 | ja return.err |
278 | mov esi, edi |
278 | mov esi, edi |
279 | sub esi, eax |
279 | sub esi, eax |
280 | mov eax, [ebp+streamInfo.bufPtr] |
280 | mov eax, [ebp+streamInfo.bufPtr] |
281 | sub eax, esi |
281 | sub eax, esi |
282 | ja .repmovsb0 |
282 | ja .repmovsb0 |
283 | mov eax, [ebp+.outEnd] |
283 | mov eax, [ebp+.outEnd] |
284 | sub eax, edi |
284 | sub eax, edi |
- | 285 | jz .done1 |
|
285 | push ecx |
286 | push ecx |
286 | cmp ecx, eax |
287 | cmp ecx, eax |
287 | jb @f |
288 | jb @f |
288 | mov ecx, eax |
289 | mov ecx, eax |
289 | @@: |
290 | @@: |
290 | sub [esp], ecx |
291 | sub [esp], ecx |
291 | rep movsb |
292 | rep movsb |
292 | pop ecx |
293 | pop ecx |
293 | jz .repmovsb1 |
294 | jz .repmovsb1 |
- | 295 | .done1: |
|
294 | pop [ebp+.inPtr] |
296 | pop [ebp+.inPtr] |
295 | mov [ebp+.state], ebx |
297 | mov [ebp+.state], ebx |
296 | mov [ebp+.ecx], ecx |
298 | mov [ebp+.ecx], ecx |
297 | mov [ebp+.continue], .restart_repmovsb |
299 | mov [ebp+.continue], .restart_repmovsb |
298 | popad |
300 | popad |
299 | ret |
301 | ret |
300 | .repmovsb0: |
302 | .repmovsb0: |
301 | mov edx, [ebp+.dictSize] |
303 | mov edx, [ebp+.dictSize] |
302 | cmp edx, [ebp+streamInfo.bufSize] |
304 | ; cmp edx, [ebp+streamInfo.bufSize] |
303 | jnz return.err |
305 | ; jnz return.err |
304 | add esi, edx |
306 | add esi, edx |
305 | push ecx |
307 | push ecx |
306 | cmp ecx, eax |
308 | cmp ecx, eax |
307 | jb @f |
309 | jb @f |
308 | mov ecx, eax |
310 | mov ecx, eax |
309 | @@: |
311 | @@: |
310 | mov eax, [ebp+.outEnd] |
312 | mov eax, [ebp+.outEnd] |
311 | sub eax, edi |
313 | sub eax, edi |
- | 314 | jz .done2 |
|
312 | cmp ecx, eax |
315 | cmp ecx, eax |
313 | jb @f |
316 | jb @f |
314 | mov ecx, eax |
317 | mov ecx, eax |
315 | @@: |
318 | @@: |
316 | sub [esp], ecx |
319 | sub [esp], ecx |
Line 320... | Line 323... | ||
320 | .repmovsb1: |
323 | .repmovsb1: |
321 | pop esi |
324 | pop esi |
322 | mov al, [edi-1] |
325 | mov al, [edi-1] |
323 | mov [ebp+.previousByte], al |
326 | mov [ebp+.previousByte], al |
324 | jmp .main_loop |
327 | jmp .main_loop |
- | 328 | .done2: |
|
- | 329 | pop ecx |
|
- | 330 | jmp .done1 |
|
325 | .main_loop_done: |
331 | .main_loop_done: |
326 | mov [ebp+.state], ebx |
332 | mov [ebp+.state], ebx |
327 | mov [ebp+.continue], .main_loop |
333 | mov [ebp+.continue], .main_loop |
328 | mov [ebp+.inPtr], esi |
334 | mov [ebp+.inPtr], esi |
329 | popad |
335 | popad |