while (end > 0)
while (end > off)
    public int decode(        byte[]                data,        int                    off,        int                    length,        OutputStream    out)        throws IOException    {        byte[]    bytes;        byte    b1, b2;        int        outLen = 0;                int        end = off + length;                while (end > 0)        {            if (!ignore((char)data[end - 1]))            {                break;            }                        end--;        }                int i = off;        while (i < end)        {            while (i < end && ignore((char)data[i]))            {                i++;            }                        b1 = decodingTable[data[i++]];                        while (i < end && ignore((char)data[i]))            {                i++;            }                        b2 = decodingTable[data[i++]];            out.write((b1 << 4) | b2);                        outLen++;        }        return outLen;    }