diff options
Diffstat (limited to 'ShellPkg/Library/UefiShellDebug1CommandsLib/Compress.c')
-rw-r--r-- | ShellPkg/Library/UefiShellDebug1CommandsLib/Compress.c | 549 |
1 files changed, 279 insertions, 270 deletions
diff --git a/ShellPkg/Library/UefiShellDebug1CommandsLib/Compress.c b/ShellPkg/Library/UefiShellDebug1CommandsLib/Compress.c index 4d9a6fb467..c76805ed30 100644 --- a/ShellPkg/Library/UefiShellDebug1CommandsLib/Compress.c +++ b/ShellPkg/Library/UefiShellDebug1CommandsLib/Compress.c @@ -22,36 +22,36 @@ //
// Macro Definitions
//
-typedef INT16 NODE;
-#define UINT8_MAX 0xff
-#define UINT8_BIT 8
-#define THRESHOLD 3
-#define INIT_CRC 0
-#define WNDBIT 13
-#define WNDSIZ (1U << WNDBIT)
-#define MAXMATCH 256
-#define BLKSIZ (1U << 14) // 16 * 1024U
-#define PERC_FLAG 0x8000U
-#define CODE_BIT 16
-#define NIL 0
-#define MAX_HASH_VAL (3 * WNDSIZ + (WNDSIZ / 512 + 1) * UINT8_MAX)
-#define HASH(LoopVar7, LoopVar5) ((LoopVar7) + ((LoopVar5) << (WNDBIT - 9)) + WNDSIZ * 2)
-#define CRCPOLY 0xA001
-#define UPDATE_CRC(LoopVar5) mCrc = mCrcTable[(mCrc ^ (LoopVar5)) & 0xFF] ^ (mCrc >> UINT8_BIT)
+typedef INT16 NODE;
+#define UINT8_MAX 0xff
+#define UINT8_BIT 8
+#define THRESHOLD 3
+#define INIT_CRC 0
+#define WNDBIT 13
+#define WNDSIZ (1U << WNDBIT)
+#define MAXMATCH 256
+#define BLKSIZ (1U << 14) // 16 * 1024U
+#define PERC_FLAG 0x8000U
+#define CODE_BIT 16
+#define NIL 0
+#define MAX_HASH_VAL (3 * WNDSIZ + (WNDSIZ / 512 + 1) * UINT8_MAX)
+#define HASH(LoopVar7, LoopVar5) ((LoopVar7) + ((LoopVar5) << (WNDBIT - 9)) + WNDSIZ * 2)
+#define CRCPOLY 0xA001
+#define UPDATE_CRC(LoopVar5) mCrc = mCrcTable[(mCrc ^ (LoopVar5)) & 0xFF] ^ (mCrc >> UINT8_BIT)
//
// C: the Char&Len Set; P: the Position Set; T: the exTra Set
//
-#define NC (UINT8_MAX + MAXMATCH + 2 - THRESHOLD)
-#define CBIT 9
-#define NP (WNDBIT + 1)
-#define PBIT 4
-#define NT (CODE_BIT + 3)
-#define TBIT 5
+#define NC (UINT8_MAX + MAXMATCH + 2 - THRESHOLD)
+#define CBIT 9
+#define NP (WNDBIT + 1)
+#define PBIT 4
+#define NT (CODE_BIT + 3)
+#define TBIT 5
#if NT > NP
- #define NPT NT
+#define NPT NT
#else
- #define NPT NP
+#define NPT NP
#endif
//
// Function Prototypes
@@ -63,8 +63,8 @@ typedef INT16 NODE; @param[in] Data The dword to put.
**/
VOID
-PutDword(
- IN UINT32 Data
+PutDword (
+ IN UINT32 Data
);
//
@@ -75,47 +75,47 @@ STATIC UINT8 *mDst; STATIC UINT8 *mSrcUpperLimit;
STATIC UINT8 *mDstUpperLimit;
-STATIC UINT8 *mLevel;
-STATIC UINT8 *mText;
-STATIC UINT8 *mChildCount;
-STATIC UINT8 *mBuf;
-STATIC UINT8 mCLen[NC];
-STATIC UINT8 mPTLen[NPT];
-STATIC UINT8 *mLen;
-STATIC INT16 mHeap[NC + 1];
-STATIC INT32 mRemainder;
-STATIC INT32 mMatchLen;
-STATIC INT32 mBitCount;
-STATIC INT32 mHeapSize;
-STATIC INT32 mTempInt32;
-STATIC UINT32 mBufSiz = 0;
-STATIC UINT32 mOutputPos;
-STATIC UINT32 mOutputMask;
-STATIC UINT32 mSubBitBuf;
-STATIC UINT32 mCrc;
-STATIC UINT32 mCompSize;
-STATIC UINT32 mOrigSize;
-
-STATIC UINT16 *mFreq;
-STATIC UINT16 *mSortPtr;
-STATIC UINT16 mLenCnt[17];
-STATIC UINT16 mLeft[2 * NC - 1];
-STATIC UINT16 mRight[2 * NC - 1];
-STATIC UINT16 mCrcTable[UINT8_MAX + 1];
-STATIC UINT16 mCFreq[2 * NC - 1];
-STATIC UINT16 mCCode[NC];
-STATIC UINT16 mPFreq[2 * NP - 1];
-STATIC UINT16 mPTCode[NPT];
-STATIC UINT16 mTFreq[2 * NT - 1];
-
-STATIC NODE mPos;
-STATIC NODE mMatchPos;
-STATIC NODE mAvail;
-STATIC NODE *mPosition;
-STATIC NODE *mParent;
-STATIC NODE *mPrev;
-STATIC NODE *mNext = NULL;
-INT32 mHuffmanDepth = 0;
+STATIC UINT8 *mLevel;
+STATIC UINT8 *mText;
+STATIC UINT8 *mChildCount;
+STATIC UINT8 *mBuf;
+STATIC UINT8 mCLen[NC];
+STATIC UINT8 mPTLen[NPT];
+STATIC UINT8 *mLen;
+STATIC INT16 mHeap[NC + 1];
+STATIC INT32 mRemainder;
+STATIC INT32 mMatchLen;
+STATIC INT32 mBitCount;
+STATIC INT32 mHeapSize;
+STATIC INT32 mTempInt32;
+STATIC UINT32 mBufSiz = 0;
+STATIC UINT32 mOutputPos;
+STATIC UINT32 mOutputMask;
+STATIC UINT32 mSubBitBuf;
+STATIC UINT32 mCrc;
+STATIC UINT32 mCompSize;
+STATIC UINT32 mOrigSize;
+
+STATIC UINT16 *mFreq;
+STATIC UINT16 *mSortPtr;
+STATIC UINT16 mLenCnt[17];
+STATIC UINT16 mLeft[2 * NC - 1];
+STATIC UINT16 mRight[2 * NC - 1];
+STATIC UINT16 mCrcTable[UINT8_MAX + 1];
+STATIC UINT16 mCFreq[2 * NC - 1];
+STATIC UINT16 mCCode[NC];
+STATIC UINT16 mPFreq[2 * NP - 1];
+STATIC UINT16 mPTCode[NPT];
+STATIC UINT16 mTFreq[2 * NT - 1];
+
+STATIC NODE mPos;
+STATIC NODE mMatchPos;
+STATIC NODE mAvail;
+STATIC NODE *mPosition;
+STATIC NODE *mParent;
+STATIC NODE *mPrev;
+STATIC NODE *mNext = NULL;
+INT32 mHuffmanDepth = 0;
/**
Make a CRC table.
@@ -142,7 +142,7 @@ MakeCrcTable ( }
}
- mCrcTable[LoopVar1] = (UINT16) LoopVar4;
+ mCrcTable[LoopVar1] = (UINT16)LoopVar4;
}
}
@@ -153,23 +153,23 @@ MakeCrcTable ( **/
VOID
PutDword (
- IN UINT32 Data
+ IN UINT32 Data
)
{
if (mDst < mDstUpperLimit) {
- *mDst++ = (UINT8) (((UINT8) (Data)) & 0xff);
+ *mDst++ = (UINT8)(((UINT8)(Data)) & 0xff);
}
if (mDst < mDstUpperLimit) {
- *mDst++ = (UINT8) (((UINT8) (Data >> 0x08)) & 0xff);
+ *mDst++ = (UINT8)(((UINT8)(Data >> 0x08)) & 0xff);
}
if (mDst < mDstUpperLimit) {
- *mDst++ = (UINT8) (((UINT8) (Data >> 0x10)) & 0xff);
+ *mDst++ = (UINT8)(((UINT8)(Data >> 0x10)) & 0xff);
}
if (mDst < mDstUpperLimit) {
- *mDst++ = (UINT8) (((UINT8) (Data >> 0x18)) & 0xff);
+ *mDst++ = (UINT8)(((UINT8)(Data >> 0x18)) & 0xff);
}
}
@@ -192,8 +192,8 @@ AllocateMemory ( mPrev = AllocateZeroPool (WNDSIZ * 2 * sizeof (*mPrev));
mNext = AllocateZeroPool ((MAX_HASH_VAL + 1) * sizeof (*mNext));
- mBufSiz = BLKSIZ;
- mBuf = AllocateZeroPool (mBufSiz);
+ mBufSiz = BLKSIZ;
+ mBuf = AllocateZeroPool (mBufSiz);
while (mBuf == NULL) {
mBufSiz = (mBufSiz / 10U) * 9U;
if (mBufSiz < 4 * 1024U) {
@@ -244,7 +244,7 @@ InitSlide ( mAvail = 1;
for (LoopVar1 = 1; LoopVar1 < WNDSIZ - 1; LoopVar1++) {
- mNext[LoopVar1] = (NODE) (LoopVar1 + 1);
+ mNext[LoopVar1] = (NODE)(LoopVar1 + 1);
}
mNext[WNDSIZ - 1] = NIL;
@@ -269,8 +269,8 @@ Child ( {
NODE LoopVar4;
- LoopVar4 = mNext[HASH (LoopVar6, LoopVar5)];
- mParent[NIL] = LoopVar6; /* sentinel */
+ LoopVar4 = mNext[HASH (LoopVar6, LoopVar5)];
+ mParent[NIL] = LoopVar6; /* sentinel */
while (mParent[LoopVar4] != LoopVar6) {
LoopVar4 = mNext[LoopVar4];
}
@@ -296,13 +296,13 @@ MakeChild ( NODE LoopVar10;
- LoopVar12 = (NODE) HASH (LoopVar6, LoopVar5);
- LoopVar10 = mNext[LoopVar12];
- mNext[LoopVar12] = LoopVar4;
- mNext[LoopVar4] = LoopVar10;
- mPrev[LoopVar10] = LoopVar4;
- mPrev[LoopVar4] = LoopVar12;
- mParent[LoopVar4] = LoopVar6;
+ LoopVar12 = (NODE)HASH (LoopVar6, LoopVar5);
+ LoopVar10 = mNext[LoopVar12];
+ mNext[LoopVar12] = LoopVar4;
+ mNext[LoopVar4] = LoopVar10;
+ mPrev[LoopVar10] = LoopVar4;
+ mPrev[LoopVar4] = LoopVar12;
+ mParent[LoopVar4] = LoopVar6;
mChildCount[LoopVar6]++;
}
@@ -313,25 +313,25 @@ MakeChild ( **/
VOID
Split (
- IN NODE Old
+ IN NODE Old
)
{
NODE New;
NODE LoopVar10;
- New = mAvail;
- mAvail = mNext[New];
- mChildCount[New] = 0;
- LoopVar10 = mPrev[Old];
- mPrev[New] = LoopVar10;
- mNext[LoopVar10] = New;
- LoopVar10 = mNext[Old];
- mNext[New] = LoopVar10;
- mPrev[LoopVar10] = New;
- mParent[New] = mParent[Old];
- mLevel[New] = (UINT8) mMatchLen;
- mPosition[New] = mPos;
+ New = mAvail;
+ mAvail = mNext[New];
+ mChildCount[New] = 0;
+ LoopVar10 = mPrev[Old];
+ mPrev[New] = LoopVar10;
+ mNext[LoopVar10] = New;
+ LoopVar10 = mNext[Old];
+ mNext[New] = LoopVar10;
+ mPrev[LoopVar10] = New;
+ mParent[New] = mParent[Old];
+ mLevel[New] = (UINT8)mMatchLen;
+ mPosition[New] = mPos;
MakeChild (New, mText[mMatchPos + mMatchLen], Old);
MakeChild (New, mText[mPos + mMatchLen], mPos);
}
@@ -351,10 +351,10 @@ InsertNode ( NODE LoopVar2;
- NODE LoopVar10;
- UINT8 LoopVar5;
- UINT8 *TempString3;
- UINT8 *TempString2;
+ NODE LoopVar10;
+ UINT8 LoopVar5;
+ UINT8 *TempString3;
+ UINT8 *TempString2;
if (mMatchLen >= 4) {
//
@@ -365,7 +365,7 @@ InsertNode ( // in DeleteNode() later.
//
mMatchLen--;
- LoopVar4 = (NODE) ((mMatchPos + 1) | WNDSIZ);
+ LoopVar4 = (NODE)((mMatchPos + 1) | WNDSIZ);
LoopVar6 = mParent[LoopVar4];
while (LoopVar6 == NIL) {
LoopVar4 = mNext[LoopVar4];
@@ -379,52 +379,53 @@ InsertNode ( LoopVar10 = LoopVar6;
while (mPosition[LoopVar10] < 0) {
- mPosition[LoopVar10] = mPos;
- LoopVar10 = mParent[LoopVar10];
+ mPosition[LoopVar10] = mPos;
+ LoopVar10 = mParent[LoopVar10];
}
if (LoopVar10 < WNDSIZ) {
- mPosition[LoopVar10] = (NODE) (mPos | PERC_FLAG);
+ mPosition[LoopVar10] = (NODE)(mPos | PERC_FLAG);
}
} else {
//
// Locate the target tree
//
- LoopVar6 = (NODE) (mText[mPos] + WNDSIZ);
+ LoopVar6 = (NODE)(mText[mPos] + WNDSIZ);
LoopVar5 = mText[mPos + 1];
LoopVar4 = Child (LoopVar6, LoopVar5);
if (LoopVar4 == NIL) {
MakeChild (LoopVar6, LoopVar5, mPos);
mMatchLen = 1;
- return ;
+ return;
}
mMatchLen = 2;
}
+
//
// Traverse down the tree to find a match.
// Update Position value along the route.
// Node split or creation is involved.
//
- for (;;) {
+ for ( ; ;) {
if (LoopVar4 >= WNDSIZ) {
- LoopVar2 = MAXMATCH;
+ LoopVar2 = MAXMATCH;
mMatchPos = LoopVar4;
} else {
- LoopVar2 = mLevel[LoopVar4];
- mMatchPos = (NODE) (mPosition[LoopVar4] & ~PERC_FLAG);
+ LoopVar2 = mLevel[LoopVar4];
+ mMatchPos = (NODE)(mPosition[LoopVar4] & ~PERC_FLAG);
}
if (mMatchPos >= mPos) {
mMatchPos -= WNDSIZ;
}
- TempString3 = &mText[mPos + mMatchLen];
- TempString2 = &mText[mMatchPos + mMatchLen];
+ TempString3 = &mText[mPos + mMatchLen];
+ TempString2 = &mText[mMatchPos + mMatchLen];
while (mMatchLen < LoopVar2) {
if (*TempString3 != *TempString2) {
Split (LoopVar4);
- return ;
+ return;
}
mMatchLen++;
@@ -436,31 +437,30 @@ InsertNode ( break;
}
- mPosition[LoopVar4] = mPos;
- LoopVar6 = LoopVar4;
- LoopVar4 = Child (LoopVar6, *TempString3);
+ mPosition[LoopVar4] = mPos;
+ LoopVar6 = LoopVar4;
+ LoopVar4 = Child (LoopVar6, *TempString3);
if (LoopVar4 == NIL) {
MakeChild (LoopVar6, *TempString3, mPos);
- return ;
+ return;
}
mMatchLen++;
}
- LoopVar10 = mPrev[LoopVar4];
- mPrev[mPos] = LoopVar10;
- mNext[LoopVar10] = mPos;
- LoopVar10 = mNext[LoopVar4];
- mNext[mPos] = LoopVar10;
- mPrev[LoopVar10] = mPos;
- mParent[mPos] = LoopVar6;
- mParent[LoopVar4] = NIL;
+ LoopVar10 = mPrev[LoopVar4];
+ mPrev[mPos] = LoopVar10;
+ mNext[LoopVar10] = mPos;
+ LoopVar10 = mNext[LoopVar4];
+ mNext[mPos] = LoopVar10;
+ mPrev[LoopVar10] = mPos;
+ mParent[mPos] = LoopVar6;
+ mParent[LoopVar4] = NIL;
//
// Special usage of 'next'
//
mNext[LoopVar4] = mPos;
-
}
/**
@@ -484,33 +484,33 @@ DeleteNode ( NODE LoopVar9;
if (mParent[mPos] == NIL) {
- return ;
+ return;
}
- LoopVar4 = mPrev[mPos];
- LoopVar11 = mNext[mPos];
- mNext[LoopVar4] = LoopVar11;
- mPrev[LoopVar11] = LoopVar4;
- LoopVar4 = mParent[mPos];
- mParent[mPos] = NIL;
+ LoopVar4 = mPrev[mPos];
+ LoopVar11 = mNext[mPos];
+ mNext[LoopVar4] = LoopVar11;
+ mPrev[LoopVar11] = LoopVar4;
+ LoopVar4 = mParent[mPos];
+ mParent[mPos] = NIL;
if (LoopVar4 >= WNDSIZ) {
- return ;
+ return;
}
mChildCount[LoopVar4]--;
if (mChildCount[LoopVar4] > 1) {
- return ;
+ return;
}
- LoopVar10 = (NODE) (mPosition[LoopVar4] & ~PERC_FLAG);
+ LoopVar10 = (NODE)(mPosition[LoopVar4] & ~PERC_FLAG);
if (LoopVar10 >= mPos) {
LoopVar10 -= WNDSIZ;
}
LoopVar11 = LoopVar10;
- LoopVar6 = mParent[LoopVar4];
- LoopVar9 = mPosition[LoopVar6];
- while ((LoopVar9 & PERC_FLAG) != 0){
+ LoopVar6 = mParent[LoopVar4];
+ LoopVar9 = mPosition[LoopVar6];
+ while ((LoopVar9 & PERC_FLAG) != 0) {
LoopVar9 &= ~PERC_FLAG;
if (LoopVar9 >= mPos) {
LoopVar9 -= WNDSIZ;
@@ -520,9 +520,9 @@ DeleteNode ( LoopVar11 = LoopVar9;
}
- mPosition[LoopVar6] = (NODE) (LoopVar11 | WNDSIZ);
- LoopVar6 = mParent[LoopVar6];
- LoopVar9 = mPosition[LoopVar6];
+ mPosition[LoopVar6] = (NODE)(LoopVar11 | WNDSIZ);
+ LoopVar6 = mParent[LoopVar6];
+ LoopVar9 = mPosition[LoopVar6];
}
if (LoopVar6 < WNDSIZ) {
@@ -534,24 +534,24 @@ DeleteNode ( LoopVar11 = LoopVar9;
}
- mPosition[LoopVar6] = (NODE) (LoopVar11 | WNDSIZ | PERC_FLAG);
+ mPosition[LoopVar6] = (NODE)(LoopVar11 | WNDSIZ | PERC_FLAG);
}
- LoopVar11 = Child (LoopVar4, mText[LoopVar10 + mLevel[LoopVar4]]);
- LoopVar10 = mPrev[LoopVar11];
+ LoopVar11 = Child (LoopVar4, mText[LoopVar10 + mLevel[LoopVar4]]);
+ LoopVar10 = mPrev[LoopVar11];
LoopVar9 = mNext[LoopVar11];
- mNext[LoopVar10] = LoopVar9;
+ mNext[LoopVar10] = LoopVar9;
mPrev[LoopVar9] = LoopVar10;
- LoopVar10 = mPrev[LoopVar4];
- mNext[LoopVar10] = LoopVar11;
- mPrev[LoopVar11] = LoopVar10;
- LoopVar10 = mNext[LoopVar4];
- mPrev[LoopVar10] = LoopVar11;
- mNext[LoopVar11] = LoopVar10;
- mParent[LoopVar11] = mParent[LoopVar4];
+ LoopVar10 = mPrev[LoopVar4];
+ mNext[LoopVar10] = LoopVar11;
+ mPrev[LoopVar11] = LoopVar10;
+ LoopVar10 = mNext[LoopVar4];
+ mPrev[LoopVar10] = LoopVar11;
+ mNext[LoopVar11] = LoopVar10;
+ mParent[LoopVar11] = mParent[LoopVar4];
mParent[LoopVar4] = NIL;
mNext[LoopVar4] = mAvail;
- mAvail = LoopVar4;
+ mAvail = LoopVar4;
}
/**
@@ -564,11 +564,11 @@ DeleteNode ( **/
INT32
FreadCrc (
- OUT UINT8 *LoopVar7,
- IN INT32 LoopVar8
+ OUT UINT8 *LoopVar7,
+ IN INT32 LoopVar8
)
{
- INT32 LoopVar1;
+ INT32 LoopVar1;
for (LoopVar1 = 0; mSrc < mSrcUpperLimit && LoopVar1 < LoopVar8; LoopVar1++) {
*LoopVar7++ = *mSrc++;
@@ -576,7 +576,7 @@ FreadCrc ( LoopVar8 = LoopVar1;
- LoopVar7 -= LoopVar8;
+ LoopVar7 -= LoopVar8;
mOrigSize += LoopVar8;
LoopVar1--;
while (LoopVar1 >= 0) {
@@ -599,8 +599,8 @@ GetNextMatch ( VOID
)
{
- INT32 LoopVar8;
- VOID *Temp;
+ INT32 LoopVar8;
+ VOID *Temp;
mRemainder--;
mPos++;
@@ -609,12 +609,13 @@ GetNextMatch ( if (Temp == NULL) {
return (FALSE);
}
+
CopyMem (Temp, &mText[WNDSIZ], WNDSIZ + MAXMATCH);
CopyMem (&mText[0], Temp, WNDSIZ + MAXMATCH);
FreePool (Temp);
- LoopVar8 = FreadCrc (&mText[WNDSIZ + MAXMATCH], WNDSIZ);
+ LoopVar8 = FreadCrc (&mText[WNDSIZ + MAXMATCH], WNDSIZ);
mRemainder += LoopVar8;
- mPos = WNDSIZ;
+ mPos = WNDSIZ;
}
DeleteNode ();
@@ -630,12 +631,12 @@ GetNextMatch ( **/
VOID
DownHeap (
- IN INT32 i
+ IN INT32 i
)
{
- INT32 LoopVar1;
+ INT32 LoopVar1;
- INT32 LoopVar2;
+ INT32 LoopVar2;
//
// priority queue: send i-th entry down heap
@@ -643,7 +644,7 @@ DownHeap ( LoopVar2 = mHeap[i];
LoopVar1 = 2 * i;
while (LoopVar1 <= mHeapSize) {
- if (LoopVar1 < mHeapSize && mFreq[mHeap[LoopVar1]] > mFreq[mHeap[LoopVar1 + 1]]) {
+ if ((LoopVar1 < mHeapSize) && (mFreq[mHeap[LoopVar1]] > mFreq[mHeap[LoopVar1 + 1]])) {
LoopVar1++;
}
@@ -651,12 +652,12 @@ DownHeap ( break;
}
- mHeap[i] = mHeap[LoopVar1];
- i = LoopVar1;
- LoopVar1 = 2 * i;
+ mHeap[i] = mHeap[LoopVar1];
+ i = LoopVar1;
+ LoopVar1 = 2 * i;
}
- mHeap[i] = (INT16) LoopVar2;
+ mHeap[i] = (INT16)LoopVar2;
}
/**
@@ -666,7 +667,7 @@ DownHeap ( **/
VOID
CountLen (
- IN INT32 LoopVar1
+ IN INT32 LoopVar1
)
{
if (LoopVar1 < mTempInt32) {
@@ -686,10 +687,10 @@ CountLen ( **/
VOID
MakeLen (
- IN INT32 Root
+ IN INT32 Root
)
{
- INT32 LoopVar1;
+ INT32 LoopVar1;
INT32 LoopVar2;
UINT32 Cum;
@@ -726,7 +727,7 @@ MakeLen ( LoopVar2 = mLenCnt[LoopVar1];
LoopVar2--;
while (LoopVar2 >= 0) {
- mLen[*mSortPtr++] = (UINT8) LoopVar1;
+ mLen[*mSortPtr++] = (UINT8)LoopVar1;
LoopVar2--;
}
}
@@ -741,9 +742,9 @@ MakeLen ( **/
VOID
MakeCode (
- IN INT32 LoopVar8,
- IN UINT8 Len[ ],
- OUT UINT16 Code[ ]
+ IN INT32 LoopVar8,
+ IN UINT8 Len[],
+ OUT UINT16 Code[]
)
{
INT32 LoopVar1;
@@ -751,7 +752,7 @@ MakeCode ( Start[1] = 0;
for (LoopVar1 = 1; LoopVar1 <= 16; LoopVar1++) {
- Start[LoopVar1 + 1] = (UINT16) ((Start[LoopVar1] + mLenCnt[LoopVar1]) << 1);
+ Start[LoopVar1 + 1] = (UINT16)((Start[LoopVar1] + mLenCnt[LoopVar1]) << 1);
}
for (LoopVar1 = 0; LoopVar1 < LoopVar8; LoopVar1++) {
@@ -771,34 +772,34 @@ MakeCode ( **/
INT32
MakeTree (
- IN INT32 NParm,
- IN UINT16 FreqParm[ ],
- OUT UINT8 LenParm[ ],
- OUT UINT16 CodeParm[ ]
+ IN INT32 NParm,
+ IN UINT16 FreqParm[],
+ OUT UINT8 LenParm[],
+ OUT UINT16 CodeParm[]
)
{
- INT32 LoopVar1;
+ INT32 LoopVar1;
- INT32 LoopVar2;
+ INT32 LoopVar2;
- INT32 LoopVar3;
+ INT32 LoopVar3;
- INT32 Avail;
+ INT32 Avail;
//
// make tree, calculate len[], return root
//
- mTempInt32 = NParm;
- mFreq = FreqParm;
- mLen = LenParm;
- Avail = mTempInt32;
- mHeapSize = 0;
- mHeap[1] = 0;
+ mTempInt32 = NParm;
+ mFreq = FreqParm;
+ mLen = LenParm;
+ Avail = mTempInt32;
+ mHeapSize = 0;
+ mHeap[1] = 0;
for (LoopVar1 = 0; LoopVar1 < mTempInt32; LoopVar1++) {
mLen[LoopVar1] = 0;
if ((mFreq[LoopVar1]) != 0) {
mHeapSize++;
- mHeap[mHeapSize] = (INT16) LoopVar1;
+ mHeap[mHeapSize] = (INT16)LoopVar1;
}
}
@@ -818,22 +819,22 @@ MakeTree ( do {
LoopVar1 = mHeap[1];
if (LoopVar1 < mTempInt32) {
- *mSortPtr++ = (UINT16) LoopVar1;
+ *mSortPtr++ = (UINT16)LoopVar1;
}
mHeap[1] = mHeap[mHeapSize--];
DownHeap (1);
LoopVar2 = mHeap[1];
if (LoopVar2 < mTempInt32) {
- *mSortPtr++ = (UINT16) LoopVar2;
+ *mSortPtr++ = (UINT16)LoopVar2;
}
- LoopVar3 = Avail++;
- mFreq[LoopVar3] = (UINT16) (mFreq[LoopVar1] + mFreq[LoopVar2]);
- mHeap[1] = (INT16) LoopVar3;
+ LoopVar3 = Avail++;
+ mFreq[LoopVar3] = (UINT16)(mFreq[LoopVar1] + mFreq[LoopVar2]);
+ mHeap[1] = (INT16)LoopVar3;
DownHeap (1);
- mLeft[LoopVar3] = (UINT16) LoopVar1;
- mRight[LoopVar3] = (UINT16) LoopVar2;
+ mLeft[LoopVar3] = (UINT16)LoopVar1;
+ mRight[LoopVar3] = (UINT16)LoopVar2;
} while (mHeapSize > 1);
mSortPtr = CodeParm;
@@ -854,30 +855,30 @@ MakeTree ( **/
VOID
PutBits (
- IN INT32 LoopVar8,
- IN UINT32 x
+ IN INT32 LoopVar8,
+ IN UINT32 x
)
{
- UINT8 Temp;
+ UINT8 Temp;
if (LoopVar8 < mBitCount) {
mSubBitBuf |= x << (mBitCount -= LoopVar8);
} else {
-
Temp = (UINT8)(mSubBitBuf | (x >> (LoopVar8 -= mBitCount)));
if (mDst < mDstUpperLimit) {
*mDst++ = Temp;
}
+
mCompSize++;
if (LoopVar8 < UINT8_BIT) {
mSubBitBuf = x << (mBitCount = UINT8_BIT - LoopVar8);
} else {
-
Temp = (UINT8)(x >> (LoopVar8 - UINT8_BIT));
if (mDst < mDstUpperLimit) {
*mDst++ = Temp;
}
+
mCompSize++;
mSubBitBuf = x << (mBitCount = 2 * UINT8_BIT - LoopVar8);
@@ -892,7 +893,7 @@ PutBits ( **/
VOID
EncodeC (
- IN INT32 LoopVar5
+ IN INT32 LoopVar5
)
{
PutBits (mCLen[LoopVar5], mCCode[LoopVar5]);
@@ -905,7 +906,7 @@ EncodeC ( **/
VOID
EncodeP (
- IN UINT32 LoopVar7
+ IN UINT32 LoopVar7
)
{
UINT32 LoopVar5;
@@ -921,7 +922,7 @@ EncodeP ( PutBits (mPTLen[LoopVar5], mPTCode[LoopVar5]);
if (LoopVar5 > 1) {
- PutBits(LoopVar5 - 1, LoopVar7 & (0xFFFFU >> (17 - LoopVar5)));
+ PutBits (LoopVar5 - 1, LoopVar7 & (0xFFFFU >> (17 - LoopVar5)));
}
}
@@ -934,13 +935,13 @@ CountTFreq ( VOID
)
{
- INT32 LoopVar1;
+ INT32 LoopVar1;
- INT32 LoopVar3;
+ INT32 LoopVar3;
- INT32 LoopVar8;
+ INT32 LoopVar8;
- INT32 Count;
+ INT32 Count;
for (LoopVar1 = 0; LoopVar1 < NT; LoopVar1++) {
mTFreq[LoopVar1] = 0;
@@ -962,7 +963,7 @@ CountTFreq ( }
if (Count <= 2) {
- mTFreq[0] = (UINT16) (mTFreq[0] + Count);
+ mTFreq[0] = (UINT16)(mTFreq[0] + Count);
} else if (Count <= 18) {
mTFreq[1]++;
} else if (Count == 19) {
@@ -972,7 +973,7 @@ CountTFreq ( mTFreq[2]++;
}
} else {
- ASSERT((LoopVar3+2)<(2 * NT - 1));
+ ASSERT ((LoopVar3+2) < (2 * NT - 1));
mTFreq[LoopVar3 + 2]++;
}
}
@@ -988,14 +989,14 @@ CountTFreq ( **/
VOID
WritePTLen (
- IN INT32 LoopVar8,
- IN INT32 nbit,
- IN INT32 Special
+ IN INT32 LoopVar8,
+ IN INT32 nbit,
+ IN INT32 Special
)
{
- INT32 LoopVar1;
+ INT32 LoopVar1;
- INT32 LoopVar3;
+ INT32 LoopVar3;
while (LoopVar8 > 0 && mPTLen[LoopVar8 - 1] == 0) {
LoopVar8--;
@@ -1029,13 +1030,13 @@ WriteCLen ( VOID
)
{
- INT32 LoopVar1;
+ INT32 LoopVar1;
- INT32 LoopVar3;
+ INT32 LoopVar3;
- INT32 LoopVar8;
+ INT32 LoopVar8;
- INT32 Count;
+ INT32 Count;
LoopVar8 = NC;
while (LoopVar8 > 0 && mCLen[LoopVar8 - 1] == 0) {
@@ -1069,7 +1070,7 @@ WriteCLen ( PutBits (CBIT, Count - 20);
}
} else {
- ASSERT((LoopVar3+2)<NPT);
+ ASSERT ((LoopVar3+2) < NPT);
PutBits (mPTLen[LoopVar3 + 2], mPTCode[LoopVar3 + 2]);
}
}
@@ -1095,10 +1096,11 @@ SendBlock ( UINT32 Pos;
UINT32 Size;
+
Flags = 0;
- Root = MakeTree (NC, mCFreq, mCLen, mCCode);
- Size = mCFreq[Root];
+ Root = MakeTree (NC, mCFreq, mCLen, mCCode);
+ Size = mCFreq[Root];
PutBits (16, Size);
if (Root >= NC) {
CountTFreq ();
@@ -1133,9 +1135,10 @@ SendBlock ( } else {
Flags <<= 1;
}
- if ((Flags & (1U << (UINT8_BIT - 1))) != 0){
- EncodeC(mBuf[Pos++] + (1U << UINT8_BIT));
- LoopVar3 = mBuf[Pos++] << UINT8_BIT;
+
+ if ((Flags & (1U << (UINT8_BIT - 1))) != 0) {
+ EncodeC (mBuf[Pos++] + (1U << UINT8_BIT));
+ LoopVar3 = mBuf[Pos++] << UINT8_BIT;
LoopVar3 += mBuf[Pos++];
EncodeP (LoopVar3);
@@ -1162,8 +1165,8 @@ HufEncodeStart ( mOutputPos = mOutputMask = 0;
- mBitCount = UINT8_BIT;
- mSubBitBuf = 0;
+ mBitCount = UINT8_BIT;
+ mSubBitBuf = 0;
}
/**
@@ -1175,11 +1178,11 @@ HufEncodeStart ( **/
VOID
CompressOutput (
- IN UINT32 LoopVar5,
- IN UINT32 LoopVar7
+ IN UINT32 LoopVar5,
+ IN UINT32 LoopVar7
)
{
- STATIC UINT32 CPos;
+ STATIC UINT32 CPos;
if ((mOutputMask >>= 1) == 0) {
mOutputMask = 1U << (UINT8_BIT - 1);
@@ -1188,20 +1191,22 @@ CompressOutput ( mOutputPos = 0;
}
- CPos = mOutputPos++;
- mBuf[CPos] = 0;
+ CPos = mOutputPos++;
+ mBuf[CPos] = 0;
}
- mBuf[mOutputPos++] = (UINT8) LoopVar5;
+
+ mBuf[mOutputPos++] = (UINT8)LoopVar5;
mCFreq[LoopVar5]++;
if (LoopVar5 >= (1U << UINT8_BIT)) {
- mBuf[CPos] = (UINT8)(mBuf[CPos]|mOutputMask);
+ mBuf[CPos] = (UINT8)(mBuf[CPos]|mOutputMask);
mBuf[mOutputPos++] = (UINT8)(LoopVar7 >> UINT8_BIT);
- mBuf[mOutputPos++] = (UINT8) LoopVar7;
- LoopVar5 = 0;
- while (LoopVar7!=0) {
+ mBuf[mOutputPos++] = (UINT8)LoopVar7;
+ LoopVar5 = 0;
+ while (LoopVar7 != 0) {
LoopVar7 >>= 1;
LoopVar5++;
}
+
mPFreq[LoopVar5]++;
}
}
@@ -1248,43 +1253,47 @@ Encode ( HufEncodeStart ();
- mRemainder = FreadCrc (&mText[WNDSIZ], WNDSIZ + MAXMATCH);
+ mRemainder = FreadCrc (&mText[WNDSIZ], WNDSIZ + MAXMATCH);
- mMatchLen = 0;
- mPos = WNDSIZ;
+ mMatchLen = 0;
+ mPos = WNDSIZ;
InsertNode ();
if (mMatchLen > mRemainder) {
mMatchLen = mRemainder;
}
while (mRemainder > 0) {
- LastMatchLen = mMatchLen;
- LastMatchPos = mMatchPos;
+ LastMatchLen = mMatchLen;
+ LastMatchPos = mMatchPos;
if (!GetNextMatch ()) {
Status = EFI_OUT_OF_RESOURCES;
}
+
if (mMatchLen > mRemainder) {
mMatchLen = mRemainder;
}
- if (mMatchLen > LastMatchLen || LastMatchLen < THRESHOLD) {
+ if ((mMatchLen > LastMatchLen) || (LastMatchLen < THRESHOLD)) {
//
// Not enough benefits are gained by outputting a pointer,
// so just output the original character
//
- CompressOutput(mText[mPos - 1], 0);
+ CompressOutput (mText[mPos - 1], 0);
} else {
//
// Outputting a pointer is beneficial enough, do it.
//
- CompressOutput(LastMatchLen + (UINT8_MAX + 1 - THRESHOLD),
- (mPos - LastMatchPos - 2) & (WNDSIZ - 1));
+ CompressOutput (
+ LastMatchLen + (UINT8_MAX + 1 - THRESHOLD),
+ (mPos - LastMatchPos - 2) & (WNDSIZ - 1)
+ );
LastMatchLen--;
while (LastMatchLen > 0) {
if (!GetNextMatch ()) {
Status = EFI_OUT_OF_RESOURCES;
}
+
LastMatchLen--;
}
@@ -1324,28 +1333,28 @@ Compress ( //
// Initializations
//
- mBufSiz = 0;
- mBuf = NULL;
- mText = NULL;
- mLevel = NULL;
- mChildCount = NULL;
- mPosition = NULL;
- mParent = NULL;
- mPrev = NULL;
- mNext = NULL;
-
- mSrc = SrcBuffer;
- mSrcUpperLimit = mSrc + SrcSize;
- mDst = DstBuffer;
- mDstUpperLimit = mDst +*DstSize;
+ mBufSiz = 0;
+ mBuf = NULL;
+ mText = NULL;
+ mLevel = NULL;
+ mChildCount = NULL;
+ mPosition = NULL;
+ mParent = NULL;
+ mPrev = NULL;
+ mNext = NULL;
+
+ mSrc = SrcBuffer;
+ mSrcUpperLimit = mSrc + SrcSize;
+ mDst = DstBuffer;
+ mDstUpperLimit = mDst +*DstSize;
PutDword (0L);
PutDword (0L);
MakeCrcTable ();
- mOrigSize = mCompSize = 0;
- mCrc = INIT_CRC;
+ mOrigSize = mCompSize = 0;
+ mCrc = INIT_CRC;
//
// Compress it
@@ -1354,12 +1363,14 @@ Compress ( if (EFI_ERROR (Status)) {
return EFI_OUT_OF_RESOURCES;
}
+
//
// Null terminate the compressed data
//
if (mDst < mDstUpperLimit) {
*mDst++ = 0;
}
+
//
// Fill in compressed size and original size
//
@@ -1377,6 +1388,4 @@ Compress ( *DstSize = mCompSize + 1 + 8;
return EFI_SUCCESS;
}
-
}
-
|