bzip2si386.inc 567 B

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