Codec Host Module

PECompact v2.x CODEC Plug-In Documentation

A CODEC plug-in is created as a CODEC Host Module. This is simply the DLL that exposes the CODEC(s) to PECompact2. Users of PECompact2 select which DLL(s) they wish to use to encode their modules. Each CODEC Host Module (CODEC plug-in) may internally contain any number of encoding and decoding functions referenced by index. These are not selectable by the user, only the CODEC Host Module itself is selectable by the user. When the CODEC Host Module is chosen, all the CODEC(s) included in it are invoked in order.

Example:

The following CODEC Host Module would invoke a CRC32 algorithm, the FFCE compression algorithm, then another CRC32 algorithm. The user would simply select 'pec2codec_ffce.dll', not seeing that there are actually three CODECs within the Host Module.

CODEC Host Module: | -codec 0: crc32
+pec2codec_ffce_and_crc32.dll | -codec 1: FFCE
 | -codec 2: crc32

The CODECs contained within a CODEC Host Module are identified by a zero based index number. Each CODEC exposes a number of entry points (APIs) listed in the CODEC Functions topic. To retrieve these entry-points, a call is made to the host module API CodecGetProcAddress, passing the the index of the desired codec and the name of the API to retrieve the address of.

Codecs are invoked during encoding in ascending order, starting with index 0. During decoding, the inverse order is used.

A CODEC Host Module exposes these APIs:

FARPROC WINAPI CodecGetProcAddress(DWORD dwIndex, LPCSTR pszApiName);
DWORD WINAPI GetNumberOfCodecs();


CodecGetProcAddress

PECompact v2.x CODEC Plug-In Documentation

FARPROC WINAPI CodecGetProcAddress(DWORD dwCodecIndex, LPCSTR pszApi);
Parameters:
dwCodecIndex
The zero based index number of the codec whose APIs you wish to query. See remarks for more information.about indices.

ptszApi
The null-terminated, case-insensitive, name of the API.whose address you wish to find. The possible values for this parameter are listed in the Codec Functions reference..

Return Value:

If the call is successful, the address of the requested API will be returned. If the call fails, the return value will be NULL.

Remarks:

This function retrieves the address of any of the CODEC functions for the CODEC given by the dwCodecIndex parameter.

A codec host module (dll) may contain any number of codecs. This function is used to retrieve API entry points for the codec identified by the dwCodecIndex parameter. The codecs are invoked for encoding in the ascending order of their index numbers (i.e. 0, 1, 2, 3, ...). During decoding the codecs are invoked in the opposite [descending] order.


GetNumberOfCodecs

PECompact v2.x CODEC Plug-In Documentation

DWORD WINAPI GetNumberOfCodecs();
Parameters:

Return Value:

The return value is the number of codecs hosted by this module (dll).

Remarks:

A codec host module (dll) may contain any number of codecs. This function is used to ascertain the number of codecs in the module. The codecs are invoked for encoding in the ascending order of their index numbers (i.e. 0, 1, 2, 3, ...). During decoding the codecs are invoked in the opposite [descending] order.


Codec Functions

PECompact v2.x CODEC Plug-In Documentation

Each codec has a set of entry points (APIs) that expose its ability to encode and decode, as well as the capability of having the decode function(s) copied out of the module and relocated.

The mandatory codec APIs are:

DWORD WINAPI DecodeSmall(LPVOID lpvSource, LPVOID lpvDest, LPVOID pExtra);
DWORD WINAPI GetDecodeSmallFuncSize();
DWORD WINAPI Encode(LPVOID lpvSource, DWORD dwSize, LPVOID lpvDest, DWORD *pdwDestSize, DWORD dwLevel, PFNCodecCallback pCodecCallback);
DWORD WINAPI GetCodecVersion(DWORD *pdwSdkVer);
DWORD WINAPI GetCodecAuthor(WCHAR *pwszAuthorName, DWORD dwBufSize);
DWORD WINAPI GetCodecName(WCHAR *pwszCodecName, DWORD dwBufSize);

The optional ones are:

DWORD WINAPI DecodeFast(LPVOID lpvSource, LPVOID lpvDest, LPVOID pExtra);
DWORD WINAPI GetDecodeFastFuncSize();
DWORD WINAPI GetMaximumEncodingLevel();

The callback function the host, PECompact, passes to the Encode API is::

BOOL WINAPI CodecCallback(DWORD dwAction, DWORD dwParam1, DWORD dwParam2, DWORD dwParam3);


CodecCallback

PECompact v2.x CODEC Plug-In Documentation

BOOL WINAPI CodecCallback(DWORD dwAction, DWORD dwParam1, DWORD dwParam2, DWORD dwParam3);
Parameters:

dwAction
This is the action being performed. See the table below for more information.

dwParam1
The value of this parameter varies depending on the action. See the table below for more information.

dwParam2
The value of this parameter varies depending on the action. See the table below for more information.

dwParam3
The value of this parameter varies depending on the action. See the table below for more information.

Return Value:

PECompact will return TRUE if the action should continue, or FALSE if it should stop. See the table below for more information.

Remarks:

The table below describes valid action codes and what the dwParam1 and dwParam2 are defined as for each:
 | PEC2_CODEC_ACTION_ENCODE (1) | PEC2_CODEC_ACTION_DONE (0) | PEC2_CODEC_ACTION_ERROR (-1)
dwParam1 | unsigned integer, last offset into the source data. | unsigned integer, original size of the processed data. | One of PEC_CODC_ERROR codes: PEC_CODEC_ERROR_UNSPECIFIED (-1) PEC_CODEC_ERROR_ABORTED (-2)
dwParam2 | unsigned integer, last offset into the destination data. | unsigned integer, new size of the processed data | undefined
dwParam3 | unsigned integer, total size of the source data. | undefined | undefined
Return value | if FALSE, abort. if TRUE, continue. | undefined | undefined

PEC2_CODEC_ACTION_DONE and PEC2_CODEC_ACTION_ERROR may be called even if PEC2_CODEC_ACTION_ENCODE has never been called.

Either PEC2_CODEC_ACTION_DONE or PEC2_CODEC_ACTION_ERROR must be called if a callback procedure is available.

The user may defined his or her own action codes as PEC2_CODEC_ACTION_USER_DEFINED (10) or greater.


DecodeFast

PECompact v2.x CODEC Plug-In Documentation

DWORD WINAPI DecodeFast(LPVOID lpvSource, LPVOID lpvDest, PEC2_DECODE_EXTRA *pExtra);
Parameters:

lpvSource
The address of the beginning of the data you wish to decode.

lpvDest
The address at which to place the decoded data. This buffer is guaranteed to be at least the size of the decoded data.

pExtra
Pointer to a PEC2_DECODE_EXTRA object. This parameter is NULL for the loader decoder, but non-NULL when decoding host module data and code blocks.

Return Value:

If successful, the return value is the size, in bytes, of the decoded data. If unsuccessful, the return value is PEC2_CODEC_ERROR_UNSPECIFIED (-1).

Remarks:

This is the 'fast' decoder that is faster than the 'small' decoder, but larger in decoder size. The DecodeFast function must be a contiguous block of memory with no outside references.


DecodeSmall

PECompact v2.x CODEC Plug-In Documentation

DWORD WINAPI DecodeSmall(LPVOID lpvSource, LPVOID lpvDest, PEC2_DECODE_EXTRA *pExtra);
Parameters:

lpvSource
The address of the beginning of the data you wish to decode.

lpvDest
The address at which to place the decoded data. This buffer is guaranteed to be at least the size of the decoded data.

pExtra
Pointer to a PEC2_DECODE_EXTRA object. This parameter is NULL for the loader decoder, but non-NULL when decoding host module data and code blocks.

Return Value:

If successful, the return value is the size, in bytes, of the decoded data. If unsuccessful, the return value is PEC2_CODEC_ERROR_UNSPECIFIED (-1).

Remarks:

This is the 'small' decoder that is slower than the 'fast' decoder, but smaller in decoder size. The DecodeSmall function must be a contiguous block of memory with no outside references.


Encode

PECompact v2.x CODEC Plug-In Documentation

DWORD WINAPI Encode(LPVOID lpvSource, DWORD dwSourceSize, LPVOID lpvDest, DWORD *pdwDestSize, DWORD dwLevel, PFNCodecCallback pCodecCallback);
Parameters:

lpvSource
The address of the beginning of the data you wish to decode.

dwSourceSize
The size of the source buffer, lpvSource.

lpvDest
The address at which to place the decoded data.

pdwDestSize
A pointer to the size, in bytes, of the buffer pointed to by lpvDest. If the return value is PEC2_CODEC_ERROR_INSUFFICIENT_BUFFER (-2), this variable receives the required size of the destination buffer, in bytes. If another error occurred, the dereferenced pdsDestSize variable is not altered.

dwLevel
The level, between 1 and the return value of GetMaximumEncodingLevel, of encoding to perform. Typically, this is used for compression algorithms to adjust parameters towards better compression at higher 'levels'.

pCodecCallback
The address of the callback procedure in the callee. This parameter may be NULL. See CodecCallback for more information.

Return Value:

If successful, the return value is the size, in bytes of the encoded data. If unsuccessful, the return value is PEC2_CODEC_ERROR_INSUFFICIENT BUFFER (-2) or PEC2_CODEC_ERROR_UNSPECIFIED (-1). If PEC2_CODEC_ERROR_INSUFFICIENT_BUFFER, the dereferenced pdwDestSize receives the required size of the destination buffer, in bytes.

Remarks:

The returned data may be larger than the input data.


