Windows NT 4.0 source code leak
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

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
);