Extensible Firmware Interface Specification
I-14 12/01/02 Version 1.10
Sd->mBlockSize --;
j = Sd->mCTable[Sd->mBitBuf >> (BITBUFSIZ - 12)];
if (j >= NC) {
Mask = 1U << (BITBUFSIZ - 1 - 12);
do {
if (Sd->mBitBuf & Mask) {
j = Sd->mRight[j];
} else {
j = Sd->mLeft[j];
}
Mask >>= 1;
} while (j >= NC);
}
//
// Advance what we have read
//
FillBuf(Sd, Sd->mCLen[j]);
return j;
}
STATIC
VOID
Decode (
SCRATCH_DATA *Sd,
UINT16 NumOfBytes
)
/*++
Routine Description:
Decode NumOfBytes and put the resulting data at starting point of mBuffer.
The buffer is circular.
Arguments:
Sd - The global scratch data
NumOfBytes - Number of bytes to decode
Returns: (VOID)
--*/
{
UINT16 di;
UINT16 r;
UINT16 c;
r = 0;
di = 0;
Sd->mBytesRemain --;
while ((INT16)(Sd->mBytesRemain) >= 0) {
Sd->mBuffer[di++] = Sd->mBuffer[Sd->mDataIdx++];