GetCodecAuthor

PECompact v2.x CODEC Plug-In Documentation

DWORD WINAPI GetCodecAuthor(WCHAR *pwszDest, DWORD dwDestSize);
Parameters:

lpvDest
The address at which to place the codec author wide character, null terminated, string. If pwszDest is NULL, the required size of this buffer is returned.

dwDestSize
The size, in wide characters, of the destination buffer. This size should include the NULL terminator.

Return Value:

If successful, the return value is the size, in wide characters of the returned string, not including the trailing NULL. If the pwszDest parameter was NULL, the return value will be the required size, in wide characters, of the destination buffer.

Remarks:


GetCodecName

PECompact v2.x CODEC Plug-In Documentation

DWORD WINAPI GetCodecName(WCHAR *pwszDest, DWORD dwDestSize);
Parameters:

lpvDest
The address at which to place the codec name wide character, null terminated, string. If pwszDest is NULL, the required size of this buffer is returned.

dwDestSize
The size, in wide characters, of the destination buffer. This size should include the NULL terminator.

Return Value:

If successful, the return value is the size, in wide characters of the returned string, not including the trailing NULL. If the pwszDest parameter was NULL, the return value will be the required size, in wide characters, of the destination buffer.

Remarks:


GetCodecVersion

PECompact v2.x CODEC Plug-In Documentation

DWORD WINAPI GetCodecVersion(DWORD *pdwSDKVersion);
Parameters:

pdwSDKVersion
The address of the variable that receives the version of the SDK this codec plug-in was created with. This value is defined as PEC2_CODEC_SDK_VERSION.

Return Value:

The Codec SDK version is returned through the pdwSDKVersion parameter and the return value is the version of the codec, in the format:

//
// codec version 1.21
//
#define CODEC_MAJOR_VERSION 1
#define CODEC_MINOR_VERSION 21
#define CODEC_VERSION ((CODEC_MAJOR_VERSION*100)+CODEC_MINOR_VERSION)

Remarks:


GetDecodeFastFuncSize

PECompact v2.x CODEC Plug-In Documentation

DWORD WINAPI GetDecodeFastFuncSize();
Parameters:
Return Value:

The size, in bytes, of the DecodeFast function or zero if DecodeFast does not exist.

Remarks:

The DecodeFast function must be a contiguous block of memory with no outside references.


GetDecodeSmallFuncSize

PECompact v2.x CODEC Plug-In Documentation

DWORD WINAPI GetDecodeSmallFuncSize();
Parameters:
Return Value:

The size, in bytes, of the DecodeSmall function or zero if DecodeSmall does not exist.

Remarks:

The DecodeSmall function must be a contiguous block of memory with no outside references.


GetMaximumEncodingLevel

PECompact v2.x CODEC Plug-In Documentation

DWORD WINAPI GetMaximumEncodingLevel();
Parameters:
Return Value:

The return value is the maximum supported encoding level. The first (minimum) level is 1. If none are supported, the return value should be zero.

Remarks:


PEC2_DECODE_EXTRA

PECompact v2.x CODEC Plug-In Documentation

C++:

typedef struct _PEC2_DECODE_EXTRA
{
   FARPROC pLoadLibraryA;      // pointer to LoadLibraryA
   FARPROC pGetProcAddress;    // pointer to GetProcAddress
} PEC2_DECODE_EXTRA, *PPEC2_DECODE_EXTRA;

Assembly:

PEC2_DECODER_EXTRA struct
 pLoadLibraryA dd ?
 pGetProcAddress dd ?
PEC2_DECODER_EXTRA ends


Overview

00. PECompact v2

PECompact v2.x Documentation
(c) 2004 Bitsum Technologies
http://www.bitsum.com

Product Overview:

PECompact2 is a utility of the genre known as "executable packers". Execuable packers compress executables and modules so that their physical size is considerably smaller than it originally was. At runtime, the module (executable) is decompressed and reconstructed in memory. With high-perfomance executable packers such as PECompact v2.x, decompression and reconstruction is so rapid that load time may actually improve since the time saved by reading fewer bytes from the disk or network may exceed the time spent reconstructing and decompressing the module.

Typically, PECompact2 compressses modules substantially better than that of the common compression software such as RAR and ZIP. This is accomplished through advanced techniques of pre-processing a module to make it more compressible when passed to the compression algorithm. PECompact2 allows use of virtually any compression algorithm due to its CODEC plug-in support. Included compression algorithms are listed here.

In addition to space savings, PECompact2 inherently makes it more difficult to reverse engineer your module(s). The compressed data is unreadable and not directly modifiable. PECompact2's default loader employs some basic anti-debugging code to aid in prevention of reverse engineering. In addition,PECompact2 supports Loader plug-ins. Therefore, third parties can create custom loaders after purchasing the loader SDK.

Contents:

00. Overview
01. Using the console application
02. Using the GUI
03. Options/Settings
04. CODEC plug-ins
05. Loader plug-ins
06. API Hook plug-ins
07. Licensing / Purchasing

Understanding the Terminology

Before reading this documentation and using PECompact2, it is important to define a few terms that are used throughout:

Portable Executable | A Portable Executable is the format of Win32 modules such as .EXE, .DLL, and .SCR.
CODEC | An encoding and decoding algorithm. For example, a compression or encryption algorithm. Users of PECompact2 can select which of many different CODECs to use on target files.
Loader | This Loader is the small piece of code and data attached to processed modules (files) that is responsible for decompressing (or decoding) the module at runtime.


Using the Console Application

01. Using the console mode application

PECompact v2.x Documentation
(c) 2004 Bitsum Technologies
http://www.bitsum.com

PECompact2 offers a console mode application for easy integration into build environments and for use by those who prefer console mode applications. Supporting wildcards and directory recusion, it is very easy to use and allows for complete control of all available compression settings.

PECompact2 includes a console mode version named "pec2.exe". This console mode application is ideal for integration into development environments or for the user who prefers command line execution.

The command line arguments supported are listed in this table.


Using the GUI

02. Using the Graphical User Interface

PECompact v2.x Documentation
(c) 2004 Bitsum Technologies
http://www.bitsum.com

The PECompact 2 GUI provides essential functionality in a point-and-click environment.
  1. The Main Window
  2. Settings Dialog
  3. CODEC Plug-In Selection Dialog
  4. API Hook Plug-in Selection Dialog
  5. Command Line Arguments

T he Main Window

The main window has a list view that contains the current batch of files.

Right clicking anywhere in the files list cause a popup menu to appear that duplicates much of the functionality of the buttons on the left. In addition, it contains the 'Remove' action that removes all selected items from the list. Items may also be removed by pressing the DELETE key when desired items are selected.

The Settings Window

Each item in the listview can have individual settings. Therefore, one must be aware that when they choose to modify the settings, they are doing so for the item(s) that are currently selected.

When an checkbox is checked and grayed, it means that PECompact2 should automatically determine the appropriate settings based on the file it is compressing.

Actions:

Compress | Compress modules with PECompact2.
Trim | Simply trim and realign modules.
Embed watermark | Must be used with trim or compress. See PEWatermark.exe console mode application for more functionality. This option causes a watermark to be embedded into the module. This watermark can later be retrieved for identification of the executable. The watermark is meant to persist through modifications to the module.

Documentation of configuration options is here.
Checkbox Settings

Automatic = Yes or No = Gray and checked.
On = Yes = Checked.
Off = No = Unchecked.

The CODEC Selection Dialog

The CODEC Selection Dialog allows for specification of which CODECs should be used on the target file(s) and in what order they should be used.

In the above example, files will be compressed with LZMA, then have a CRC32 test performed on them. At runtime, the decoding order is reversed so that the CRC32 check is performed, then the data is decompressed by LZMA.

See the CODEC plug-ins page for more information on the available CODECs.

Ordering is very important because it can affect compressibility and/or the desired output. See the CODEC Ordering section of the CODEC plug-ins page for more information.

API Hook Plug-in Selection Dialog

The API Hook Plug-in Selection Dialog allows for configuration of which API Hook Plug-ins should be attached to compressed modules. Any number of API Hook plug-ins may be used on a single compressed module.

Command Line Arguments

The command line application is intended for use in win32 console mode, but the GUI itself supports a number of command line parameters to do things such load projects and files, auto begin compression, and initiate a check for updates.

The command line parameter specification for PEC2GUI is:

PEC2GUI [/Project=pathname] [/Auto] [/AutoStart] [/AutoExit] [/Update] [file1] [file2] [file3] [fileX] ...

You may specify on the PEC2GUI command line one or more files that you would like added to the files list view (the list of files to be compressed). In addition, the following parameters are supported:

Parameter | Default | Example | Description
/Project=file | No project is loaded by default. | /Project=c:\pec2\mysolution.pec2prj | The project file whose pathname is provided is loaded into the GUI.
/Auto | Disabled by default. | /Auto | Indicates both /AutoStart and /AutoExit. See descriptions of those parameters.
/AutoExit | Auto exit is disabled by default. | /AutoExit | When supplied, the GUI automatically exits after compression has finished.
/AutoStart | Auto start is not enabled by default. | /AutoStart | When supplied, the GUI will automatically begin compression (or other designated operations) on the project file supplied by the /Project parameter, and/or on files provided on the command line.
/SetLang | Not set. | /SetLang | When supplied, the user is presented with a list of supported languages to choose from.
/Update | Not set. | /Update | Initiates a PECompact2 product update and exits when complete.

Examples:

PEC2GUI myfile.exe mydll.dll mydll2.dll
Starts the GUI and loads myfile.exe, mydll.dll, and mydll2.dll into the list view.

