bzip2si386.inc 597 B

1234567891011121314151617181920212223242526272829303132333435
  1. {$ASMMODE intel}
  2. {$define HAVE_DETRANSFORM}
  3. procedure TDecompressBzip2Stream.detransform;assembler;
  4. asm
  5. { mov edx,offset c
  6. call mcount}
  7. push ebx
  8. push edi
  9. xor edx,edx
  10. lea ebx,[eax+TDecompressBzip2Stream.cftab]
  11. mov ecx,[eax+TDecompressBzip2Stream.tt_count]
  12. push esi
  13. push ebp
  14. mov esi,[eax+TDecompressBzip2Stream.tt]
  15. mov edi,esi
  16. lea ebp,[4*ecx+esi]
  17. jmp @a2
  18. @a1:
  19. movzx eax,byte [esi]
  20. mov ecx,[ebx+4*eax]
  21. inc dword [ebx+4*eax]
  22. or [edi+4*ecx],edx
  23. add edx,$100
  24. add esi,4
  25. @a2:
  26. cmp esi,ebp
  27. jne @a1
  28. pop ebp
  29. pop esi
  30. pop edi
  31. pop ebx
  32. end ['eax','ecx','edx'];