beautypg.com

Intel Extensible Firmware Interface User Manual

Page 1004

background image

Extensible Firmware Interface Specification

I-12

12/01/02

Version 1.10


n = GetBits(Sd, CBIT);

if (n == 0) {
c = GetBits(Sd, CBIT);

for (i = 0; i < NC; i ++) {
Sd->mCLen[i] = 0;
}

for (i = 0; i < 4096; i ++) {
Sd->mCTable[i] = c;
}

return;
}

i = 0;
while (i < n) {

c = Sd->mPTTable[Sd->mBitBuf >> (BITBUFSIZ - 8)];
if (c >= NT) {
Mask = 1U << (BITBUFSIZ - 1 - 8);

do {

if (Mask & Sd->mBitBuf) {
c = Sd->mRight [c];
} else {
c = Sd->mLeft [c];
}

Mask >>= 1;

}while (c >= NT);
}

//
// Advance what we have read
//
FillBuf (Sd, Sd->mPTLen[c]);

if (c <= 2) {

if (c == 0) {
c = 1;
} else if (c == 1) {
c = (UINT16)(GetBits (Sd, 4) + 3);
} else if (c == 2) {
c = (UINT16)(GetBits (Sd, CBIT) + 20);
}

while ((INT16)(--c) >= 0) {
Sd->mCLen[i++] = 0;
}

} else {