PEC2GUI /project=myproj.pec2prj
Starts the GUI and loads the project 'myproj.pec2prj'

PEC2GUI /project=myproj.pec2prj /Auto
Starts the GUI, loads the project 'myproj.pec2prj', automatically begins compression, and exits when complete. /Auto is the same as /AutoStart and /AutoExit combined.

PEC2GUI /project=myproj.pec2prj /AutoStart
Starts the GUI, loads the project 'myproj.pec2prj', automatically begins compression. It does not automatically exit when compression is complete because /AutoExit is not supplied.


Configuration Options

03. Configuration Options

PECompact v2.x Documentation
(c) 2004 Bitsum Technologies
http://www.bitsum.com

This table describes available compression options in both the GUI and console mode application.
Option | Description | Switch | Default Value | Console App Examples
CODEC Plugin(s) | A CODEC host is a module that provides the compression and decompression (or encoding and decoding) algorithms to PECompact. Any number of CODEC hosts may be used during compression. The order they are provided in is significant and is reversed during decompressing or decoding. | /CodecHost | The default value is "pec2codec_ffce.dll". | /CodecHost=pec2codec_ffce.dll /CodecHost=pec2codec_jcalg1.dll /CodecHost=pec2codec_aplib.dll /CodecHost=pec2codec_crc32.dll,pec2codec_lzma.dll /CodecHost=@mycodecs.lst
Code Integrity Check | The code integirty check is a quick runtime test on reconstructed code. A CRC32 codec is provided for full integrity checking and should be used instead of this switch. | /CodeIntegrityCheck | The default value is "No". | /CodeIntegrityCheck=Yes /CodeIntegrityCheck=No
Compress Exports | The export table identifies what symbols are exposed to other modules. By relocating it, it may be processed without the module being decompressed. The default mode of "Auto" is recommended. | /CompressExports | The default mode is "auto". In this mode, exports of executables are compressed, but exports of DLLs and other modules are not. | /CompressExports=Yes /CompressExports=No /CompressExports=Auto
Compress Safe Resources | If "Yes", resources safe to compress are compressed. If "No", all resources are left uncompressed. | /CompressResources | The default value is "Yes". | /CompressResources=Yes /CompressResources=No
Compression Level (Global Decoder Options) | Some codecs support a compression level. The higher the level, the better, but slower, is the compression. Decompression speed is generally unaffected by the compression level. | /CompressionLevel | The default value is "7". | /CompressionLevel=1 /CompressionLevel=9
Decoder Type (Global Decoder Options) | The fast decoder performs better than the 'small' decoder, but occupies more physical space. | /DecoderType | The default is "Auto", by which the small decoders are used for files less than 100kB in size and fast decoders used for all other files. | /DecoderType=Small /DecoderType=Fast /DecoderType=Auto
API Hook Plugin(s) | An API Hook plugin may facilitate any number of different features. This switch indicates which API Hook plugins to utilize. | /HooksHost | There is no default value (no API hooks used). | /HooksHost=pec2hooks_fastimport.dll /HooksHost=pec2hooks_fastimport.dll,pec2hooks_morehooks.dll /HooksHost=@myhooks.lst
Loader CODEC (Console application only) | The loader itself is compressed and this module is the CODEC host for its compression algorithm. | /LoaderCodecHost | The default value is: "pec2codec_aplib.dll" | /LoaderCodecHost="pec2codec_brieflz.dll /LoaderCodecHost="pec2codec_aplib.dll"
Loader Plugin | The loader host module provides the loader (or decompression stub) to PECompcat. | /LoaderHost | The default value is: "pec2ldr.dll" | /LoaderHost="pec2ldr.dll"
No Backup | If this switch is present, the file PECompact 2 processes will not be backed up. | /NoBackup | The default is to backup any file processed by PECompact 2. | /NoBackup
Quiet | If this switch is present, PECompact 2 reduces the amount of writing to the console. This is intended for use in development environments. | /Quiet | The default is off. That is, not to reduce the amount of console output. | /Quiet
Allow Multiple Compressions (on single file) | If this switch is present, PECompact 2 will compress even files that have already been compressed with PECompact or some other product. | /MultiCompress | The default is to skip (not compress) already compressed files. | /MultiCompress
Verbose (Console application only) | If this switch is present, verbose messages will be emitted to the standard output device. | /Verbose | The default is not to display verbose messages. | /Verbose
Recurse (Console application only) | If supplied, directories will be recursed when searching for target filespec. | /r | The default is not to recurse subdirectories. | /r
Skip Shared Sections | If "Yes" sections marked as shared between instances are not compressed. If "No" these sections are unshared then compressed. If you expect multiple instances of your module(s) to be a common occurance, or if you need to these section(s) shaed, you should set this option to "No". | /SkipSharedSections | The default is value is "No". | /SkipSharedSections=No /SkipSharedSections=Yes
Strip Debug | Debug information is included so that debuggers may identify symbols. Release builds should never contain debug information. By stripping it, PECompact ensures that it does not exist in a release build. | /StripDebug | The default mode is "yes". In this mode, debug information will always be stripped. | /StripDebug=No /StripDebug=Yes
Strip Fixups | Fixups allow a PE module to be rebased. That is, loaded an address different from that which it expected. Most executables do not need fixups, but most DLLs do. The default mode of "Auto" is recommended. | /StripFixups | The default mode is "auto". In this mode, fixups of executables will be removed, but fixups of DLLs and other modules will be preserved. | /StripFixups=No /StripFixups=Yes /StripFixups=Auto
Windows Module Loader (Console application only) | When this option is \"Yes\" all imported modules are added to the new import table so that Windows is responsible for loading them instead of the PECompact loader. When this option is \"No"\, the new import table may be smaller resulting in a smaller executable. It is recommended to leave this option \"Auto\" so that the appropriate action may be taken by PECompact. | /WinModuleLoader | The default mode is "auto". In this mode, PECompact will determine the appropriate action. | /WinModuleLoader=No /WinModuleLoader=Yes /WinModuleLoader=Auto


CODEC Plug-ins

04. CODEC Plug-ins

PECompact v2.x Documentation
(c) 2004 Bitsum Technologies
http://www.bitsum.com

PECompact2 is unique in its genre in that it allows for introduction of third-party CODECs (encoding/decoding algorithms) AND use of any number of CODECs on a single module (file). For example, one could use the LZMA CODEC and the CRC CODEC to 1.) Compress the data and 2.) Perform a CRC check on the data, respectively.

PECompact2 includes several CODECs for compression, encryption, and general utility. Some are made available only in the retail (registered) version of PECompact2.

Available CODECs:

Name | File | Author | Type | Description
aPLib | pec2codec_aplib.dll | Jørgen Ibsen | Compression aPLib | aPLib is a high performance compression algorithm with less decompression overhead than FFCE, but slower and does not compress larger files as well as FFCE. Its decompression code is slightly larger than FFCE's.
BriefLZ | pec2codec_brieflz.dll | Jørgen Ibsen | Compression BriefLZ | BriefLZ is a compression algorithm optimized for fast compression and reasonable ratios.
CRC32 | pec2codec_crc32.dll | Jørgen Ibsen | Integrity check CRC32 | A simple CRC32 check routine. If the data is found to be corrupt at runtime, you will see a message box stating such and the module will exit.
FFCE | pec2codec_ffce.dll | Jørgen Ibsen | Compression. FFCE | FFCE is the default CODEC. It is a high-performance general purpose compression algorithm. It performs best on larger files and has a decompressor that is slightly smaller than aPLib's
JCALG1 | pec2codec_jcalg1.dll | Bitsum Technologies | Compression JCALG1 | JCALG1 is a high-performance general purpose compression algorithm. Compression is much slower, but (especially) at higher compression levels JCALG1 may perform better than other CODECs on some files.
LZMA | pec2codec_lzma.dll | LZMA Author: 7-Zip (Igor Pavlov) Codec Author: Jørgen Ibsen | Compression LZMA | LZMA is a high performance compression algorithm that generally compresses substantially tighter than any other of the algorithms listed here. Since its use is governed by the LGPL license, it hasn't yet been determined whether or not compressed modules require special adherence to be legal. Please read the LGPL license and/or contact the LZMA author (www.7-zip.org) to determine legality.
MessageBox | pec2codec_messagebox.dll | Jørgen Ibsen | User I/O MessageBox Prompt | At runtime displays a message box entirely configured by the user (at time of encode) and takes action appropriate to the user's response at runtime. For example, one could install a 'Are you sure you want to allow this to run?' Yes/No message box on a script interpetor.
Password | pec2codec_password.dll | Jørgen Ibsen | Encryption Password key TEA | Encrypts a file using password entered by user as key. At runtime, the user is prompted for a password. If correct, the module is decompressed and run. If incorrect, the module exits. TEA encryption is used: http://www.simonshepherd.supanet.com/tea.htm .

CODEC Ordering:

The ordering use of CODECs is very important since it dramatically affects the output. For instance, you should always compression before encrypt, else the compression is likely to suffer a terrible penalty since the data was transformed into a much more random state by the encryption.

Sometimes you may want to use a single CODEC multiple times, for instance:

  1. pec2codec_crc32
  2. pec2codec_ffce
  3. pec2codec_crc32

This would perform a CRC32 check before and after decompression, making sure that the data supplied to the decompressor is unchanged and that your data is in its exact original state after decompression.


Loader Plug-ins

05. Loader Plug-ins

PECompact v2.x Documentation
(c) 2004 Bitsum Technologies
http://www.bitsum.com

