mirror of https://github.com/lianthony/NT4.0
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
349 lines
7.5 KiB
349 lines
7.5 KiB
typedef ULONG (*MATCH_FUNCTION)();
|
|
|
|
extern MATCH_FUNCTION MatchFunction;
|
|
|
|
//
|
|
// Three procedure prototypes for compressing, decompressing, and printing statistics
|
|
//
|
|
|
|
typedef ULONG (*COMPRESS_ROUTINE) (
|
|
IN PUCHAR UncompressedBuffer,
|
|
IN ULONG UncompressedBufferSize,
|
|
OUT PUCHAR CompressedBuffer,
|
|
IN ULONG CompressedBufferSize
|
|
);
|
|
|
|
typedef ULONG (*DECOMPRESS_ROUTINE) (
|
|
OUT PUCHAR UncompressedBuffer,
|
|
IN ULONG UncompressedBufferSize,
|
|
IN PUCHAR CompressedBuffer,
|
|
IN ULONG CompressedBufferSize
|
|
);
|
|
|
|
typedef VOID (*STATISTICS_ROUTINE) (
|
|
);
|
|
|
|
//
|
|
// The LZOPT engine uses the 12/4 compression with an exhaustive match function
|
|
//
|
|
|
|
ULONG
|
|
CompressLZOPT (
|
|
IN PUCHAR UncompressedBuffer,
|
|
IN ULONG UncompressedBufferSize,
|
|
OUT PUCHAR CompressedBuffer,
|
|
IN ULONG CompressedBufferSize
|
|
);
|
|
|
|
ULONG
|
|
DecompressLZOPT (
|
|
OUT PUCHAR UncompressedBuffer,
|
|
IN ULONG UncompressedBufferSize,
|
|
IN PUCHAR CompressedBuffer,
|
|
IN ULONG CompressedBufferSize
|
|
);
|
|
|
|
VOID StatisticsLZOPT ();
|
|
VOID ResetStatisticsLZOPT ();
|
|
|
|
//
|
|
// The LZNT1 engine uses the 12/4 compression with a 3 character lookup table
|
|
//
|
|
|
|
ULONG
|
|
CompressLZNT1 (
|
|
IN PUCHAR UncompressedBuffer,
|
|
IN ULONG UncompressedBufferSize,
|
|
OUT PUCHAR CompressedBuffer,
|
|
IN ULONG CompressedBufferSize
|
|
);
|
|
|
|
ULONG
|
|
DecompressLZNT1 (
|
|
OUT PUCHAR UncompressedBuffer,
|
|
IN ULONG UncompressedBufferSize,
|
|
IN PUCHAR CompressedBuffer,
|
|
IN ULONG CompressedBufferSize
|
|
);
|
|
|
|
VOID StatisticsLZNT1 ();
|
|
VOID ResetStatisticsLZNT1 ();
|
|
|
|
//
|
|
// The LZDC1 engine uses the 12/4 compression with a 2-way prime number index table
|
|
//
|
|
|
|
ULONG
|
|
CompressLZDC (
|
|
IN PUCHAR UncompressedBuffer,
|
|
IN ULONG UncompressedBufferSize,
|
|
OUT PUCHAR CompressedBuffer,
|
|
IN ULONG CompressedBufferSize
|
|
);
|
|
|
|
ULONG
|
|
DecompressLZDC (
|
|
OUT PUCHAR UncompressedBuffer,
|
|
IN ULONG UncompressedBufferSize,
|
|
IN PUCHAR CompressedBuffer,
|
|
IN ULONG CompressedBufferSize
|
|
);
|
|
|
|
VOID StatisticsLZDC1 ();
|
|
VOID ResetStatisticsLZDC1 ();
|
|
ULONG LZDC1FindMatch (
|
|
IN PUCHAR UncompressedBuffer,
|
|
IN PUCHAR EndOfUncompressedBufferPlus1,
|
|
IN PUCHAR ZivString,
|
|
OUT PUCHAR *MatchedString,
|
|
IN PVOID WorkSpace
|
|
);
|
|
|
|
VOID StatisticsLZDC2 ();
|
|
VOID ResetStatisticsLZDC2 ();
|
|
ULONG LZDC2FindMatch (
|
|
IN PUCHAR UncompressedBuffer,
|
|
IN PUCHAR EndOfUncompressedBufferPlus1,
|
|
IN PUCHAR ZivString,
|
|
OUT PUCHAR *MatchedString,
|
|
IN PVOID WorkSpace
|
|
);
|
|
|
|
//
|
|
// The LZRW1 engine uses the 12/4 compression with a xor index function
|
|
//
|
|
|
|
ULONG
|
|
CompressLZRW (
|
|
IN PUCHAR UncompressedBuffer,
|
|
IN ULONG UncompressedBufferSize,
|
|
OUT PUCHAR CompressedBuffer,
|
|
IN ULONG CompressedBufferSize
|
|
);
|
|
|
|
ULONG
|
|
DecompressLZRW (
|
|
OUT PUCHAR UncompressedBuffer,
|
|
IN ULONG UncompressedBufferSize,
|
|
IN PUCHAR CompressedBuffer,
|
|
IN ULONG CompressedBufferSize
|
|
);
|
|
|
|
VOID StatisticsLZRW1 ();
|
|
VOID ResetStatisticsLZRW1 ();
|
|
ULONG LZRW1FindMatch (
|
|
IN PUCHAR UncompressedBuffer,
|
|
IN PUCHAR EndOfUncompressedBufferPlus1,
|
|
IN PUCHAR ZivString,
|
|
OUT PUCHAR *MatchedString,
|
|
IN PVOID WorkSpace
|
|
);
|
|
|
|
VOID StatisticsLZRW2 ();
|
|
VOID ResetStatisticsLZRW2 ();
|
|
ULONG LZRW2FindMatch (
|
|
IN PUCHAR UncompressedBuffer,
|
|
IN PUCHAR EndOfUncompressedBufferPlus1,
|
|
IN PUCHAR ZivString,
|
|
OUT PUCHAR *MatchedString,
|
|
IN PVOID WorkSpace
|
|
);
|
|
|
|
//
|
|
// The LZ115 engine uses the 11/5 compression with a xor index function
|
|
//
|
|
|
|
ULONG
|
|
CompressLZ115 (
|
|
IN PUCHAR UncompressedBuffer,
|
|
IN ULONG UncompressedBufferSize,
|
|
OUT PUCHAR CompressedBuffer,
|
|
IN ULONG CompressedBufferSize
|
|
);
|
|
|
|
ULONG
|
|
DecompressLZ115 (
|
|
OUT PUCHAR UncompressedBuffer,
|
|
IN ULONG UncompressedBufferSize,
|
|
IN PUCHAR CompressedBuffer,
|
|
IN ULONG CompressedBufferSize
|
|
);
|
|
|
|
VOID StatisticsLZ115 ();
|
|
VOID ResetStatisticsLZ115 ();
|
|
ULONG LZ115FindMatch (
|
|
IN PUCHAR UncompressedBuffer,
|
|
IN PUCHAR EndOfUncompressedBufferPlus1,
|
|
IN PUCHAR ZivString,
|
|
OUT PUCHAR *MatchedString,
|
|
IN PVOID WorkSpace
|
|
);
|
|
|
|
VOID StatisticsLZ115OPT ();
|
|
VOID ResetStatisticsLZ115OPT ();
|
|
ULONG LZ115OPTFindMatch (
|
|
IN PUCHAR UncompressedBuffer,
|
|
IN PUCHAR EndOfUncompressedBufferPlus1,
|
|
IN PUCHAR ZivString,
|
|
OUT PUCHAR *MatchedString,
|
|
IN PVOID WorkSpace
|
|
);
|
|
|
|
//
|
|
// The LZ engine uses the 11 and a half compression with a xor index function
|
|
//
|
|
|
|
ULONG
|
|
CompressLZ11HALF (
|
|
IN PUCHAR UncompressedBuffer,
|
|
IN ULONG UncompressedBufferSize,
|
|
OUT PUCHAR CompressedBuffer,
|
|
IN ULONG CompressedBufferSize
|
|
);
|
|
|
|
ULONG
|
|
DecompressLZ11HALF (
|
|
OUT PUCHAR UncompressedBuffer,
|
|
IN ULONG UncompressedBufferSize,
|
|
IN PUCHAR CompressedBuffer,
|
|
IN ULONG CompressedBufferSize
|
|
);
|
|
|
|
VOID StatisticsLZ11HALF ();
|
|
VOID ResetStatisticsLZ11HALF ();
|
|
ULONG LZ11HALFFindMatch (
|
|
IN BOOLEAN Is115,
|
|
IN PUCHAR UncompressedBuffer,
|
|
IN PUCHAR EndOfUncompressedBufferPlus1,
|
|
IN PUCHAR ZivString,
|
|
OUT PUCHAR *MatchedString,
|
|
IN PVOID WorkSpace
|
|
);
|
|
|
|
VOID StatisticsLZ11HALFOPT ();
|
|
VOID ResetStatisticsLZ11HALFOPT ();
|
|
ULONG LZ11HALFOPTFindMatch (
|
|
IN BOOLEAN Is115,
|
|
IN PUCHAR UncompressedBuffer,
|
|
IN PUCHAR EndOfUncompressedBufferPlus1,
|
|
IN PUCHAR ZivString,
|
|
OUT PUCHAR *MatchedString,
|
|
IN PVOID WorkSpace
|
|
);
|
|
|
|
//
|
|
// The LZKM engine uses the sliding 4:12 to 12:4 compression with an xor index function
|
|
//
|
|
|
|
ULONG
|
|
CompressLZKM (
|
|
IN PUCHAR UncompressedBuffer,
|
|
IN ULONG UncompressedBufferSize,
|
|
OUT PUCHAR CompressedBuffer,
|
|
IN ULONG CompressedBufferSize
|
|
);
|
|
|
|
ULONG
|
|
DecompressLZKM (
|
|
OUT PUCHAR UncompressedBuffer,
|
|
IN ULONG UncompressedBufferSize,
|
|
IN PUCHAR CompressedBuffer,
|
|
IN ULONG CompressedBufferSize
|
|
);
|
|
|
|
VOID StatisticsLZKM1 ();
|
|
VOID ResetStatisticsLZKM1 ();
|
|
ULONG LZKM1FindMatch (
|
|
IN PUCHAR ZivString,
|
|
IN PVOID WorkSpace
|
|
);
|
|
|
|
VOID StatisticsLZKM2 ();
|
|
VOID ResetStatisticsLZKM2 ();
|
|
ULONG LZKM2FindMatch (
|
|
IN PUCHAR ZivString,
|
|
IN PVOID WorkSpace
|
|
);
|
|
|
|
VOID StatisticsLZKMOPT ();
|
|
VOID ResetStatisticsLZKMOPT ();
|
|
ULONG LZKMOPTFindMatch (
|
|
IN PUCHAR ZivString,
|
|
IN PVOID WorkSpace
|
|
);
|
|
|
|
//
|
|
// The Double Space format and engine
|
|
//
|
|
|
|
ULONG
|
|
CompressMRCF (
|
|
IN PUCHAR UncompressedBuffer,
|
|
IN ULONG UncompressedBufferSize,
|
|
OUT PUCHAR CompressedBuffer,
|
|
IN ULONG CompressedBufferSize
|
|
);
|
|
|
|
ULONG
|
|
DecompressMRCF (
|
|
OUT PUCHAR UncompressedBuffer,
|
|
IN ULONG UncompressedBufferSize,
|
|
IN PUCHAR CompressedBuffer,
|
|
IN ULONG CompressedBufferSize
|
|
);
|
|
|
|
VOID StatisticsMRCF ();
|
|
VOID ResetStatisticsMRCF ();
|
|
ULONG MrcfFindMatchStandard (
|
|
ULONG UncompressedIndex,
|
|
PUCHAR UncompressedBuffer,
|
|
ULONG UncompressedLength,
|
|
PULONG MatchedStringIndex,
|
|
PVOID WorkSpace
|
|
);
|
|
|
|
VOID StatisticsMRCFOPT ();
|
|
VOID ResetStatisticsMRCFOPT ();
|
|
ULONG MrcfFindOptimalMatch (
|
|
ULONG UncompressedIndex,
|
|
PUCHAR UncompressedBuffer,
|
|
ULONG UncompressedLength,
|
|
PULONG MatchedStringIndex,
|
|
PVOID WorkSpace
|
|
);
|
|
|
|
//
|
|
// The JMS format and engine
|
|
//
|
|
|
|
ULONG
|
|
CompressJMS (
|
|
IN PUCHAR UncompressedBuffer,
|
|
IN ULONG UncompressedBufferSize,
|
|
OUT PUCHAR CompressedBuffer,
|
|
IN ULONG CompressedBufferSize
|
|
);
|
|
|
|
ULONG
|
|
DecompressJMS (
|
|
OUT PUCHAR UncompressedBuffer,
|
|
IN ULONG UncompressedBufferSize,
|
|
IN PUCHAR CompressedBuffer,
|
|
IN ULONG CompressedBufferSize
|
|
);
|
|
|
|
VOID StatisticsJMS ();
|
|
VOID ResetStatisticsJMS ();
|
|
ULONG JMSFindMatch (
|
|
IN PUCHAR ZivString,
|
|
IN PVOID WorkSpace
|
|
);
|
|
|
|
VOID StatisticsJMSOPT ();
|
|
VOID ResetStatisticsJMSOPT ();
|
|
ULONG JMSOPTFindMatch (
|
|
IN PUCHAR ZivString,
|
|
IN PVOID WorkSpace
|
|
);
|
|
|
|
|