final class oadd.io.netty.handler.codec.compression.Bzip2BlockDecompressor extends java.lang.Object
{
private final oadd.io.netty.handler.codec.compression.Bzip2BitReader reader;
private final oadd.io.netty.handler.codec.compression.Crc crc;
private final int blockCRC;
private final boolean blockRandomised;
int huffmanEndOfBlockSymbol;
int huffmanInUse;
final byte[] huffmanSymbolMap;
private final int[] bwtByteCounts;
private final byte[] bwtBlock;
private final int bwtStartPointer;
private int[] bwtMergedPointers;
private int bwtCurrentMergedPointer;
private int bwtBlockLength;
private int bwtBytesDecoded;
private int rleLastDecodedByte;
private int rleAccumulator;
private int rleRepeat;
private int randomIndex;
private int randomCount;
private final oadd.io.netty.handler.codec.compression.Bzip2MoveToFrontTable symbolMTF;
private int repeatCount;
private int repeatIncrement;
private int mtfValue;
void <init>(int, int, boolean, int, oadd.io.netty.handler.codec.compression.Bzip2BitReader)
{
byte[] v, v;
oadd.io.netty.handler.codec.compression.Bzip2MoveToFrontTable v;
oadd.io.netty.handler.codec.compression.Bzip2BitReader v;
oadd.io.netty.handler.codec.compression.Bzip2BlockDecompressor v;
oadd.io.netty.handler.codec.compression.Crc v;
int[] v;
int v, v, v, v, v, v;
boolean v;
v := @this: oadd.io.netty.handler.codec.compression.Bzip2BlockDecompressor;
v := @parameter: int;
v := @parameter: int;
v := @parameter: boolean;
v := @parameter: int;
v := @parameter: oadd.io.netty.handler.codec.compression.Bzip2BitReader;
specialinvoke v.<java.lang.Object: void <init>()>();
v = new oadd.io.netty.handler.codec.compression.Crc;
specialinvoke v.<oadd.io.netty.handler.codec.compression.Crc32: void <init>()>();
v.<oadd.io.netty.handler.codec.compression.Bzip2BlockDecompressor: oadd.io.netty.handler.codec.compression.Crc crc> = v;
v = newarray (byte)[256];
v.<oadd.io.netty.handler.codec.compression.Bzip2BlockDecompressor: byte[] huffmanSymbolMap> = v;
v = newarray (int)[256];
v.<oadd.io.netty.handler.codec.compression.Bzip2BlockDecompressor: int[] bwtByteCounts> = v;
v = (int) -1;
v.<oadd.io.netty.handler.codec.compression.Bzip2BlockDecompressor: int rleLastDecodedByte> = v;
v = staticinvoke <oadd.io.netty.handler.codec.compression.Bzip2Rand: int rNums(int)>(0);
v = v - 1;
v.<oadd.io.netty.handler.codec.compression.Bzip2BlockDecompressor: int randomCount> = v;
v = new oadd.io.netty.handler.codec.compression.Bzip2MoveToFrontTable;
specialinvoke v.<oadd.io.netty.handler.codec.compression.Bzip2MoveToFrontTable: void <init>()>();
v.<oadd.io.netty.handler.codec.compression.Bzip2BlockDecompressor: oadd.io.netty.handler.codec.compression.Bzip2MoveToFrontTable symbolMTF> = v;
v.<oadd.io.netty.handler.codec.compression.Bzip2BlockDecompressor: int repeatIncrement> = 1;
v = newarray (byte)[v];
v.<oadd.io.netty.handler.codec.compression.Bzip2BlockDecompressor: byte[] bwtBlock> = v;
v.<oadd.io.netty.handler.codec.compression.Bzip2BlockDecompressor: int blockCRC> = v;
v.<oadd.io.netty.handler.codec.compression.Bzip2BlockDecompressor: boolean blockRandomised> = v;
v.<oadd.io.netty.handler.codec.compression.Bzip2BlockDecompressor: int bwtStartPointer> = v;
v.<oadd.io.netty.handler.codec.compression.Bzip2BlockDecompressor: oadd.io.netty.handler.codec.compression.Bzip2BitReader reader> = v;
return;
}
boolean decodeHuffmanData(oadd.io.netty.handler.codec.compression.Bzip2HuffmanStageDecoder)
{
byte[] v, v, v;
byte v, v, v;
int[] v;
oadd.io.netty.handler.codec.compression.DecompressionException v, v, v;
boolean v;
oadd.io.netty.handler.codec.compression.Bzip2MoveToFrontTable v;
oadd.io.netty.handler.codec.compression.Bzip2BitReader v;
oadd.io.netty.handler.codec.compression.Bzip2BlockDecompressor v;
oadd.io.netty.handler.codec.compression.Bzip2HuffmanStageDecoder v;
short v, v;
int v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v;
java.lang.String v;
v := @this: oadd.io.netty.handler.codec.compression.Bzip2BlockDecompressor;
v := @parameter: oadd.io.netty.handler.codec.compression.Bzip2HuffmanStageDecoder;
v = v.<oadd.io.netty.handler.codec.compression.Bzip2BlockDecompressor: oadd.io.netty.handler.codec.compression.Bzip2BitReader reader>;
v = v.<oadd.io.netty.handler.codec.compression.Bzip2BlockDecompressor: byte[] bwtBlock>;
v = v.<oadd.io.netty.handler.codec.compression.Bzip2BlockDecompressor: byte[] huffmanSymbolMap>;
v = v.<oadd.io.netty.handler.codec.compression.Bzip2BlockDecompressor: byte[] bwtBlock>;
v = lengthof v;
v = v.<oadd.io.netty.handler.codec.compression.Bzip2BlockDecompressor: int huffmanEndOfBlockSymbol>;
v = v.<oadd.io.netty.handler.codec.compression.Bzip2BlockDecompressor: int[] bwtByteCounts>;
v = v.<oadd.io.netty.handler.codec.compression.Bzip2BlockDecompressor: oadd.io.netty.handler.codec.compression.Bzip2MoveToFrontTable symbolMTF>;
v = v.<oadd.io.netty.handler.codec.compression.Bzip2BlockDecompressor: int bwtBlockLength>;
v = v.<oadd.io.netty.handler.codec.compression.Bzip2BlockDecompressor: int repeatCount>;
v = v.<oadd.io.netty.handler.codec.compression.Bzip2BlockDecompressor: int repeatIncrement>;
v = v.<oadd.io.netty.handler.codec.compression.Bzip2BlockDecompressor: int mtfValue>;
label:
v = virtualinvoke v.<oadd.io.netty.handler.codec.compression.Bzip2BitReader: boolean hasReadableBits(int)>(23);
if v != 0 goto label;
v.<oadd.io.netty.handler.codec.compression.Bzip2BlockDecompressor: int bwtBlockLength> = v;
v.<oadd.io.netty.handler.codec.compression.Bzip2BlockDecompressor: int repeatCount> = v;
v.<oadd.io.netty.handler.codec.compression.Bzip2BlockDecompressor: int repeatIncrement> = v;
v.<oadd.io.netty.handler.codec.compression.Bzip2BlockDecompressor: int mtfValue> = v;
return 0;
label:
v = virtualinvoke v.<oadd.io.netty.handler.codec.compression.Bzip2HuffmanStageDecoder: int nextSymbol()>();
if v != 0 goto label;
v = v + v;
v = v << 1;
goto label;
label:
if v != 1 goto label;
v = v << 1;
v = v + v;
v = v << 1;
goto label;
label:
if v <= 0 goto label;
v = v + v;
if v <= v goto label;
v = new oadd.io.netty.handler.codec.compression.DecompressionException;
specialinvoke v.<oadd.io.netty.handler.codec.compression.DecompressionException: void <init>(java.lang.String)>("block exceeds declared block size");
throw v;
label:
v = v[v];
v = v & 255;
v = v[v];
v = v + v;
v[v] = v;
label:
v = v - 1;
if v < 0 goto label;
v = v;
v = v + 1;
v[v] = v;
goto label;
label:
v = 0;
v = 1;
label:
if v == v goto label;
if v < v goto label;
v = new oadd.io.netty.handler.codec.compression.DecompressionException;
specialinvoke v.<oadd.io.netty.handler.codec.compression.DecompressionException: void <init>(java.lang.String)>("block exceeds declared block size");
throw v;
label:
v = v - 1;
v = virtualinvoke v.<oadd.io.netty.handler.codec.compression.Bzip2MoveToFrontTable: byte indexToFront(int)>(v);
v = v & 255;
v = v[v];
v = v & 255;
v = v[v];
v = v + 1;
v[v] = v;
v = v;
v = v + 1;
v[v] = v;
goto label;
label:
if v <= 900000 goto label;
v = new oadd.io.netty.handler.codec.compression.DecompressionException;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (int)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("block length exceeds max block length: \u > 900000");
specialinvoke v.<oadd.io.netty.handler.codec.compression.DecompressionException: void <init>(java.lang.String)>(v);
throw v;
label:
v.<oadd.io.netty.handler.codec.compression.Bzip2BlockDecompressor: int bwtBlockLength> = v;
specialinvoke v.<oadd.io.netty.handler.codec.compression.Bzip2BlockDecompressor: void initialiseInverseBWT()>();
return 1;
}
private void initialiseInverseBWT()
{
byte[] v;
short v;
byte v;
int[] v, v, v;
int v, v, v, v, v, v, v, v, v, v, v, v, v, v, v;
oadd.io.netty.handler.codec.compression.DecompressionException v;
oadd.io.netty.handler.codec.compression.Bzip2BlockDecompressor v;
v := @this: oadd.io.netty.handler.codec.compression.Bzip2BlockDecompressor;
v = v.<oadd.io.netty.handler.codec.compression.Bzip2BlockDecompressor: int bwtStartPointer>;
v = v.<oadd.io.netty.handler.codec.compression.Bzip2BlockDecompressor: byte[] bwtBlock>;
v = v.<oadd.io.netty.handler.codec.compression.Bzip2BlockDecompressor: int bwtBlockLength>;
v = newarray (int)[v];
v = newarray (int)[256];
if v < 0 goto label;
v = v.<oadd.io.netty.handler.codec.compression.Bzip2BlockDecompressor: int bwtBlockLength>;
if v < v goto label;
label:
v = new oadd.io.netty.handler.codec.compression.DecompressionException;
specialinvoke v.<oadd.io.netty.handler.codec.compression.DecompressionException: void <init>(java.lang.String)>("start pointer invalid");
throw v;
label:
v = v.<oadd.io.netty.handler.codec.compression.Bzip2BlockDecompressor: int[] bwtByteCounts>;
staticinvoke <java.lang.System: void arraycopy(java.lang.Object,int,java.lang.Object,int,int)>(v, 0, v, 1, 255);
v = 2;
label:
if v > 255 goto label;
v = v[v];
v = v - 1;
v = v[v];
v = v + v;
v[v] = v;
v = v + 1;
goto label;
label:
v = 0;
label:
v = v.<oadd.io.netty.handler.codec.compression.Bzip2BlockDecompressor: int bwtBlockLength>;
if v >= v goto label;
v = v[v];
v = v & 255;
v = v[v];
v = v + 1;
v[v] = v;
v = v << 8;
v = v + v;
v[v] = v;
v = v + 1;
goto label;
label:
v.<oadd.io.netty.handler.codec.compression.Bzip2BlockDecompressor: int[] bwtMergedPointers> = v;
v = v[v];
v.<oadd.io.netty.handler.codec.compression.Bzip2BlockDecompressor: int bwtCurrentMergedPointer> = v;
return;
}
public int read()
{
int v, v, v, v, v, v, v, v, v, v, v, v, v;
oadd.io.netty.handler.codec.compression.Bzip2BlockDecompressor v;
oadd.io.netty.handler.codec.compression.Crc v, v, v;
v := @this: oadd.io.netty.handler.codec.compression.Bzip2BlockDecompressor;
label:
v = v.<oadd.io.netty.handler.codec.compression.Bzip2BlockDecompressor: int rleRepeat>;
if v >= 1 goto label;
v = v.<oadd.io.netty.handler.codec.compression.Bzip2BlockDecompressor: int bwtBytesDecoded>;
v = v.<oadd.io.netty.handler.codec.compression.Bzip2BlockDecompressor: int bwtBlockLength>;
if v != v goto label;
v = (int) -1;
return v;
label:
v = specialinvoke v.<oadd.io.netty.handler.codec.compression.Bzip2BlockDecompressor: int decodeNextBWTByte()>();
v = v.<oadd.io.netty.handler.codec.compression.Bzip2BlockDecompressor: int rleLastDecodedByte>;
if v == v goto label;
v.<oadd.io.netty.handler.codec.compression.Bzip2BlockDecompressor: int rleLastDecodedByte> = v;
v.<oadd.io.netty.handler.codec.compression.Bzip2BlockDecompressor: int rleRepeat> = 1;
v.<oadd.io.netty.handler.codec.compression.Bzip2BlockDecompressor: int rleAccumulator> = 1;
v = v.<oadd.io.netty.handler.codec.compression.Bzip2BlockDecompressor: oadd.io.netty.handler.codec.compression.Crc crc>;
virtualinvoke v.<oadd.io.netty.handler.codec.compression.Crc32: void updateCRC(int)>(v);
goto label;
label:
v = v.<oadd.io.netty.handler.codec.compression.Bzip2BlockDecompressor: int rleAccumulator>;
v = v + 1;
v.<oadd.io.netty.handler.codec.compression.Bzip2BlockDecompressor: int rleAccumulator> = v;
if v != 4 goto label;
v = specialinvoke v.<oadd.io.netty.handler.codec.compression.Bzip2BlockDecompressor: int decodeNextBWTByte()>();
v = v + 1;
v.<oadd.io.netty.handler.codec.compression.Bzip2BlockDecompressor: int rleRepeat> = v;
v.<oadd.io.netty.handler.codec.compression.Bzip2BlockDecompressor: int rleAccumulator> = 0;
v = v.<oadd.io.netty.handler.codec.compression.Bzip2BlockDecompressor: oadd.io.netty.handler.codec.compression.Crc crc>;
virtualinvoke v.<oadd.io.netty.handler.codec.compression.Crc32: void updateCRC(int,int)>(v, v);
goto label;
label:
v.<oadd.io.netty.handler.codec.compression.Bzip2BlockDecompressor: int rleRepeat> = 1;
v = v.<oadd.io.netty.handler.codec.compression.Bzip2BlockDecompressor: oadd.io.netty.handler.codec.compression.Crc crc>;
virtualinvoke v.<oadd.io.netty.handler.codec.compression.Crc32: void updateCRC(int)>(v);
goto label;
label:
v = v.<oadd.io.netty.handler.codec.compression.Bzip2BlockDecompressor: int rleRepeat>;
v = v - 1;
v.<oadd.io.netty.handler.codec.compression.Bzip2BlockDecompressor: int rleRepeat> = v;
v = v.<oadd.io.netty.handler.codec.compression.Bzip2BlockDecompressor: int rleLastDecodedByte>;
return v;
}
private int decodeNextBWTByte()
{
int[] v;
int v, v, v, v, v, v, v, v, v, v, v, v, v;
boolean v;
oadd.io.netty.handler.codec.compression.Bzip2BlockDecompressor v;
v := @this: oadd.io.netty.handler.codec.compression.Bzip2BlockDecompressor;
v = v.<oadd.io.netty.handler.codec.compression.Bzip2BlockDecompressor: int bwtCurrentMergedPointer>;
v = v & 255;
v = v.<oadd.io.netty.handler.codec.compression.Bzip2BlockDecompressor: int[] bwtMergedPointers>;
v = v >>> 8;
v = v[v];
v.<oadd.io.netty.handler.codec.compression.Bzip2BlockDecompressor: int bwtCurrentMergedPointer> = v;
v = v.<oadd.io.netty.handler.codec.compression.Bzip2BlockDecompressor: boolean blockRandomised>;
if v == 0 goto label;
v = v.<oadd.io.netty.handler.codec.compression.Bzip2BlockDecompressor: int randomCount>;
v = v - 1;
v.<oadd.io.netty.handler.codec.compression.Bzip2BlockDecompressor: int randomCount> = v;
if v != 0 goto label;
v = v ^ 1;
v = v.<oadd.io.netty.handler.codec.compression.Bzip2BlockDecompressor: int randomIndex>;
v = v + 1;
v = v % 512;
v.<oadd.io.netty.handler.codec.compression.Bzip2BlockDecompressor: int randomIndex> = v;
v = v.<oadd.io.netty.handler.codec.compression.Bzip2BlockDecompressor: int randomIndex>;
v = staticinvoke <oadd.io.netty.handler.codec.compression.Bzip2Rand: int rNums(int)>(v);
v.<oadd.io.netty.handler.codec.compression.Bzip2BlockDecompressor: int randomCount> = v;
label:
v = v.<oadd.io.netty.handler.codec.compression.Bzip2BlockDecompressor: int bwtBytesDecoded>;
v = v + 1;
v.<oadd.io.netty.handler.codec.compression.Bzip2BlockDecompressor: int bwtBytesDecoded> = v;
return v;
}
public int blockLength()
{
int v;
oadd.io.netty.handler.codec.compression.Bzip2BlockDecompressor v;
v := @this: oadd.io.netty.handler.codec.compression.Bzip2BlockDecompressor;
v = v.<oadd.io.netty.handler.codec.compression.Bzip2BlockDecompressor: int bwtBlockLength>;
return v;
}
int checkCRC()
{
oadd.io.netty.handler.codec.compression.Crc v;
int v, v;
oadd.io.netty.handler.codec.compression.DecompressionException v;
oadd.io.netty.handler.codec.compression.Bzip2BlockDecompressor v;
v := @this: oadd.io.netty.handler.codec.compression.Bzip2BlockDecompressor;
v = v.<oadd.io.netty.handler.codec.compression.Bzip2BlockDecompressor: oadd.io.netty.handler.codec.compression.Crc crc>;
v = virtualinvoke v.<oadd.io.netty.handler.codec.compression.Crc32: int getCRC()>();
v = v.<oadd.io.netty.handler.codec.compression.Bzip2BlockDecompressor: int blockCRC>;
if v == v goto label;
v = new oadd.io.netty.handler.codec.compression.DecompressionException;
specialinvoke v.<oadd.io.netty.handler.codec.compression.DecompressionException: void <init>(java.lang.String)>("block CRC error");
throw v;
label:
return v;
}
}