PECompact allows for use of third-party loaders. Loaders are the piece(s) of code attached to host modules that reconstructs and decodes the module at runtime.

The following loaders are supplied with PECompact:
Name | File | Description
pec2ldr_default | pec2ldr_default.dll | The default loader for PECompact.
pec2ldr_antidebug | pec2ldr_antidebug.dll | A loader with some anti-debug code.
pec2ldr_slim | pec2ldr_slim.dll | A subset of the default loader. It does not contain code to handle import and other types of errors gracefully.
A Loader SDK is available for purchase from Bitsum Technolgoies for those interested in developing their own custom PECompact loaders. For information, see this page: http://www.bitsum.com/pec2loadersdk.htm on www.bitsum.com .


API Hook Plugins

06. API Hook Plug-ins

PECompact v2.x Documentation
(c) 2004 Bitsum Technologies
http://www.bitsum.com

In order to facilitate advanced functionality of many types, PECompact supports API Hook plug-in. An API Hook plug-in is a piece of code that is invoked at runtime by the PECompact loader (decompression stub) attached to compressed modules. This plug-in type is given the capability to hook API imports, hence its name. As with CODEC plug-ins, any number of

API Hook plug-ins included with PECompact:

Name | File | Description
Fast import | pec2hooks_fastimport | This is a custom implementation of GetProcAddress that uses hints to increase the speed of processing host module import tables. It performs a binary search and has full support of forwarded exports. The source code to this plug-in is included with the PECompact distribution.


Licensing

07. Licensing / Purchasing

PECompact v2.x Documentation
(c) 2004 Bitsum Technologies
http://www.bitsum.com

Since many customers who utilize PECompact also utilize PEBundle, this ordering page includes both products.

Prices in this document are as of date of publish and may have since changed. After clicking on the actual order link, the correct price will be displayed and the current prices are always shown at http://www.bitsum.com/pecompact_order.htm.

Go to: Defailed PECompact order links
         Go to: Detailed PEBundle order links. All prices in United States Dollars (USD).
Interested in the PECompact2 Loader SDK?
For a limited time: Buy both PECompact and PEBundle together for a HUGE savings. Process Supervisor also included free in all package purchases. Quick compare and link table (see below for license type details, click on a price to order):
License | PECompact | PEBundle | PECompact + PEBundle package purchase (SAVE $$$)
Freeware | $5 | $5 | $5 | save $5
Shareware [1 product] | $29.95 | $29.95 | $49.95 | save $9.95
Shareware [1-3 products] | $39.95 | $39.95 | $59.95 | save $19.95
Shareware [Unlimited products] | $59.95 | $59.95 | $69.95 | save $49.95 ** best value
Commercial [1 product] | $99.95 | $99.95 | $159.95 | save $39.95
Commercial [1-3 products] | $159.95 | $159.95 | $199.95 | save $119.95
Commercial [Unlimited products] | $299.95 | $299.95 | $399.95 | save $199.95 ** best value

Thank you for your interest in purchasing PECompact and/or PEBundle. To make PECompact and PEBundle affordable to everyone, we've created a few license types. We believe the added complexity in ordering is offset by the money saved for our customers. Don't worry, we'll make selection of the appropriate license type as easy as possible and are here to assist you.

We sell licenses based on what rights are granted to distribute software processed by PECompact or PEBundle.

There are three primary license types, click on the license type name to view the buy links:

License Intended Customers Quantity Types Detailed Description
Freeware
(FREE) 		Individual developers, students, and curious parties.
  • Unlimited.
This license provides rights to distribute compressed modules in the form of a 'freeware' product. A freeware product is one that is given away with absolutely no form of payment, tangible or intangible, from any entity for the transfer of the software. The evaluation versions of shareware products may NOT be distributed with this license. PECompact itself may not be distributed.
For use of PECompact or PEBundle on a single computer without the need to distribute any compressed files, this license is appropriate.
Shareware Individual developers and small sole proprietorships.
  • 1 product
  • 1-3 products
  • Unlimited.
This license provides rights to distribute compressed modules in the form of a 'try before you buy' (shareware) product. Compressed modules in both the evaluation and registered builds may be distributed. The software's primary method of purchase must be conversion of trial users of the evaluation version into registered users. PECompact or PEBundle itself may not be distributed.
Commercial Companies.
  • 1 product
  • 1-3 products
  • Unlimited
This license provides rights to distribute compressed modules in any form and in any way. PECompact or PEBundle itself may not be distributed.

Frequently Asked Questions

What is considered a software product (how many files)?

A product is a single distribution of any number of executables and modules. They must all be packaged and distributed together to be considered a product.

Which license is for me?

Q: I don't want to distribute anything, I just want to compress some files on my computer with PECompact.
You should pick the FREEWARE license.

Q: I am an individual developer who releases all my software as freeware.
You should pick the FREEWARE license.

Q: I am an individual developer who wants to compress my shareware product(s) with PECompact.
You should pick the SHAREWARE license and then choose the number of products you wish to distribute.

Q: I am a member of a company that wishes to compress its retail software with PECompact.
You should pick the COMMERCIAL license and then choose the number of products you wish to distribute.

What is your update policy?

 All products include one year of free updates. After this initial year, update subscriptions for each additional year may be purchased for only 50% of the retail price of the product. We also offer a 30 day money back guarantee with any purchase. If you are not fully satisfied with the product, we'll refund the cost of your order.

Questions? Email us at support@bitsum.com with the subject 'PECompact'.

PECompact Order Links

All prices in United States Dollars.
Click on title of license to order.

FREEWARE LICENSES (click title of license to order) - Intended for home users and individual freeware developers.

PECompact Freeware License FREE (requires $5 processing fee)
Intended for individual developers or students, this license provides rights to distribute compressed modules in the form of a 'freeware' product. A freeware product is one that is given away with absolutely no form of payment, tangible or intangible, from any entity for the transfer of the software. The evaluation versions of shareware products may NOT be distributed with this license.
Even though this license is FREE, we require registration. Since the easiest form of entry into our system is through our order processing system, we require you to 'purchase' this PECompact license for $5 USD. This is the minimum fee for the transaction by our order processing service. We receive no funds for the transaction.

This license is good for any number of freeware products produced by any entity.

SHAREWARE LICENSES (click title of license to order) - Intended for individual developers and small companies.

PECompact Shareware License [1 product] $29.95
Buy both PECompact and PEBundle 1 product shareware licenses for only $49.95!
Intended for individual developers or small sole proprietorships, this license provides rights to distribute compressed modules in the form of a 'try before you buy' (shareware) product. Compressed modules in both the evaluation and registered builds may be distributed. The software's primary method of purchase must be conversion of trial users of the evaluation version into registered users.
This license is good for ONE (1) shareware product produced by the same entity.

PECompact Shareware License [3 products] $39.95
Buy both PECompact and PEBundle 3 product shareware licenses for only $59.95!
Intended for individual developers or small sole proprietorships, this license provides rights to distribute compressed modules in the form of a 'try before you buy' (shareware) product. Compressed modules in both the evaluation and registered builds may be distributed. The software's primary method of purchase must be conversion of trial users of the evaluation version into registered users.
This license is good for up to THREE (3) shareware products produced by the same entity.

PECompact Shareware License [Unlimited products] $59.95
 Buy both PECompact and PEBundle unlimited product shareware licenses for only $69.95!
Intended for individual developers or small sole proprietorships, this license provides rights to distribute compressed modules in the form of a 'try before you buy' (shareware) product. Compressed modules in both the evaluation and registered builds may be distributed. The software's primary method of purchase must be conversion of trial users of the evaluation version into registered users.
This license is good for any number of shareware products produced by the same entity.

COMMERCIAL LICENSES (click title of license to order) - Intended for companies and other multi-person organizations.

PECompact Commercial License [1 product] $99.95
Buy both PECompact and PEBundle 1 product commercial licenses for only $159.95!
Intended for companies and other multi-person organizations, this license provides rights to distribute compressed modules in any form, at any price, and in any way. It is an all inclusive license for distribution of compressed modules. PECompact itself may not be distributed.
This license is good for ONE (1) products by the same entity.

PECompact Commercial License [1-3 products] $159.95
Buy both PECompact and PEBundle 3 product commercial licenses for only $199.95!
Intended for companies and other multi-person organizations, this license provides rights to distribute compressed modules in any form, at any price, and in any way. It is an all inclusive license for distribution of compressed modules. PECompact itself may not be distributed.
This license is good for THREE (3) products by the same entity.

PECompact Commercial License [Unlimited] $299.95
Buy both PECompact and PEBundle 3 product commercial licenses for only $399.95!
Intended for companies and other multi-person organizations, this license provides rights to distribute compressed modules in any form, at any price, and in any way. It is an all inclusive license for distribution of compressed modules. PECompact itself may not be distributed.
This license is good for any number of shareware products produced by the same entity.

PEBundle Order Links

FREEWARE LICENSES (click title of license to order) - Intended for home users and individual freeware developers.

PEBundle Freeware License FREE (requires $5 processing fee)
Intended for individual developers or students, this license provides rights to distribute compressed modules in the form of a 'freeware' product. A freeware product is one that is given away with absolutely no form of payment, tangible or intangible, from any entity for the transfer of the software. The evaluation versions of shareware products may NOT be distributed with this license.
Even though this license is FREE, we require registration. Since the easiest form of entry into our system is through our order processing system, we require you to 'purchase' this PEBundle license for $5 USD. This is the minimum fee for the transaction by our order processing service. We receive no funds for the transaction.

This license is good for any number of freeware products produced by any entity.

