Intel Extensible Firmware Interface User Manual

Page 1006

Advertising
background image

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++];

Advertising