in src/main/java/org/apache/pdfbox/jbig2/decoder/arithmetic/ArithmeticIntegerDecoder.java [44:146]
public long decode(CX cxIAx) throws IOException
{
int v = 0;
int d, s;
int bitsToRead;
int offset;
if (cxIAx == null)
{
cxIAx = new CX(512, 1);
}
prev = 1;
cxIAx.setIndex(prev);
s = decoder.decode(cxIAx);
setPrev(s);
cxIAx.setIndex(prev);
d = decoder.decode(cxIAx);
setPrev(d);
if (d == 1)
{
cxIAx.setIndex(prev);
d = decoder.decode(cxIAx);
setPrev(d);
if (d == 1)
{
cxIAx.setIndex(prev);
d = decoder.decode(cxIAx);
setPrev(d);
if (d == 1)
{
cxIAx.setIndex(prev);
d = decoder.decode(cxIAx);
setPrev(d);
if (d == 1)
{
cxIAx.setIndex(prev);
d = decoder.decode(cxIAx);
setPrev(d);
if (d == 1)
{
bitsToRead = 32;
offset = 4436;
}
else
{
bitsToRead = 12;
offset = 340;
}
}
else
{
bitsToRead = 8;
offset = 84;
}
}
else
{
bitsToRead = 6;
offset = 20;
}
}
else
{
bitsToRead = 4;
offset = 4;
}
}
else
{
bitsToRead = 2;
offset = 0;
}
for (int i = 0; i < bitsToRead; i++)
{
cxIAx.setIndex(prev);
d = decoder.decode(cxIAx);
setPrev(d);
v = (v << 1) | d;
}
v += offset;
if (s == 0)
{
return v;
}
else if (s == 1 && v > 0)
{
return -v;
}
return Long.MAX_VALUE;
}