SHAREWARE LICENSES (click title of license to order) - Intended for individual developers and small companies.

PEBundle Shareware License [1 product] $29.95
Buy both PECompact and PEBundle 1 product shareware licenses for only $49.95!
Intended for individual developers or small sole proprietorships, this license provides rights to distribute compressed modules in the form of a 'try before you buy' (shareware) product. Bundled modules in both the evaluation and registered builds may be distributed. The software's primary method of purchase must be conversion of trial users of the evaluation version into registered users.
This license is good for ONE (1) shareware product produced by the same entity.

PEBundle Shareware License [1-3 products] $39.95
Buy both PECompact and PEBundle 3 product shareware licenses for only $59.95!
Intended for individual developers or small sole proprietorships, this license provides rights to distribute compressed modules in the form of a 'try before you buy' (shareware) product. Bundled modules in both the evaluation and registered builds may be distributed. The software's primary method of purchase must be conversion of trial users of the evaluation version into registered users.
This license is good for up to THREE (3) shareware products produced by the same entity.

PEBundle Shareware License [Unlimited products] $59.95
Buy both PECompact and PEBundle unlimited product shareware licenses for only $69.95!
Intended for individual developers or small sole proprietorships, this license provides rights to distribute compressed modules in the form of a 'try before you buy' (shareware) product. Bundled modules in both the evaluation and registered builds may be distributed. The software's primary method of purchase must be conversion of trial users of the evaluation version into registered users.
This license is good for any number of shareware products produced by the same entity.

COMMERCIAL LICENSES (click title of license to order) - Intended for companies and other multi-person organizations.

PEBundle Commercial License [1 product] $99.95
Buy both PECompact and PEBundle 1 product commercial licenses for only $159.95!
Intended for companies and other multi-person organizations, this license provides rights to distribute compressed modules in any form, at any price, and in any way. It is an all inclusive license for distribution of compressed modules. PEBundle itself may not be distributed.
This license is good for ONE (1) products by the same entity.

PEBundle Commercial License [1-3 products] $159.95
Buy both PECompact and PEBundle 3 product commercial licenses for only $199.95!
Intended for companies and other multi-person organizations, this license provides rights to distribute compressed modules in any form, at any price, and in any way. It is an all inclusive license for distribution of compressed modules. PEBundle itself may not be distributed.
This license is good for THREE (3) products by the same entity.

PEBundle Commercial License [Unlimited] $299.95
Buy both PECompact and PEBundle 3 product commercial licenses for only $399.95!
Intended for companies and other multi-person organizations, this license provides rights to distribute compressed modules in any form, at any price, and in any way. It is an all inclusive license for distribution of compressed modules. PEBundle itself may not be distributed.
This license is good for any number of shareware products produced by the same entity.


vti_encoding:SR|utf8-nl vti_author:SR|NEUROMANCER\\db90h vti_modifiedby:SR|NEUROMANCER\\db90h vti_timelastmodified:TR|14 Jun 2004 04:08:00 -0000 vti_timecreated:TR|14 Jun 2004 04:08:00 -0000 vti_cacheddtm:TX|14 Jun 2004 04:08:00 -0000 vti_filesize:IR|147 vti_cachedbodystyle:SR| vti_cachedneedsrewrite:BR|false vti_cachedhasbots:BR|false vti_cachedhastheme:BR|false vti_cachedhasborder:BR|false vti_metatags:VR|HTTP-EQUIV=Content-Type text/html;\\ charset=windows-1252 vti_charset:SR|windows-1252 vti_extenderversion:SR|6.0.2.5516 vti_backlinkinfo:VX|


Overview

00. Overview

PECompact v2.x
API Hook Plug-ins SDK

(c) 2004 Bitsum Technologies
http://www.bitsum.com

This documentation is pending. In the interim, please see the pec2hooks_fastimport source code included with the PECompact2 distribution.


vti_encoding:SR|utf8-nl vti_timelastmodified:TR|14 Jun 2004 04:00:41 -0000 vti_extenderversion:SR|6.0.2.5516 vti_author:SR|NEUROMANCER\\db90h vti_modifiedby:SR|NEUROMANCER\\db90h vti_timecreated:TR|14 Jun 2004 04:00:41 -0000 vti_cacheddtm:TX|14 Jun 2004 04:00:41 -0000 vti_filesize:IR|1371 vti_cachedtitle:SR|Overview vti_cachedbodystyle:SR| vti_cachedlinkinfo:VX|S|../PECompact\\ Documentation/00over3.png vti_cachedsvcrellinks:VX|FSUS|PECompact\\ Documentation/00over3.png vti_cachedneedsrewrite:BR|false vti_cachedhasbots:BR|false vti_cachedhastheme:BR|false vti_cachedhasborder:BR|false vti_metatags:VR|HTTP-EQUIV=Content-Language en-us HTTP-EQUIV=Content-Type text/html;\\ charset=windows-1252 vti_charset:SR|windows-1252 vti_language:SR|en-us vti_title:SR|Overview vti_backlinkinfo:VX|


vti_encoding:SR|utf8-nl vti_timelastmodified:TR|12 Jul 2004 22:45:28 -0000 vti_extenderversion:SR|6.0.2.5516 vti_author:SR|NEUROMANCER\\db90h vti_modifiedby:SR|NEUROMANCER\\db90h vti_timecreated:TR|27 Mar 2004 07:43:19 -0000 vti_title:SR|Codec Host Module vti_backlinkinfo:VX| vti_nexttolasttimemodified:TW|12 Jul 2004 22:45:22 -0000 vti_cacheddtm:TX|12 Jul 2004 22:45:22 -0000 vti_filesize:IR|3226 vti_cachedtitle:SR|Codec Host Module vti_cachedbodystyle:SR| vti_cachedlinkinfo:VX|H|Host\\ Functions/Codec\\ Functions/CodecFunctions.htm H|Host\\ Functions/CodecGetProcAddress.htm H|Host\\ Functions/CodecGetProcAddress.htm H|Host\\ Functions/GetNumberOfCodecs.htm vti_cachedsvcrellinks:VX|FHUS|CODEC\\ Plug-in\\ SDK/Codec\\ Host\\ Module/Host\\ Functions/Codec\\ Functions/CodecFunctions.htm FHUS|CODEC\\ Plug-in\\ SDK/Codec\\ Host\\ Module/Host\\ Functions/CodecGetProcAddress.htm FHUS|CODEC\\ Plug-in\\ SDK/Codec\\ Host\\ Module/Host\\ Functions/CodecGetProcAddress.htm FHUS|CODEC\\ Plug-in\\ SDK/Codec\\ Host\\ Module/Host\\ Functions/GetNumberOfCodecs.htm vti_cachedneedsrewrite:BR|false vti_cachedhasbots:BR|false vti_cachedhastheme:BR|false vti_cachedhasborder:BR|false vti_metatags:VR|GENERATOR Microsoft\\ Visual\\ Studio\\ .NET\\ 7.1 vti_charset:SR|windows-1252 vti_generator:SR|Microsoft Visual Studio .NET 7.1


vti_encoding:SR|utf8-nl vti_timelastmodified:TR|28 Mar 2004 11:19:24 -0000 vti_extenderversion:SR|6.0.2.5516 vti_author:SR|NEUROMANCER\\db90h vti_modifiedby:SR|NEUROMANCER\\db90h vti_timecreated:TR|28 Mar 2004 11:19:24 -0000 vti_cacheddtm:TX|28 Mar 2004 11:19:24 -0000 vti_filesize:IR|4125 vti_cachedtitle:SR|CodecCallback vti_cachedbodystyle:SR| vti_cachedlinkinfo:VX|K|CodecCallback.htm K|CodecCallback.htm K|CodecCallback.htm K|CodecCallback.htm K|CodecCallback.htm vti_cachedsvcrellinks:VX|FKUS|CODEC\\ Plug-in\\ SDK/Codec\\ Host\\ Module/Host\\ Functions/Codec\\ Functions/Codec\\ Callbacks/CodecCallback.htm FKUS|CODEC\\ Plug-in\\ SDK/Codec\\ Host\\ Module/Host\\ Functions/Codec\\ Functions/Codec\\ Callbacks/CodecCallback.htm FKUS|CODEC\\ Plug-in\\ SDK/Codec\\ Host\\ Module/Host\\ Functions/Codec\\ Functions/Codec\\ Callbacks/CodecCallback.htm FKUS|CODEC\\ Plug-in\\ SDK/Codec\\ Host\\ Module/Host\\ Functions/Codec\\ Functions/Codec\\ Callbacks/CodecCallback.htm FKUS|CODEC\\ Plug-in\\ SDK/Codec\\ Host\\ Module/Host\\ Functions/Codec\\ Functions/Codec\\ Callbacks/CodecCallback.htm vti_cachedneedsrewrite:BR|false vti_cachedhasbots:BR|false vti_cachedhastheme:BR|false vti_cachedhasborder:BR|false vti_metatags:VR|HTTP-EQUIV=Content-Language en-us HTTP-EQUIV=Content-Type text/html;\\ charset=windows-1252 vti_charset:SR|windows-1252 vti_language:SR|en-us vti_title:SR|CodecCallback vti_backlinkinfo:VX|CODEC\\ Plug-in\\ SDK/Codec\\ Host\\ Module/Host\\ Functions/Codec\\ Functions/Codec\\ Callbacks/CodecCallback.htm CODEC\\ Plug-in\\ SDK/Codec\\ Host\\ Module/Host\\ Functions/Codec\\ Functions/Functions/Encode.htm


vti_encoding:SR|utf8-nl vti_timelastmodified:TR|20 May 2004 13:36:13 -0000 vti_extenderversion:SR|6.0.2.5516 vti_author:SR|NEUROMANCER\\db90h vti_modifiedby:SR|NEUROMANCER\\db90h vti_timecreated:TR|20 May 2004 13:36:13 -0000 vti_cacheddtm:TX|20 May 2004 13:36:13 -0000 vti_filesize:IR|1945 vti_cachedtitle:SR|DecodeFast vti_cachedbodystyle:SR| vti_cachedneedsrewrite:BR|false vti_cachedhasbots:BR|false vti_cachedhastheme:BR|false vti_cachedhasborder:BR|false vti_metatags:VR|HTTP-EQUIV=Content-Type text/html;\\ charset=windows-1252 vti_charset:SR|windows-1252 vti_title:SR|DecodeFast vti_backlinkinfo:VX|


vti_encoding:SR|utf8-nl vti_timelastmodified:TR|20 May 2004 13:36:06 -0000 vti_extenderversion:SR|6.0.2.5516 vti_author:SR|NEUROMANCER\\db90h vti_modifiedby:SR|NEUROMANCER\\db90h vti_timecreated:TR|20 May 2004 13:36:06 -0000 vti_cacheddtm:TX|20 May 2004 13:36:06 -0000 vti_filesize:IR|1950 vti_cachedtitle:SR|DecodeSmall vti_cachedbodystyle:SR| vti_cachedneedsrewrite:BR|false vti_cachedhasbots:BR|false vti_cachedhastheme:BR|false vti_cachedhasborder:BR|false vti_metatags:VR|HTTP-EQUIV=Content-Type text/html;\\ charset=windows-1252 vti_charset:SR|windows-1252 vti_title:SR|DecodeSmall vti_backlinkinfo:VX|


vti_encoding:SR|utf8-nl vti_timelastmodified:TR|25 Apr 2004 13:28:47 -0000 vti_extenderversion:SR|6.0.2.5516 vti_author:SR|NEUROMANCER\\db90h vti_modifiedby:SR|NEUROMANCER\\db90h vti_timecreated:TR|25 Apr 2004 13:28:47 -0000 vti_cacheddtm:TX|25 Apr 2004 13:28:47 -0000 vti_filesize:IR|2773 vti_cachedtitle:SR|Encode vti_cachedbodystyle:SR| vti_cachedlinkinfo:VX|H|../Codec\\ Callbacks/CodecCallback.htm vti_cachedsvcrellinks:VX|FHUS|CODEC\\ Plug-in\\ SDK/Codec\\ Host\\ Module/Host\\ Functions/Codec\\ Functions/Codec\\ Callbacks/CodecCallback.htm vti_cachedneedsrewrite:BR|false vti_cachedhasbots:BR|false vti_cachedhastheme:BR|false vti_cachedhasborder:BR|false vti_metatags:VR|HTTP-EQUIV=Content-Language en-us HTTP-EQUIV=Content-Type text/html;\\ charset=windows-1252 vti_charset:SR|windows-1252 vti_language:SR|en-us vti_title:SR|Encode vti_backlinkinfo:VX|


vti_encoding:SR|utf8-nl vti_timelastmodified:TR|27 Mar 2004 06:59:22 -0000 vti_extenderversion:SR|6.0.2.5516 vti_author:SR|NEUROMANCER\\db90h vti_modifiedby:SR|NEUROMANCER\\db90h vti_timecreated:TR|27 Mar 2004 06:59:22 -0000 vti_cacheddtm:TX|27 Mar 2004 06:59:22 -0000 vti_filesize:IR|1673 vti_cachedtitle:SR|GetCodecAuthor vti_cachedbodystyle:SR| vti_cachedneedsrewrite:BR|false vti_cachedhasbots:BR|false vti_cachedhastheme:BR|false vti_cachedhasborder:BR|false vti_metatags:VR|HTTP-EQUIV=Content-Type text/html;\\ charset=windows-1252 vti_charset:SR|windows-1252 vti_title:SR|GetCodecAuthor vti_backlinkinfo:VX|


vti_encoding:SR|utf8-nl vti_timelastmodified:TR|27 Mar 2004 07:00:39 -0000 vti_extenderversion:SR|6.0.2.5516 vti_author:SR|NEUROMANCER\\db90h vti_modifiedby:SR|NEUROMANCER\\db90h vti_timecreated:TR|27 Mar 2004 07:00:39 -0000 vti_cacheddtm:TX|27 Mar 2004 07:00:39 -0000 vti_filesize:IR|1665 vti_cachedtitle:SR|GetCodecName vti_cachedbodystyle:SR| vti_cachedneedsrewrite:BR|false vti_cachedhasbots:BR|false vti_cachedhastheme:BR|false vti_cachedhasborder:BR|false vti_metatags:VR|HTTP-EQUIV=Content-Type text/html;\\ charset=windows-1252 vti_charset:SR|windows-1252 vti_title:SR|GetCodecName vti_backlinkinfo:VX|


vti_encoding:SR|utf8-nl vti_timelastmodified:TR|27 Mar 2004 22:41:30 -0000 vti_extenderversion:SR|6.0.2.5516 vti_author:SR|NEUROMANCER\\db90h vti_modifiedby:SR|NEUROMANCER\\db90h vti_timecreated:TR|27 Mar 2004 22:41:30 -0000 vti_cacheddtm:TX|27 Mar 2004 22:41:30 -0000 vti_filesize:IR|1621 vti_cachedtitle:SR|GetCodecVersion vti_cachedbodystyle:SR| vti_cachedneedsrewrite:BR|false vti_cachedhasbots:BR|false vti_cachedhastheme:BR|false vti_cachedhasborder:BR|false vti_metatags:VR|HTTP-EQUIV=Content-Type text/html;\\ charset=windows-1252 vti_charset:SR|windows-1252 vti_title:SR|GetCodecVersion vti_backlinkinfo:VX|


vti_encoding:SR|utf8-nl vti_timelastmodified:TR|27 Mar 2004 07:09:34 -0000 vti_extenderversion:SR|6.0.2.5516 vti_author:SR|NEUROMANCER\\db90h vti_modifiedby:SR|NEUROMANCER\\db90h vti_timecreated:TR|27 Mar 2004 07:09:34 -0000 vti_cacheddtm:TX|27 Mar 2004 07:09:34 -0000 vti_filesize:IR|1228 vti_cachedtitle:SR|GetDecodeFastFuncSize vti_cachedbodystyle:SR| vti_cachedneedsrewrite:BR|false vti_cachedhasbots:BR|false vti_cachedhastheme:BR|false vti_cachedhasborder:BR|false vti_metatags:VR|HTTP-EQUIV=Content-Type text/html;\\ charset=windows-1252 vti_charset:SR|windows-1252 vti_title:SR|GetDecodeFastFuncSize vti_backlinkinfo:VX|


vti_encoding:SR|utf8-nl vti_timelastmodified:TR|27 Mar 2004 07:11:12 -0000 vti_extenderversion:SR|6.0.2.5516 vti_author:SR|NEUROMANCER\\db90h vti_modifiedby:SR|NEUROMANCER\\db90h vti_timecreated:TR|27 Mar 2004 07:11:12 -0000 vti_cacheddtm:TX|27 Mar 2004 07:11:12 -0000 vti_filesize:IR|1234 vti_cachedtitle:SR|GetDecodeSmallFuncSize vti_cachedbodystyle:SR| vti_cachedneedsrewrite:BR|false vti_cachedhasbots:BR|false vti_cachedhastheme:BR|false vti_cachedhasborder:BR|false vti_metatags:VR|HTTP-EQUIV=Content-Type text/html;\\ charset=windows-1252 vti_charset:SR|windows-1252 vti_title:SR|GetDecodeSmallFuncSize vti_backlinkinfo:VX|


vti_encoding:SR|utf8-nl vti_timelastmodified:TR|27 Mar 2004 07:19:31 -0000 vti_extenderversion:SR|6.0.2.5516 vti_author:SR|NEUROMANCER\\db90h vti_modifiedby:SR|NEUROMANCER\\db90h vti_timecreated:TR|27 Mar 2004 07:19:31 -0000 vti_cacheddtm:TX|27 Mar 2004 07:19:31 -0000 vti_filesize:IR|1173 vti_cachedtitle:SR|GetMaximumEncodingLevel vti_cachedbodystyle:SR| vti_cachedneedsrewrite:BR|false vti_cachedhasbots:BR|false vti_cachedhastheme:BR|false vti_cachedhasborder:BR|false vti_metatags:VR|HTTP-EQUIV=Content-Type text/html;\\ charset=windows-1252 vti_charset:SR|windows-1252 vti_title:SR|GetMaximumEncodingLevel vti_backlinkinfo:VX|


vti_encoding:SR|utf8-nl vti_timelastmodified:TR|21 Apr 2004 07:59:57 -0000 vti_extenderversion:SR|6.0.2.5516 vti_author:SR|NEUROMANCER\\db90h vti_modifiedby:SR|NEUROMANCER\\db90h vti_timecreated:TR|21 Apr 2004 07:59:57 -0000 vti_cacheddtm:TX|21 Apr 2004 07:59:57 -0000 vti_filesize:IR|1345 vti_cachedtitle:SR|PEC2_DECODE_EXTRA vti_cachedbodystyle:SR| vti_cachedneedsrewrite:BR|false vti_cachedhasbots:BR|false vti_cachedhastheme:BR|false vti_cachedhasborder:BR|false vti_metatags:VR|HTTP-EQUIV=Content-Language en-us HTTP-EQUIV=Content-Type text/html;\\ charset=windows-1252 vti_charset:SR|windows-1252 vti_language:SR|en-us vti_title:SR|PEC2_DECODE_EXTRA vti_backlinkinfo:VX|


vti_encoding:SR|utf8-nl vti_timelastmodified:TR|14 Jun 2004 04:03:26 -0000 vti_extenderversion:SR|6.0.2.5516 vti_author:SR|NEUROMANCER\\db90h vti_modifiedby:SR|NEUROMANCER\\db90h vti_timecreated:TR|14 Jun 2004 04:03:26 -0000 vti_cacheddtm:TX|14 Jun 2004 04:03:26 -0000 vti_filesize:IR|4749 vti_cachedtitle:SR|Overview vti_cachedbodystyle:SR| vti_cachedlinkinfo:VX|S|00over3.png H|03codecs.htm H|01consoleapp.htm H|02gui.htm H|030options.htm H|03codecs.htm H|04loaders.htm H|050apihooks.htm H|05licensing.htm vti_cachedsvcrellinks:VX|FSUS|PECompact\\ Documentation/00over3.png FHUS|PECompact\\ Documentation/03codecs.htm FHUS|PECompact\\ Documentation/01consoleapp.htm FHUS|PECompact\\ Documentation/02gui.htm FHUS|PECompact\\ Documentation/030options.htm FHUS|PECompact\\ Documentation/03codecs.htm FHUS|PECompact\\ Documentation/04loaders.htm FHUS|PECompact\\ Documentation/050apihooks.htm FHUS|PECompact\\ Documentation/05licensing.htm vti_cachedneedsrewrite:BR|false vti_cachedhasbots:BR|false vti_cachedhastheme:BR|false vti_cachedhasborder:BR|false vti_metatags:VR|HTTP-EQUIV=Content-Language en-us HTTP-EQUIV=Content-Type text/html;\\ charset=windows-1252 vti_charset:SR|windows-1252 vti_language:SR|en-us vti_title:SR|Overview vti_backlinkinfo:VX|


vti_encoding:SR|utf8-nl vti_timelastmodified:TR|14 Jun 2004 04:03:15 -0000 vti_extenderversion:SR|6.0.2.5516 vti_author:SR|NEUROMANCER\\db90h vti_modifiedby:SR|NEUROMANCER\\db90h vti_timecreated:TR|14 Jun 2004 04:03:15 -0000 vti_cacheddtm:TX|14 Jun 2004 04:03:15 -0000 vti_filesize:IR|1890 vti_cachedtitle:SR|Using the Console Application vti_cachedbodystyle:SR| vti_cachedlinkinfo:VX|S|00over3.png S|01cons1.png H|030options.htm vti_cachedsvcrellinks:VX|FSUS|PECompact\\ Documentation/00over3.png FSUS|PECompact\\ Documentation/01cons1.png FHUS|PECompact\\ Documentation/030options.htm vti_cachedneedsrewrite:BR|false vti_cachedhasbots:BR|false vti_cachedhastheme:BR|false vti_cachedhasborder:BR|false vti_metatags:VR|HTTP-EQUIV=Content-Language en-us HTTP-EQUIV=Content-Type text/html;\\ charset=windows-1252 vti_charset:SR|windows-1252 vti_language:SR|en-us vti_title:SR|Using the Console Application vti_backlinkinfo:VX|PECompact\\ Documentation/00overview.htm


vti_encoding:SR|utf8-nl vti_timelastmodified:TR|17 Jul 2004 09:36:34 -0000 vti_extenderversion:SR|6.0.2.5516 vti_author:SR|NEUROMANCER\\db90h vti_modifiedby:SR|NEUROMANCER\\db90h vti_timecreated:TR|14 Jun 2004 04:04:12 -0000 vti_title:SR|Using the GUI vti_backlinkinfo:VX|PECompact\\ Documentation/00overview.htm PECompact\\ Documentation/02gui.htm vti_nexttolasttimemodified:TW|17 Jul 2004 09:36:28 -0000 vti_cacheddtm:TX|17 Jul 2004 09:36:28 -0000 vti_filesize:IR|9926 vti_cachedtitle:SR|Using the GUI vti_cachedbodystyle:SR| vti_cachedlinkinfo:VX|S|00over3.png K|02gui.htm K|02gui.htm K|02gui.htm K|02gui.htm K|02gui.htm S|02gui.5.png S|02gui.4.png S|02gui.2.png H|030options.htm H|03codecs.htm H|03codecs.htm S|02gui.8.png H|03codecs.htm K|03codecs.htm H|03codecs.htm H|050apihooks.htm S|02gui.3.png vti_cachedsvcrellinks:VX|FSUS|PECompact\\ Documentation/00over3.png FKUS|PECompact\\ Documentation/02gui.htm FKUS|PECompact\\ Documentation/02gui.htm FKUS|PECompact\\ Documentation/02gui.htm FKUS|PECompact\\ Documentation/02gui.htm FKUS|PECompact\\ Documentation/02gui.htm FSUS|PECompact\\ Documentation/02gui.5.png FSUS|PECompact\\ Documentation/02gui.4.png FSUS|PECompact\\ Documentation/02gui.2.png FHUS|PECompact\\ Documentation/030options.htm FHUS|PECompact\\ Documentation/03codecs.htm FHUS|PECompact\\ Documentation/03codecs.htm FSUS|PECompact\\ Documentation/02gui.8.png FHUS|PECompact\\ Documentation/03codecs.htm FHUS|PECompact\\ Documentation/03codecs.htm FHUS|PECompact\\ Documentation/03codecs.htm FHUS|PECompact\\ Documentation/050apihooks.htm FSUS|PECompact\\ Documentation/02gui.3.png vti_cachedneedsrewrite:BR|false vti_cachedhasbots:BR|false vti_cachedhastheme:BR|false vti_cachedhasborder:BR|false vti_metatags:VR|HTTP-EQUIV=Content-Language en-us HTTP-EQUIV=Content-Type text/html;\\ charset=windows-1252 vti_charset:SR|windows-1252 vti_language:SR|en-us


vti_encoding:SR|utf8-nl vti_timelastmodified:TR|14 Jun 2004 04:08:39 -0000 vti_extenderversion:SR|6.0.2.5516 vti_author:SR|NEUROMANCER\\db90h vti_modifiedby:SR|NEUROMANCER\\db90h vti_timecreated:TR|14 Jun 2004 04:03:37 -0000 vti_title:SR|CODEC Plug-ins vti_backlinkinfo:VX|PECompact\\ Documentation/00overview.htm PECompact\\ Documentation/02gui.htm PECompact\\ Documentation/030options.htm vti_nexttolasttimemodified:TW|14 Jun 2004 04:03:37 -0000 vti_cacheddtm:TX|14 Jun 2004 04:08:39 -0000 vti_filesize:IR|7130 vti_cachedtitle:SR|CODEC Plug-ins vti_cachedbodystyle:SR| vti_cachedlinkinfo:VX|S|00over3.png H|http://www.7-zip.org H|http://www.simonshepherd.supanet.com/tea.htm vti_cachedsvcrellinks:VX|FSUS|PECompact\\ Documentation/00over3.png NHHS|http://www.7-zip.org NHHS|http://www.simonshepherd.supanet.com/tea.htm vti_cachedneedsrewrite:BR|false vti_cachedhasbots:BR|false vti_cachedhastheme:BR|false vti_cachedhasborder:BR|false vti_metatags:VR|HTTP-EQUIV=Content-Language en-us HTTP-EQUIV=Content-Type text/html;\\ charset=windows-1252 vti_charset:SR|windows-1252 vti_language:SR|en-us


vti_encoding:SR|utf8-nl vti_timelastmodified:TR|14 Jun 2004 04:08:54 -0000 vti_extenderversion:SR|6.0.2.5516 vti_author:SR|NEUROMANCER\\db90h vti_modifiedby:SR|NEUROMANCER\\db90h vti_timecreated:TR|14 Jun 2004 04:03:48 -0000 vti_title:SR|Loader Plug-ins vti_backlinkinfo:VX|PECompact\\ Documentation/00overview.htm vti_nexttolasttimemodified:TW|14 Jun 2004 04:08:54 -0000 vti_cacheddtm:TX|14 Jun 2004 04:08:54 -0000 vti_filesize:IR|2584 vti_cachedtitle:SR|Loader Plug-ins vti_cachedbodystyle:SR| vti_cachedlinkinfo:VX|S|00over3.png H|http://www.bitsum.com/pec2loadersdk.htm H|http://www.bitsum.com vti_cachedsvcrellinks:VX|FSUS|PECompact\\ Documentation/00over3.png NHHS|http://www.bitsum.com/pec2loadersdk.htm NHHS|http://www.bitsum.com vti_cachedneedsrewrite:BR|false vti_cachedhasbots:BR|false vti_cachedhastheme:BR|false vti_cachedhasborder:BR|false vti_metatags:VR|HTTP-EQUIV=Content-Language en-us HTTP-EQUIV=Content-Type text/html;\\ charset=windows-1252 vti_charset:SR|windows-1252 vti_language:SR|en-us


vti_encoding:SR|utf8-nl vti_timelastmodified:TR|18 Jun 2004 01:19:29 -0000 vti_extenderversion:SR|6.0.2.5516 vti_author:SR|NEUROMANCER\\db90h vti_modifiedby:SR|NEUROMANCER\\db90h vti_timecreated:TR|14 Jun 2004 04:03:58 -0000 vti_title:SR|Licensing vti_backlinkinfo:VX|PECompact\\ Documentation/00overview.htm PECompact\\ Documentation/05licensing.htm vti_nexttolasttimemodified:TW|18 Jun 2004 01:18:37 -0000 vti_cacheddtm:TX|18 Jun 2004 01:19:29 -0000 vti_filesize:IR|153213 vti_cachedtitle:SR|Licensing vti_cachedbodystyle:SR| vti_cachedlinkinfo:VX|S|00over3.png H|http://www.bitsum.com/pecompact_order.htm K|05licensing.htm K|05licensing.htm H|http://www.bitsum.com/loadersdk.htm H|http://www.regsoft.net/purchase.php3 H|http://www.regsoft.net/purchase.php3 H|http://www.regsoft.net/purchase.php3 H|http://www.regsoft.net/purchase.php3 H|http://www.regsoft.net/purchase.php3 H|http://www.regsoft.net/purchase.php3 H|http://www.regsoft.net/purchase.php3 H|http://www.regsoft.net/purchase.php3 H|http://www.regsoft.net/purchase.php3 H|http://www.regsoft.net/purchase.php3 H|http://www.regsoft.net/purchase.php3 H|http://www.regsoft.net/purchase.php3 H|http://www.regsoft.net/purchase.php3 H|http://www.regsoft.net/purchase.php3 H|http://www.regsoft.net/purchase.php3 H|http://www.regsoft.net/purchase.php3 H|http://www.regsoft.net/purchase.php3 H|http://www.regsoft.net/purchase.php3 H|http://www.regsoft.net/purchase.php3 H|http://www.regsoft.net/purchase.php3 H|http://www.regsoft.net/purchase.php3 H|mailto:support@bitsum.com K|05licensing.htm K|05licensing.htm K|05licensing.htm H|mailto:support@bitsum.com H|http://www.regsoft.net/purchase.php3 H|http://www.regsoft.net/purchase.php3 H|http://www.regsoft.net/purchase.php3 H|http://www.regsoft.net/purchase.php3 H|http://www.regsoft.net/purchase.php3 H|http://www.regsoft.net/purchase.php3 H|http://www.regsoft.net/purchase.php3 H|http://www.regsoft.net/purchase.php3 H|http://www.regsoft.net/purchase.php3 H|http://www.regsoft.net/purchase.php3 H|http://www.regsoft.net/purchase.php3 H|http://www.regsoft.net/purchase.php3 H|http://www.regsoft.net/purchase.php3 H|http://www.regsoft.net/purchase.php3 H|http://www.regsoft.net/purchase.php3 H|http://www.regsoft.net/purchase.php3 H|http://www.regsoft.net/purchase.php3 H|http://www.regsoft.net/purchase.php3 H|http://www.regsoft.net/purchase.php3 H|http://www.regsoft.net/purchase.php3 H|http://www.regsoft.net/purchase.php3 H|http://www.regsoft.net/purchase.php3 H|http://www.regsoft.net/purchase.php3 H|http://www.regsoft.net/purchase.php3 H|http://www.regsoft.net/purchase.php3 H|http://www.regsoft.net/purchase.php3 vti_cachedsvcrellinks:VX|FSUS|PECompact\\ Documentation/00over3.png NHHS|http://www.bitsum.com/pecompact_order.htm FKUS|PECompact\\ Documentation/05licensing.htm FKUS|PECompact\\ Documentation/05licensing.htm NHHS|http://www.bitsum.com/loadersdk.htm NHHS|http://www.regsoft.net/purchase.php3 NHHS|http://www.regsoft.net/purchase.php3 NHHS|http://www.regsoft.net/purchase.php3 NHHS|http://www.regsoft.net/purchase.php3 NHHS|http://www.regsoft.net/purchase.php3 NHHS|http://www.regsoft.net/purchase.php3 NHHS|http://www.regsoft.net/purchase.php3 NHHS|http://www.regsoft.net/purchase.php3 NHHS|http://www.regsoft.net/purchase.php3 NHHS|http://www.regsoft.net/purchase.php3 NHHS|http://www.regsoft.net/purchase.php3 NHHS|http://www.regsoft.net/purchase.php3 NHHS|http://www.regsoft.net/purchase.php3 NHHS|http://www.regsoft.net/purchase.php3 NHHS|http://www.regsoft.net/purchase.php3 NHHS|http://www.regsoft.net/purchase.php3 NHHS|http://www.regsoft.net/purchase.php3 NHHS|http://www.regsoft.net/purchase.php3 NHHS|http://www.regsoft.net/purchase.php3 NHHS|http://www.regsoft.net/purchase.php3 NHHS|http://www.regsoft.net/purchase.php3 NHUS|mailto:support@bitsum.com FKUS|PECompact\\ Documentation/05licensing.htm FKUS|PECompact\\ Documentation/05licensing.htm FKUS|PECompact\\ Documentation/05licensing.htm NHUS|mailto:support@bitsum.com NHHS|http://www.regsoft.net/purchase.php3 NHHS|http://www.regsoft.net/purchase.php3 NHHS|http://www.regsoft.net/purchase.php3 NHHS|http://www.regsoft.net/purchase.php3 NHHS|http://www.regsoft.net/purchase.php3 NHHS|http://www.regsoft.net/purchase.php3 NHHS|http://www.regsoft.net/purchase.php3 NHHS|http://www.regsoft.net/purchase.php3 NHHS|http://www.regsoft.net/purchase.php3 NHHS|http://www.regsoft.net/purchase.php3 NHHS|http://www.regsoft.net/purchase.php3 NHHS|http://www.regsoft.net/purchase.php3 NHHS|http://www.regsoft.net/purchase.php3 NHHS|http://www.regsoft.net/purchase.php3 NHHS|http://www.regsoft.net/purchase.php3 NHHS|http://www.regsoft.net/purchase.php3 NHHS|http://www.regsoft.net/purchase.php3 NHHS|http://www.regsoft.net/purchase.php3 NHHS|http://www.regsoft.net/purchase.php3 NHHS|http://www.regsoft.net/purchase.php3 NHHS|http://www.regsoft.net/purchase.php3 NHHS|http://www.regsoft.net/purchase.php3 NHHS|http://www.regsoft.net/purchase.php3 NHHS|http://www.regsoft.net/purchase.php3 NHHS|http://www.regsoft.net/purchase.php3 NHHS|http://www.regsoft.net/purchase.php3 vti_cachedneedsrewrite:BR|false vti_cachedhasbots:BR|false vti_cachedhastheme:BR|false vti_cachedhasborder:BR|false vti_metatags:VR|HTTP-EQUIV=Content-Language en-us HTTP-EQUIV=Content-Type text/html;\\ charset=windows-1252 vti_charset:SR|windows-1252 vti_language:SR|en-us


vti_encoding:SR|utf8-nl vti_timelastmodified:TR|18 Jun 2004 01:21:39 -0000 vti_extenderversion:SR|6.0.2.5516 vti_author:SR|NEUROMANCER\\db90h vti_modifiedby:SR|NEUROMANCER\\db90h vti_timecreated:TR|14 Jun 2004 01:24:01 -0000 vti_title:SR|Configuration Options vti_backlinkinfo:VX|PECompact\\ Documentation/00overview.htm PECompact\\ Documentation/02gui.htm PECompact\\ Documentation/01consoleapp.htm vti_nexttolasttimemodified:TW|18 Jun 2004 01:21:25 -0000 vti_cacheddtm:TX|18 Jun 2004 01:21:24 -0000 vti_filesize:IR|12675 vti_cachedtitle:SR|Configuration Options vti_cachedbodystyle:SR| vti_cachedlinkinfo:VX|S|00over3.png H|03codecs.htm vti_cachedsvcrellinks:VX|FSUS|PECompact\\ Documentation/00over3.png FHUS|PECompact\\ Documentation/03codecs.htm vti_cachedneedsrewrite:BR|false vti_cachedhasbots:BR|false vti_cachedhastheme:BR|false vti_cachedhasborder:BR|false vti_metatags:VR|HTTP-EQUIV=Content-Language en-us HTTP-EQUIV=Content-Type text/html;\\ charset=windows-1252 vti_charset:SR|windows-1252 vti_language:SR|en-us


vti_encoding:SR|utf8-nl vti_timelastmodified:TR|14 Jun 2004 04:08:14 -0000 vti_extenderversion:SR|6.0.2.5516 vti_author:SR|NEUROMANCER\\db90h vti_modifiedby:SR|NEUROMANCER\\db90h vti_timecreated:TR|14 Jun 2004 04:04:22 -0000 vti_title:SR|API Hook Plugins vti_backlinkinfo:VX|PECompact\\ Documentation/00overview.htm PECompact\\ Documentation/02gui.htm vti_nexttolasttimemodified:TW|14 Jun 2004 04:08:14 -0000 vti_cacheddtm:TX|14 Jun 2004 04:08:14 -0000 vti_filesize:IR|2293 vti_cachedtitle:SR|API Hook Plugins vti_cachedbodystyle:SR| vti_cachedlinkinfo:VX|S|00over3.png vti_cachedsvcrellinks:VX|FSUS|PECompact\\ Documentation/00over3.png vti_cachedneedsrewrite:BR|false vti_cachedhasbots:BR|false vti_cachedhastheme:BR|false vti_cachedhasborder:BR|false vti_metatags:VR|HTTP-EQUIV=Content-Language en-us HTTP-EQUIV=Content-Type text/html;\\ charset=windows-1252 vti_charset:SR|windows-1252 vti_language:SR|en-us