me.lemire.integercompression.GroupSimple9 Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of JavaFastPFOR Show documentation
Show all versions of JavaFastPFOR Show documentation
It is a library to compress and uncompress arrays of integers
very fast. The assumption is that most (but not all) values in
your array use less than 32 bits.
package me.lemire.integercompression;
/**
* Group Simple 9 Credit Kun Jiang, Yuexiang Yang and Qinghua Zheng source:
* https://github.com/deeper2/simple
*
* Adapted by D. Lemire.
*/
public final class GroupSimple9 implements IntegerCODEC {
private static final int[][] M = { { 0, 1, 2, 3, 4, 5, 6, 7, 8 }, { 9, 10, 11, 12, 13, 14, 15, 16, 17 },
{ 18, 19, 20, 21, 22, 23, 24, 25, 26 }, { 27, 28, 29, 30, 31, 32, 33, 34, 35 },
{ 36, 37, 38, 39, 40, 41, 42, 43, 44 }, { 45, 46, 47, 48, 49, 50, 51, 52, 53 },
{ 54, 55, 56, 57, 58, 59, 60, 61, 62 }, { 63, 64, 65, 66, 67, 68, 69, 70, 71 },
{ 72, 73, 74, 75, 76, 77, 78, 79, 80 } };
@Override
public void compress(int[] in, IntWrapper inpos, int inlength, int out[], IntWrapper outpos) {
int tmpoutpos = outpos.get();
int currentPos = inpos.get();
int selector1 = 0;
int selector2 = 0;
out[tmpoutpos++] = inlength;
outpos.add(1);
final int finalin = currentPos + inlength;
while (currentPos < finalin - 28 * 2) {
mainloop1: for (selector1=0; selector1 <= 8; selector1++) {
int compressedNum = codeNum[selector1];
//if (finalin <= currentPos + compressedNum - 1)
// compressedNum = finalin - currentPos;
int b = bitLength[selector1];
int max = 1 << b;
int i = 0;
for (; i < compressedNum; i++) {
if (Util.smallerorequalthan(max, in[currentPos + i]))
continue mainloop1;
}
currentPos += compressedNum;
break;
}
mainloop2: for (selector2 = 0; selector2 <= 8; selector2++) {
int compressedNum = codeNum[selector2];
//if (finalin <= currentPos + compressedNum - 1)
// compressedNum = finalin - currentPos;
int b = bitLength[selector2];
int max = 1 << b;
int i = 0;
for (; i < compressedNum; i++) {
if (Util.smallerorequalthan(max, in[currentPos + i]))
continue mainloop2;
}
currentPos += compressedNum;
break;
}
int code = M[selector1][selector2];
out[tmpoutpos] = 0;
out[tmpoutpos + 1] = 0;
switch (code) {
case 0:
encode0(in, inpos, code, out, outpos);
break;
case 1:
encode1(in, inpos, code, out, outpos);
break;
case 2:
encode2(in, inpos, code, out, outpos);
break;
case 3:
encode3(in, inpos, code, out, outpos);
break;
case 4:
encode4(in, inpos, code, out, outpos);
break;
case 5:
encode5(in, inpos, code, out, outpos);
break;
case 6:
encode6(in, inpos, code, out, outpos);
break;
case 7:
encode7(in, inpos, code, out, outpos);
break;
case 8:
encode8(in, inpos, code, out, outpos);
break;
case 9:
encode9(in, inpos, code, out, outpos);
break;
case 10:
encode10(in, inpos, code, out, outpos);
break;
case 11:
encode11(in, inpos, code, out, outpos);
break;
case 12:
encode12(in, inpos, code, out, outpos);
break;
case 13:
encode13(in, inpos, code, out, outpos);
break;
case 14:
encode14(in, inpos, code, out, outpos);
break;
case 15:
encode15(in, inpos, code, out, outpos);
break;
case 16:
encode16(in, inpos, code, out, outpos);
break;
case 17:
encode17(in, inpos, code, out, outpos);
break;
case 18:
encode18(in, inpos, code, out, outpos);
break;
case 19:
encode19(in, inpos, code, out, outpos);
break;
case 20:
encode20(in, inpos, code, out, outpos);
break;
case 21:
encode21(in, inpos, code, out, outpos);
break;
case 22:
encode22(in, inpos, code, out, outpos);
break;
case 23:
encode23(in, inpos, code, out, outpos);
break;
case 24:
encode24(in, inpos, code, out, outpos);
break;
case 25:
encode25(in, inpos, code, out, outpos);
break;
case 26:
encode26(in, inpos, code, out, outpos);
break;
case 27:
encode27(in, inpos, code, out, outpos);
break;
case 28:
encode28(in, inpos, code, out, outpos);
break;
case 29:
encode29(in, inpos, code, out, outpos);
break;
case 30:
encode30(in, inpos, code, out, outpos);
break;
case 31:
encode31(in, inpos, code, out, outpos);
break;
case 32:
encode32(in, inpos, code, out, outpos);
break;
case 33:
encode33(in, inpos, code, out, outpos);
break;
case 34:
encode34(in, inpos, code, out, outpos);
break;
case 35:
encode35(in, inpos, code, out, outpos);
break;
case 36:
encode36(in, inpos, code, out, outpos);
break;
case 37:
encode37(in, inpos, code, out, outpos);
break;
case 38:
encode38(in, inpos, code, out, outpos);
break;
case 39:
encode39(in, inpos, code, out, outpos);
break;
case 40:
encode40(in, inpos, code, out, outpos);
break;
case 41:
encode41(in, inpos, code, out, outpos);
break;
case 42:
encode42(in, inpos, code, out, outpos);
break;
case 43:
encode43(in, inpos, code, out, outpos);
break;
case 44:
encode44(in, inpos, code, out, outpos);
break;
case 45:
encode45(in, inpos, code, out, outpos);
break;
case 46:
encode46(in, inpos, code, out, outpos);
break;
case 47:
encode47(in, inpos, code, out, outpos);
break;
case 48:
encode48(in, inpos, code, out, outpos);
break;
case 49:
encode49(in, inpos, code, out, outpos);
break;
case 50:
encode50(in, inpos, code, out, outpos);
break;
case 51:
encode51(in, inpos, code, out, outpos);
break;
case 52:
encode52(in, inpos, code, out, outpos);
break;
case 53:
encode53(in, inpos, code, out, outpos);
break;
case 54:
encode54(in, inpos, code, out, outpos);
break;
case 55:
encode55(in, inpos, code, out, outpos);
break;
case 56:
encode56(in, inpos, code, out, outpos);
break;
case 57:
encode57(in, inpos, code, out, outpos);
break;
case 58:
encode58(in, inpos, code, out, outpos);
break;
case 59:
encode59(in, inpos, code, out, outpos);
break;
case 60:
encode60(in, inpos, code, out, outpos);
break;
case 61:
encode61(in, inpos, code, out, outpos);
break;
case 62:
encode62(in, inpos, code, out, outpos);
break;
case 63:
encode63(in, inpos, code, out, outpos);
break;
case 64:
encode64(in, inpos, code, out, outpos);
break;
case 65:
encode65(in, inpos, code, out, outpos);
break;
case 66:
encode66(in, inpos, code, out, outpos);
break;
case 67:
encode67(in, inpos, code, out, outpos);
break;
case 68:
encode68(in, inpos, code, out, outpos);
break;
case 69:
encode69(in, inpos, code, out, outpos);
break;
case 70:
encode70(in, inpos, code, out, outpos);
break;
case 71:
encode71(in, inpos, code, out, outpos);
break;
case 72:
encode72(in, inpos, code, out, outpos);
break;
case 73:
encode73(in, inpos, code, out, outpos);
break;
case 74:
encode74(in, inpos, code, out, outpos);
break;
case 75:
encode75(in, inpos, code, out, outpos);
break;
case 76:
encode76(in, inpos, code, out, outpos);
break;
case 77:
encode77(in, inpos, code, out, outpos);
break;
case 78:
encode78(in, inpos, code, out, outpos);
break;
case 79:
encode79(in, inpos, code, out, outpos);
break;
case 80:
encode80(in, inpos, code, out, outpos);
break;
default:
throw new RuntimeException("unsupported code");
}// end switch
inpos.set(currentPos);
tmpoutpos += 2;
}
outer: while (currentPos < finalin) {
mainloop: for (int selector = 0; selector < 8; selector++) {
int res = 0;
int compressedNum = codeNum[selector];
if (finalin <= currentPos + compressedNum - 1)
compressedNum = finalin - currentPos;
int b = bitLength[selector];
int max = 1 << b;
int i = 0;
for (; i < compressedNum; i++) {
if (Util.smallerorequalthan(max, in[currentPos + i]))
continue mainloop;
res = (res << b) + in[currentPos + i];
}
if (compressedNum != codeNum[selector]) {
res <<= (codeNum[selector] - compressedNum) * b;
}
res |= selector << 28;
out[tmpoutpos++] = res;
currentPos += compressedNum;
continue outer;
}
final int selector = 8;
out[tmpoutpos++] = in[currentPos++] | (selector << 28);
}
inpos.set(currentPos);
outpos.set(tmpoutpos);
}
private void encode0(final int[] in, final IntWrapper inOffset, final int code, final int[] out,
final IntWrapper outOffset) {
int inf = inOffset.get();
int outf = outOffset.get();
for (int i = 0; i < 24; i++)
out[outf + 0] = (out[outf + 0] << 1) + (in[inf + i]);
for (int i = 0; i < 4; i++)
out[outf + 1] = (out[outf + 1] << 1) + in[inf + 24 + i];
for (int i = 0; i < 28; i++)
out[outf + 1] = (out[outf + 1] << 1) + in[inf + 28 + i];
out[outf + 0] = code << 24 | out[outf + 0];
outOffset.add(2);
}
private void encode1(final int[] in, final IntWrapper inOffset, final int code, final int[] out,
final IntWrapper outOffset) {
int inf = inOffset.get();
int outf = outOffset.get();
for (int i = 0; i < 24; i++)
out[outf + 0] = (out[outf + 0] << 1) + in[inf + i];
for (int i = 0; i < 4; i++)
out[outf + 1] = (out[outf + 1] << 1) + in[inf + 24 + i];
for (int i = 0; i < 14; i++)
out[outf + 1] = (out[outf + 1] << 2) + in[inf + 28 + i];
out[outf + 0] = code << 24 | out[outf + 0];
outOffset.add(2);
}
private void encode2(final int[] in, final IntWrapper inOffset, final int code, final int[] out,
final IntWrapper outOffset) {
int inf = inOffset.get();
int outf = outOffset.get();
for (int i = 0; i < 24; i++)
out[outf + 0] = (out[outf + 0] << 1) + in[inf + i];
for (int i = 0; i < 4; i++)
out[outf + 1] = (out[outf + 1] << 1) + in[inf + 24 + i];
for (int i = 0; i < 9; i++)
out[outf + 1] = (out[outf + 1] << 3) + in[inf + 28 + i];// 第二个28位是低位存储的,所以浪费的1比特在最顶端。
out[outf + 0] = code << 24 | out[outf + 0];
outOffset.add(2);
}
private void encode3(final int[] in, final IntWrapper inOffset, final int code, final int[] out,
final IntWrapper outOffset) {
int inf = inOffset.get();
int outf = outOffset.get();
for (int i = 0; i < 24; i++)
out[outf + 0] = (out[outf + 0] << 1) + in[inf + i];
for (int i = 0; i < 4; i++)
out[outf + 1] = (out[outf + 1] << 1) + in[inf + 24 + i];
for (int i = 0; i < 7; i++)
out[outf + 1] = (out[outf + 1] << 4) + in[inf + 28 + i];
out[outf + 0] = code << 24 | out[outf + 0];
outOffset.add(2);
}
private void encode4(final int[] in, final IntWrapper inOffset, final int code, final int[] out,
final IntWrapper outOffset) {
int inf = inOffset.get();
int outf = outOffset.get();
for (int i = 0; i < 24; i++)
out[outf + 0] = (out[outf + 0] << 1) + in[inf + i];
for (int i = 0; i < 4; i++)
out[outf + 1] = (out[outf + 1] << 1) + in[inf + 24 + i];
for (int i = 0; i < 5; i++)
out[outf + 1] = (out[outf + 1] << 5) + in[inf + 28 + i];
out[outf + 0] = code << 24 | out[outf + 0];
outOffset.add(2);
}
private void encode5(final int[] in, final IntWrapper inOffset, final int code, final int[] out,
final IntWrapper outOffset) {
int inf = inOffset.get();
int outf = outOffset.get();
for (int i = 0; i < 24; i++)
out[outf + 0] = (out[outf + 0] << 1) + in[inf + i];
for (int i = 0; i < 4; i++)
out[outf + 1] = (out[outf + 1] << 1) + in[inf + 24 + i];
for (int i = 0; i < 4; i++)
out[outf + 1] = (out[outf + 1] << 7) + in[inf + 28 + i];
out[outf + 0] = code << 24 | out[outf + 0];
outOffset.add(2);
}
private void encode6(final int[] in, final IntWrapper inOffset, final int code, final int[] out,
final IntWrapper outOffset) {
int inf = inOffset.get();
int outf = outOffset.get();
for (int i = 0; i < 24; i++)
out[outf + 0] = (out[outf + 0] << 1) + in[inf + i];
for (int i = 0; i < 4; i++)
out[outf + 1] = (out[outf + 1] << 1) + in[inf + 24 + i];
for (int i = 0; i < 3; i++)
out[outf + 1] = (out[outf + 1] << 9) + in[inf + 28 + i];
out[outf + 0] = code << 24 | out[outf + 0];
outOffset.add(2);
}
private void encode7(final int[] in, final IntWrapper inOffset, final int code, final int[] out,
final IntWrapper outOffset) {
int inf = inOffset.get();
int outf = outOffset.get();
for (int i = 0; i < 24; i++)
out[outf + 0] = (out[outf + 0] << 1) + in[inf + i];
for (int i = 0; i < 4; i++)
out[outf + 1] = (out[outf + 1] << 1) + in[inf + 24 + i];
for (int i = 0; i < 2; i++)
out[outf + 1] = (out[outf + 1] << 14) + in[inf + 28 + i];
out[outf + 0] = code << 24 | out[outf + 0];
outOffset.add(2);
}
private void encode8(final int[] in, final IntWrapper inOffset, final int code, final int[] out,
final IntWrapper outOffset) {
int inf = inOffset.get();
int outf = outOffset.get();
for (int i = 0; i < 24; i++)
out[outf + 0] = (out[outf + 0] << 1) + in[inf + i];
for (int i = 0; i < 4; i++)
out[outf + 1] = (out[outf + 1] << 1) + in[inf + 24 + i];
for (int i = 0; i < 1; i++)
out[outf + 1] = (out[outf + 1] << 28) + in[inf + 28 + i];
out[outf + 0] = code << 24 | out[outf + 0];
outOffset.add(2);
}
private void encode9(final int[] in, final IntWrapper inOffset, final int code, final int[] out,
final IntWrapper outOffset) {
int inf = inOffset.get();
int outf = outOffset.get();
for (int i = 0; i < 12; i++)
out[outf + 0] = (out[outf + 0] << 2) + in[inf + i];
for (int i = 0; i < 2; i++)
out[outf + 1] = (out[outf + 1] << 2) + in[inf + 12 + i];
for (int i = 0; i < 28; i++)
out[outf + 1] = (out[outf + 1] << 1) + in[inf + 14 + i];
out[outf + 0] = code << 24 | out[outf + 0];
outOffset.add(2);
}
private void encode10(final int[] in, final IntWrapper inOffset, final int code, final int[] out,
final IntWrapper outOffset) {
int inf = inOffset.get();
int outf = outOffset.get();
for (int i = 0; i < 12; i++) {
out[outf + 0] = (out[outf + 0] << 2) + in[inf + i];
}
for (int i = 0; i < 2; i++)
out[outf + 1] = (out[outf + 1] << 2) + in[inf + 12 + i];
for (int i = 0; i < 14; i++)
out[outf + 1] = (out[outf + 1] << 2) + in[inf + 14 + i];
out[outf + 0] = code << 24 | out[outf + 0];
outOffset.add(2);
}
private void encode11(final int[] in, final IntWrapper inOffset, final int code, final int[] out,
final IntWrapper outOffset) {
int inf = inOffset.get();
int outf = outOffset.get();
for (int i = 0; i < 12; i++)
out[outf + 0] = (out[outf + 0] << 2) + in[inf + i];
for (int i = 0; i < 2; i++)
out[outf + 1] = (out[outf + 1] << 2) + in[inf + 12 + i];
for (int i = 0; i < 9; i++)
out[outf + 1] = (out[outf + 1] << 3) + in[inf + 14 + i];
out[outf + 0] = code << 24 | out[outf + 0];
outOffset.add(2);
}
private void encode12(final int[] in, final IntWrapper inOffset, final int code, final int[] out,
final IntWrapper outOffset) {
int inf = inOffset.get();
int outf = outOffset.get();
for (int i = 0; i < 12; i++)
out[outf + 0] = (out[outf + 0] << 2) + in[inf + i];
for (int i = 0; i < 2; i++)
out[outf + 1] = (out[outf + 1] << 2) + in[inf + 12 + i];
for (int i = 0; i < 7; i++)
out[outf + 1] = (out[outf + 1] << 4) + in[inf + 14 + i];
out[outf + 0] = code << 24 | out[outf + 0];
outOffset.add(2);
}
private void encode13(final int[] in, final IntWrapper inOffset, final int code, final int[] out,
final IntWrapper outOffset) {
int inf = inOffset.get();
int outf = outOffset.get();
for (int i = 0; i < 12; i++)
out[outf + 0] = (out[outf + 0] << 2) + in[inf + i];
for (int i = 0; i < 2; i++)
out[outf + 1] = (out[outf + 1] << 2) + in[inf + 12 + i];
for (int i = 0; i < 5; i++)
out[outf + 1] = (out[outf + 1] << 5) + in[inf + 14 + i];
out[outf + 0] = code << 24 | out[outf + 0];
outOffset.add(2);
}
private void encode14(final int[] in, final IntWrapper inOffset, final int code, final int[] out,
final IntWrapper outOffset) {
int inf = inOffset.get();
int outf = outOffset.get();
for (int i = 0; i < 12; i++)
out[outf + 0] = (out[outf + 0] << 2) + in[inf + i];
for (int i = 0; i < 2; i++)
out[outf + 1] = (out[outf + 1] << 2) + in[inf + 12 + i];
for (int i = 0; i < 4; i++)
out[outf + 1] = (out[outf + 1] << 7) + in[inf + 14 + i];
out[outf + 0] = code << 24 | out[outf + 0];
outOffset.add(2);
}
private void encode15(final int[] in, final IntWrapper inOffset, final int code, final int[] out,
final IntWrapper outOffset) {
int inf = inOffset.get();
int outf = outOffset.get();
for (int i = 0; i < 12; i++)
out[outf + 0] = (out[outf + 0] << 2) + in[inf + i];
for (int i = 0; i < 2; i++)
out[outf + 1] = (out[outf + 1] << 2) + in[inf + 12 + i];
for (int i = 0; i < 3; i++)
out[outf + 1] = (out[outf + 1] << 9) + in[inf + 14 + i];
out[outf + 0] = code << 24 | out[outf + 0];
outOffset.add(2);
}
private void encode16(final int[] in, final IntWrapper inOffset, final int code, final int[] out,
final IntWrapper outOffset) {
int inf = inOffset.get();
int outf = outOffset.get();
for (int i = 0; i < 12; i++)
out[outf + 0] = (out[outf + 0] << 2) + in[inf + i];
for (int i = 0; i < 2; i++)
out[outf + 1] = (out[outf + 1] << 2) + in[inf + 12 + i];
for (int i = 0; i < 2; i++)
out[outf + 1] = (out[outf + 1] << 14) + in[inf + 14 + i];
out[outf + 0] = code << 24 | out[outf + 0];
outOffset.add(2);
}
private void encode17(final int[] in, final IntWrapper inOffset, final int code, final int[] out,
final IntWrapper outOffset) {
int inf = inOffset.get();
int outf = outOffset.get();
for (int i = 0; i < 12; i++)
out[outf + 0] = (out[outf + 0] << 2) + in[inf + i];
for (int i = 0; i < 2; i++)
out[outf + 1] = (out[outf + 1] << 2) + in[inf + 12 + i];
for (int i = 0; i < 1; i++)
out[outf + 1] = (out[outf + 1] << 28) + in[inf + 14 + i];
out[outf + 0] = code << 24 | out[outf + 0];
outOffset.add(2);
}
private void encode18(final int[] in, final IntWrapper inOffset, final int code, final int[] out,
final IntWrapper outOffset) {
int inf = inOffset.get();
int outf = outOffset.get();
for (int i = 0; i < 8; i++)
out[outf + 0] = (out[outf + 0] << 3) + in[inf + i];
for (int i = 0; i < 1; i++)
out[outf + 1] = (out[outf + 1] << 3) + in[inf + 8 + i];
for (int i = 0; i < 28; i++)
out[outf + 1] = (out[outf + 1] << 1) + in[inf + 9 + i];
out[outf + 0] = code << 24 | out[outf + 0];
outOffset.add(2);
}
private void encode19(final int[] in, final IntWrapper inOffset, final int code, final int[] out,
final IntWrapper outOffset) {
int inf = inOffset.get();
int outf = outOffset.get();
for (int i = 0; i < 8; i++)
out[outf + 0] = (out[outf + 0] << 3) + in[inf + i];
for (int i = 0; i < 1; i++)
out[outf + 1] = (out[outf + 1] << 3) + in[inf + 8 + i];
for (int i = 0; i < 14; i++)
out[outf + 1] = (out[outf + 1] << 2) + in[inf + 9 + i];
out[outf + 0] = code << 24 | out[outf + 0];
outOffset.add(2);
}
private void encode20(final int[] in, final IntWrapper inOffset, final int code, final int[] out,
final IntWrapper outOffset) {
int inf = inOffset.get();
int outf = outOffset.get();
for (int i = 0; i < 8; i++)
out[outf + 0] = (out[outf + 0] << 3) + in[inf + i];
for (int i = 0; i < 1; i++)
out[outf + 1] = (out[outf + 1] << 3) + in[inf + 8 + i];
for (int i = 0; i < 9; i++)
out[outf + 1] = (out[outf + 1] << 3) + in[inf + 9 + i];
out[outf + 0] = code << 24 | out[outf + 0];
outOffset.add(2);
}
private void encode21(final int[] in, final IntWrapper inOffset, final int code, final int[] out,
final IntWrapper outOffset) {
int inf = inOffset.get();
int outf = outOffset.get();
for (int i = 0; i < 8; i++)
out[outf + 0] = (out[outf + 0] << 3) + in[inf + i];
for (int i = 0; i < 1; i++)
out[outf + 1] = (out[outf + 1] << 3) + in[inf + 8 + i];
for (int i = 0; i < 7; i++)
out[outf + 1] = (out[outf + 1] << 4) + in[inf + 9 + i];
out[outf + 0] = code << 24 | out[outf + 0];
outOffset.add(2);
}
private void encode22(final int[] in, final IntWrapper inOffset, final int code, final int[] out,
final IntWrapper outOffset) {
int inf = inOffset.get();
int outf = outOffset.get();
for (int i = 0; i < 8; i++)
out[outf + 0] = (out[outf + 0] << 3) + in[inf + i];
for (int i = 0; i < 1; i++)
out[outf + 1] = (out[outf + 1] << 3) + in[inf + 8 + i];
for (int i = 0; i < 5; i++)
out[outf + 1] = (out[outf + 1] << 5) + in[inf + 9 + i];
out[outf + 0] = code << 24 | out[outf + 0];
outOffset.add(2);
}
private void encode23(final int[] in, final IntWrapper inOffset, final int code, final int[] out,
final IntWrapper outOffset) {
int inf = inOffset.get();
int outf = outOffset.get();
for (int i = 0; i < 8; i++)
out[outf + 0] = (out[outf + 0] << 3) + in[inf + i];
for (int i = 0; i < 1; i++)
out[outf + 1] = (out[outf + 1] << 3) + in[inf + 8 + i];
for (int i = 0; i < 4; i++)
out[outf + 1] = (out[outf + 1] << 7) + in[inf + 9 + i];
out[outf + 0] = code << 24 | out[outf + 0];
outOffset.add(2);
}
private void encode24(final int[] in, final IntWrapper inOffset, final int code, final int[] out,
final IntWrapper outOffset) {
int inf = inOffset.get();
int outf = outOffset.get();
for (int i = 0; i < 8; i++)
out[outf + 0] = (out[outf + 0] << 3) + in[inf + i];
for (int i = 0; i < 1; i++)
out[outf + 1] = (out[outf + 1] << 3) + in[inf + 8 + i];
for (int i = 0; i < 3; i++)
out[outf + 1] = (out[outf + 1] << 9) + in[inf + 9 + i];
out[outf + 0] = code << 24 | out[outf + 0];
outOffset.add(2);
}
private void encode25(final int[] in, final IntWrapper inOffset, final int code, final int[] out,
final IntWrapper outOffset) {
int inf = inOffset.get();
int outf = outOffset.get();
for (int i = 0; i < 8; i++)
out[outf + 0] = (out[outf + 0] << 3) + in[inf + i];
for (int i = 0; i < 1; i++)
out[outf + 1] = (out[outf + 1] << 3) + in[inf + 8 + i];
for (int i = 0; i < 2; i++)
out[outf + 1] = (out[outf + 1] << 14) + in[inf + 9 + i];
out[outf + 0] = code << 24 | out[outf + 0];
outOffset.add(2);
}
private void encode26(final int[] in, final IntWrapper inOffset, final int code, final int[] out,
final IntWrapper outOffset) {
int inf = inOffset.get();
int outf = outOffset.get();
for (int i = 0; i < 8; i++)
out[outf + 0] = (out[outf + 0] << 3) + in[inf + i];
for (int i = 0; i < 1; i++)
out[outf + 1] = (out[outf + 1] << 3) + in[inf + 8 + i];
for (int i = 0; i < 1; i++)
out[outf + 1] = (out[outf + 1] << 28) + in[inf + 9 + i];
out[outf + 0] = code << 24 | out[outf + 0];
outOffset.add(2);
}
private void encode27(final int[] in, final IntWrapper inOffset, final int code, final int[] out,
final IntWrapper outOffset) {
int inf = inOffset.get();
int outf = outOffset.get();
for (int i = 0; i < 6; i++)
out[outf + 0] = (out[outf + 0] << 4) + in[inf + i];
for (int i = 0; i < 1; i++)
out[outf + 1] = (out[outf + 1] << 4) + in[inf + 6 + i];
for (int i = 0; i < 28; i++)
out[outf + 1] = (out[outf + 1] << 1) + in[inf + 7 + i];
out[outf + 0] = code << 24 | out[outf + 0];
outOffset.add(2);
}
private void encode28(final int[] in, final IntWrapper inOffset, final int code, final int[] out,
final IntWrapper outOffset) {
int inf = inOffset.get();
int outf = outOffset.get();
for (int i = 0; i < 6; i++)
out[outf + 0] = (out[outf + 0] << 4) + in[inf + i];
for (int i = 0; i < 1; i++)
out[outf + 1] = (out[outf + 1] << 4) + in[inf + 6 + i];
for (int i = 0; i < 14; i++)
out[outf + 1] = (out[outf + 1] << 2) + in[inf + 7 + i];
out[outf + 0] = code << 24 | out[outf + 0];
outOffset.add(2);
}
private void encode29(final int[] in, final IntWrapper inOffset, final int code, final int[] out,
final IntWrapper outOffset) {
int inf = inOffset.get();
int outf = outOffset.get();
for (int i = 0; i < 6; i++)
out[outf + 0] = (out[outf + 0] << 4) + in[inf + i];
for (int i = 0; i < 1; i++)
out[outf + 1] = (out[outf + 1] << 4) + in[inf + 6 + i];
for (int i = 0; i < 9; i++)
out[outf + 1] = (out[outf + 1] << 3) + in[inf + 7 + i];
out[outf + 0] = code << 24 | out[outf + 0];
outOffset.add(2);
}
private void encode30(final int[] in, final IntWrapper inOffset, final int code, final int[] out,
final IntWrapper outOffset) {
int inf = inOffset.get();
int outf = outOffset.get();
for (int i = 0; i < 6; i++)
out[outf + 0] = (out[outf + 0] << 4) + in[inf + i];
for (int i = 0; i < 1; i++)
out[outf + 1] = (out[outf + 1] << 4) + in[inf + 6 + i];
for (int i = 0; i < 7; i++)
out[outf + 1] = (out[outf + 1] << 4) + in[inf + 7 + i];
out[outf + 0] = code << 24 | out[outf + 0];
outOffset.add(2);
}
private void encode31(final int[] in, final IntWrapper inOffset, final int code, final int[] out,
final IntWrapper outOffset) {
int inf = inOffset.get();
int outf = outOffset.get();
for (int i = 0; i < 6; i++)
out[outf + 0] = (out[outf + 0] << 4) + in[inf + i];
for (int i = 0; i < 1; i++)
out[outf + 1] = (out[outf + 1] << 4) + in[inf + 6 + i];
for (int i = 0; i < 5; i++)
out[outf + 1] = (out[outf + 1] << 5) + in[inf + 7 + i];
out[outf + 0] = code << 24 | out[outf + 0];
outOffset.add(2);
}
private void encode32(final int[] in, final IntWrapper inOffset, final int code, final int[] out,
final IntWrapper outOffset) {
int inf = inOffset.get();
int outf = outOffset.get();
for (int i = 0; i < 6; i++)
out[outf + 0] = (out[outf + 0] << 4) + in[inf + i];
for (int i = 0; i < 1; i++)
out[outf + 1] = (out[outf + 1] << 4) + in[inf + 6 + i];
for (int i = 0; i < 4; i++)
out[outf + 1] = (out[outf + 1] << 7) + in[inf + 7 + i];
out[outf + 0] = code << 24 | out[outf + 0];
outOffset.add(2);
}
private void encode33(final int[] in, final IntWrapper inOffset, final int code, final int[] out,
final IntWrapper outOffset) {
int inf = inOffset.get();
int outf = outOffset.get();
for (int i = 0; i < 6; i++)
out[outf + 0] = (out[outf + 0] << 4) + in[inf + i];
for (int i = 0; i < 1; i++)
out[outf + 1] = (out[outf + 1] << 4) + in[inf + 6 + i];
for (int i = 0; i < 3; i++)
out[outf + 1] = (out[outf + 1] << 9) + in[inf + 7 + i];
out[outf + 0] = code << 24 | out[outf + 0];
outOffset.add(2);
}
private void encode34(final int[] in, final IntWrapper inOffset, final int code, final int[] out,
final IntWrapper outOffset) {
int inf = inOffset.get();
int outf = outOffset.get();
for (int i = 0; i < 6; i++)
out[outf + 0] = (out[outf + 0] << 4) + in[inf + i];
for (int i = 0; i < 1; i++)
out[outf + 1] = (out[outf + 1] << 4) + in[inf + 6 + i];
for (int i = 0; i < 2; i++)
out[outf + 1] = (out[outf + 1] << 14) + in[inf + 7 + i];
out[outf + 0] = code << 24 | out[outf + 0];
outOffset.add(2);
}
private void encode35(final int[] in, final IntWrapper inOffset, final int code, final int[] out,
final IntWrapper outOffset) {
int inf = inOffset.get();
int outf = outOffset.get();
for (int i = 0; i < 6; i++)
out[outf + 0] = (out[outf + 0] << 4) + in[inf + i];
for (int i = 0; i < 1; i++)
out[outf + 1] = (out[outf + 1] << 4) + in[inf + 6 + i];
for (int i = 0; i < 1; i++)
out[outf + 1] = (out[outf + 1] << 28) + in[inf + 7 + i];
out[outf + 0] = code << 24 | out[outf + 0];
outOffset.add(2);
}
private void encode36(final int[] in, final IntWrapper inOffset, final int code, final int[] out,
final IntWrapper outOffset) {
int inf = inOffset.get();
int outf = outOffset.get();
for (int i = 0; i < 4; i++)
out[outf + 0] = (out[outf + 0] << 5) + in[inf + i];
out[outf + 0] = (out[outf + 0] << 4) + (in[inf + 4] >>> 1);
out[outf + 1] = (out[outf + 1] << 1) + ((in[inf + 4] << 31) >>> 31);
for (int i = 0; i < 28; i++)
out[outf + 1] = (out[outf + 1] << 1) + in[inf + 5 + i];
out[outf + 0] = code << 24 | out[outf + 0];
outOffset.add(2);
}
private void encode37(final int[] in, final IntWrapper inOffset, final int code, final int[] out,
final IntWrapper outOffset) {
int inf = inOffset.get();
int outf = outOffset.get();
for (int i = 0; i < 4; i++)
out[outf + 0] = (out[outf + 0] << 5) + in[inf + i];
out[outf + 0] = (out[outf + 0] << 4) + (in[inf + 4] >>> 1);
out[outf + 1] = (out[outf + 1] << 1) + ((in[inf + 4] << 31) >>> 31);
for (int i = 0; i < 14; i++)
out[outf + 1] = (out[outf + 1] << 2) + in[inf + 5 + i];
out[outf + 0] = code << 24 | out[outf + 0];
outOffset.add(2);
}
private void encode38(final int[] in, final IntWrapper inOffset, final int code, final int[] out,
final IntWrapper outOffset) {
int inf = inOffset.get();
int outf = outOffset.get();
for (int i = 0; i < 4; i++)
out[outf + 0] = (out[outf + 0] << 5) + in[inf + i];
out[outf + 0] = (out[outf + 0] << 4) + (in[inf + 4] >>> 1);
out[outf + 1] = (out[outf + 1] << 1) + ((in[inf + 4] << 31) >>> 31);
for (int i = 0; i < 9; i++)
out[outf + 1] = (out[outf + 1] << 3) + in[inf + 5 + i];
out[outf + 0] = code << 24 | out[outf + 0];
outOffset.add(2);
}
private void encode39(final int[] in, final IntWrapper inOffset, final int code, final int[] out,
final IntWrapper outOffset) {
int inf = inOffset.get();
int outf = outOffset.get();
for (int i = 0; i < 4; i++)
out[outf + 0] = (out[outf + 0] << 5) + in[inf + i];
out[outf + 0] = (out[outf + 0] << 4) + (in[inf + 4] >>> 1);
out[outf + 1] = (out[outf + 1] << 1) + ((in[inf + 4] << 31) >>> 31);
for (int i = 0; i < 7; i++)
out[outf + 1] = (out[outf + 1] << 4) + in[inf + 5 + i];
out[outf + 0] = code << 24 | out[outf + 0];
outOffset.add(2);
}
private void encode40(final int[] in, final IntWrapper inOffset, final int code, final int[] out,
final IntWrapper outOffset) {
int inf = inOffset.get();
int outf = outOffset.get();
for (int i = 0; i < 4; i++)
out[outf + 0] = (out[outf + 0] << 5) + in[inf + i];
out[outf + 0] = (out[outf + 0] << 4) + (in[inf + 4] >>> 1);
out[outf + 1] = (out[outf + 1] << 1) + ((in[inf + 4] << 31) >>> 31);
for (int i = 0; i < 5; i++)
out[outf + 1] = (out[outf + 1] << 5) + in[inf + 5 + i];
out[outf + 0] = code << 24 | out[outf + 0];
outOffset.add(2);
}
private void encode41(final int[] in, final IntWrapper inOffset, final int code, final int[] out,
final IntWrapper outOffset) {
int inf = inOffset.get();
int outf = outOffset.get();
for (int i = 0; i < 4; i++)
out[outf + 0] = (out[outf + 0] << 5) + in[inf + i];
out[outf + 0] = (out[outf + 0] << 4) + (in[inf + 4] >>> 1);
out[outf + 1] = (out[outf + 1] << 1) + ((in[inf + 4] << 31) >>> 31);
for (int i = 0; i < 4; i++)
out[outf + 1] = (out[outf + 1] << 7) + in[inf + 5 + i];
out[outf + 0] = code << 24 | out[outf + 0];
outOffset.add(2);
}
private void encode42(final int[] in, final IntWrapper inOffset, final int code, final int[] out,
final IntWrapper outOffset) {
int inf = inOffset.get();
int outf = outOffset.get();
for (int i = 0; i < 4; i++)
out[outf + 0] = (out[outf + 0] << 5) + in[inf + i];
out[outf + 0] = (out[outf + 0] << 4) + (in[inf + 4] >>> 1);
out[outf + 1] = (out[outf + 1] << 1) + ((in[inf + 4] << 31) >>> 31);
for (int i = 0; i < 3; i++)
out[outf + 1] = (out[outf + 1] << 9) + in[inf + 5 + i];
out[outf + 0] = code << 24 | out[outf + 0];
outOffset.add(2);
}
private void encode43(final int[] in, final IntWrapper inOffset, final int code, final int[] out,
final IntWrapper outOffset) {
int inf = inOffset.get();
int outf = outOffset.get();
for (int i = 0; i < 4; i++)
out[outf + 0] = (out[outf + 0] << 5) + in[inf + i];
out[outf + 0] = (out[outf + 0] << 4) + (in[inf + 4] >>> 1);
out[outf + 1] = (out[outf + 1] << 1) + ((in[inf + 4] << 31) >>> 31);
for (int i = 0; i < 2; i++)
out[outf + 1] = (out[outf + 1] << 14) + in[inf + 5 + i];
out[outf + 0] = code << 24 | out[outf + 0];
outOffset.add(2);
}
private void encode44(final int[] in, final IntWrapper inOffset, final int code, final int[] out,
final IntWrapper outOffset) {
int inf = inOffset.get();
int outf = outOffset.get();
for (int i = 0; i < 4; i++)
out[outf + 0] = (out[outf + 0] << 5) + in[inf + i];
out[outf + 0] = (out[outf + 0] << 4) + (in[inf + 4] >>> 1);
out[outf + 1] = (out[outf + 1] << 1) + ((in[inf + 4] << 31) >>> 31);
for (int i = 0; i < 1; i++)
out[outf + 1] = (out[outf + 1] << 28) + in[inf + 5 + i];
out[outf + 0] = code << 24 | out[outf + 0];
outOffset.add(2);
}
private void encode45(final int[] in, final IntWrapper inOffset, final int code, final int[] out,
final IntWrapper outOffset) {
int inf = inOffset.get();
int outf = outOffset.get();
for (int i = 0; i < 3; i++)
out[outf + 0] = (out[outf + 0] << 7) + in[inf + i];
out[outf + 0] = (out[outf + 0] << 3) + (in[inf + 3] >>> 4);
out[outf + 1] = (out[outf + 1] << 4) + ((in[inf + 3] << 28) >>> 28);
for (int i = 0; i < 28; i++)
out[outf + 1] = (out[outf + 1] << 1) + in[inf + 4 + i];
out[outf + 0] = code << 24 | out[outf + 0];
outOffset.add(2);
}
private void encode46(final int[] in, final IntWrapper inOffset, final int code, final int[] out,
final IntWrapper outOffset) {
int inf = inOffset.get();
int outf = outOffset.get();
for (int i = 0; i < 3; i++)
out[outf + 0] = (out[outf + 0] << 7) + in[inf + i];
out[outf + 0] = (out[outf + 0] << 3) + (in[inf + 3] >>> 4);
out[outf + 1] = (out[outf + 1] << 4) + ((in[inf + 3] << 28) >>> 28);
for (int i = 0; i < 14; i++)
out[outf + 1] = (out[outf + 1] << 2) + in[inf + 4 + i];
out[outf + 0] = code << 24 | out[outf + 0];
outOffset.add(2);
}
private void encode47(final int[] in, final IntWrapper inOffset, final int code, final int[] out,
final IntWrapper outOffset) {
int inf = inOffset.get();
int outf = outOffset.get();
for (int i = 0; i < 3; i++)
out[outf + 0] = (out[outf + 0] << 7) + in[inf + i];
out[outf + 0] = (out[outf + 0] << 3) + (in[inf + 3] >>> 4);
out[outf + 1] = (out[outf + 1] << 4) + ((in[inf + 3] << 28) >>> 28);
for (int i = 0; i < 9; i++)
out[outf + 1] = (out[outf + 1] << 3) + in[inf + 4 + i];
out[outf + 0] = code << 24 | out[outf + 0];
outOffset.add(2);
}
private void encode48(final int[] in, final IntWrapper inOffset, final int code, final int[] out,
final IntWrapper outOffset) {
int inf = inOffset.get();
int outf = outOffset.get();
for (int i = 0; i < 3; i++)
out[outf + 0] = (out[outf + 0] << 7) + in[inf + i];
out[outf + 0] = (out[outf + 0] << 3) + (in[inf + 3] >>> 4);
out[outf + 1] = (out[outf + 1] << 4) + ((in[inf + 3] << 28) >>> 28);
for (int i = 0; i < 7; i++)
out[outf + 1] = (out[outf + 1] << 4) + in[inf + 4 + i];
out[outf + 0] = code << 24 | out[outf + 0];
outOffset.add(2);
}
private void encode49(final int[] in, final IntWrapper inOffset, final int code, final int[] out,
final IntWrapper outOffset) {
int inf = inOffset.get();
int outf = outOffset.get();
for (int i = 0; i < 3; i++)
out[outf + 0] = (out[outf + 0] << 7) + in[inf + i];
out[outf + 0] = (out[outf + 0] << 3) + (in[inf + 3] >>> 4);
out[outf + 1] = (out[outf + 1] << 4) + ((in[inf + 3] << 28) >>> 28);
for (int i = 0; i < 5; i++)
out[outf + 1] = (out[outf + 1] << 5) + in[inf + 4 + i];
out[outf + 0] = code << 24 | out[outf + 0];
outOffset.add(2);
}
private void encode50(final int[] in, final IntWrapper inOffset, final int code, final int[] out,
final IntWrapper outOffset) {
int inf = inOffset.get();
int outf = outOffset.get();
for (int i = 0; i < 3; i++)
out[outf + 0] = (out[outf + 0] << 7) + in[inf + i];
out[outf + 0] = (out[outf + 0] << 3) + (in[inf + 3] >>> 4);
out[outf + 1] = (out[outf + 1] << 4) + ((in[inf + 3] << 28) >>> 28);
for (int i = 0; i < 4; i++)
out[outf + 1] = (out[outf + 1] << 7) + in[inf + 4 + i];
out[outf + 0] = code << 24 | out[outf + 0];
outOffset.add(2);
}
private void encode51(final int[] in, final IntWrapper inOffset, final int code, final int[] out,
final IntWrapper outOffset) {
int inf = inOffset.get();
int outf = outOffset.get();
for (int i = 0; i < 3; i++)
out[outf + 0] = (out[outf + 0] << 7) + in[inf + i];
out[outf + 0] = (out[outf + 0] << 3) + (in[inf + 3] >>> 4);
out[outf + 1] = (out[outf + 1] << 4) + ((in[inf + 3] << 28) >>> 28);
for (int i = 0; i < 3; i++)
out[outf + 1] = (out[outf + 1] << 9) + in[inf + 4 + i];
out[outf + 0] = code << 24 | out[outf + 0];
outOffset.add(2);
}
private void encode52(final int[] in, final IntWrapper inOffset, final int code, final int[] out,
final IntWrapper outOffset) {
int inf = inOffset.get();
int outf = outOffset.get();
for (int i = 0; i < 3; i++)
out[outf + 0] = (out[outf + 0] << 7) + in[inf + i];
out[outf + 0] = (out[outf + 0] << 3) + (in[inf + 3] >>> 4);
out[outf + 1] = (out[outf + 1] << 4) + ((in[inf + 3] << 28) >>> 28);
for (int i = 0; i < 2; i++)
out[outf + 1] = (out[outf + 1] << 14) + in[inf + 4 + i];
out[outf + 0] = code << 24 | out[outf + 0];
outOffset.add(2);
}
private void encode53(final int[] in, final IntWrapper inOffset, final int code, final int[] out,
final IntWrapper outOffset) {
int inf = inOffset.get();
int outf = outOffset.get();
for (int i = 0; i < 3; i++)
out[outf + 0] = (out[outf + 0] << 7) + in[inf + i];
out[outf + 0] = (out[outf + 0] << 3) + (in[inf + 3] >>> 4);
out[outf + 1] = (out[outf + 1] << 4) + ((in[inf + 3] << 28) >>> 28);
for (int i = 0; i < 1; i++)
out[outf + 1] = (out[outf + 1] << 28) + in[inf + 4 + i];
out[outf + 0] = code << 24 | out[outf + 0];
outOffset.add(2);
}
private void encode54(final int[] in, final IntWrapper inOffset, final int code, final int[] out,
final IntWrapper outOffset) {
int inf = inOffset.get();
int outf = outOffset.get();
for (int i = 0; i < 2; i++)
out[outf + 0] = (out[outf + 0] << 9) + in[inf + i];
out[outf + 0] = (out[outf + 0] << 6) + (in[inf + 2] >>> 3);
out[outf + 1] = (out[outf + 1] << 3) + ((in[inf + 2] << 29) >>> 29);
for (int i = 0; i < 28; i++)
out[outf + 1] = (out[outf + 1] << 1) + in[inf + 3 + i];
out[outf + 0] = code << 24 | out[outf + 0];
outOffset.add(2);
}
private void encode55(final int[] in, final IntWrapper inOffset, final int code, final int[] out,
final IntWrapper outOffset) {
int inf = inOffset.get();
int outf = outOffset.get();
for (int i = 0; i < 2; i++)
out[outf + 0] = (out[outf + 0] << 9) + in[inf + i];
out[outf + 0] = (out[outf + 0] << 6) + (in[inf + 2] >>> 3);
out[outf + 1] = (out[outf + 1] << 3) + ((in[inf + 2] << 29) >>> 29);
for (int i = 0; i < 14; i++)
out[outf + 1] = (out[outf + 1] << 2) + in[inf + 3 + i];
out[outf + 0] = code << 24 | out[outf + 0];
outOffset.add(2);
}
private void encode56(final int[] in, final IntWrapper inOffset, final int code, final int[] out,
final IntWrapper outOffset) {
int inf = inOffset.get();
int outf = outOffset.get();
for (int i = 0; i < 2; i++)
out[outf + 0] = (out[outf + 0] << 9) + in[inf + i];
out[outf + 0] = (out[outf + 0] << 6) + (in[inf + 2] >>> 3);
out[outf + 1] = (out[outf + 1] << 3) + ((in[inf + 2] << 29) >>> 29);
for (int i = 0; i < 9; i++)
out[outf + 1] = (out[outf + 1] << 3) + in[inf + 3 + i];
out[outf + 0] = code << 24 | out[outf + 0];
outOffset.add(2);
}
private void encode57(final int[] in, final IntWrapper inOffset, final int code, final int[] out,
final IntWrapper outOffset) {
int inf = inOffset.get();
int outf = outOffset.get();
for (int i = 0; i < 2; i++)
out[outf + 0] = (out[outf + 0] << 9) + in[inf + i];
out[outf + 0] = (out[outf + 0] << 6) + (in[inf + 2] >>> 3);
out[outf + 1] = (out[outf + 1] << 3) + ((in[inf + 2] << 29) >>> 29);
for (int i = 0; i < 7; i++)
out[outf + 1] = (out[outf + 1] << 4) + in[inf + 3 + i];
out[outf + 0] = code << 24 | out[outf + 0];
outOffset.add(2);
}
private void encode58(final int[] in, final IntWrapper inOffset, final int code, final int[] out,
final IntWrapper outOffset) {
int inf = inOffset.get();
int outf = outOffset.get();
for (int i = 0; i < 2; i++)
out[outf + 0] = (out[outf + 0] << 9) + in[inf + i];
out[outf + 0] = (out[outf + 0] << 6) + (in[inf + 2] >>> 3);
out[outf + 1] = (out[outf + 1] << 3) + ((in[inf + 2] << 29) >>> 29);
for (int i = 0; i < 5; i++)
out[outf + 1] = (out[outf + 1] << 5) + in[inf + 3 + i];
out[outf + 0] = code << 24 | out[outf + 0];
outOffset.add(2);
}
private void encode59(final int[] in, final IntWrapper inOffset, final int code, final int[] out,
final IntWrapper outOffset) {
int inf = inOffset.get();
int outf = outOffset.get();
for (int i = 0; i < 2; i++)
out[outf + 0] = (out[outf + 0] << 9) + in[inf + i];
out[outf + 0] = (out[outf + 0] << 6) + (in[inf + 2] >>> 3);
out[outf + 1] = (out[outf + 1] << 3) + ((in[inf + 2] << 29) >>> 29);
for (int i = 0; i < 4; i++)
out[outf + 1] = (out[outf + 1] << 7) + in[inf + 3 + i];
out[outf + 0] = code << 24 | out[outf + 0];
outOffset.add(2);
}
private void encode60(final int[] in, final IntWrapper inOffset, final int code, final int[] out,
final IntWrapper outOffset) {
int inf = inOffset.get();
int outf = outOffset.get();
for (int i = 0; i < 2; i++)
out[outf + 0] = (out[outf + 0] << 9) + in[inf + i];
out[outf + 0] = (out[outf + 0] << 6) + (in[inf + 2] >>> 3);
out[outf + 1] = (out[outf + 1] << 3) + ((in[inf + 2] << 29) >>> 29);
for (int i = 0; i < 3; i++)
out[outf + 1] = (out[outf + 1] << 9) + in[inf + 3 + i];
out[outf + 0] = code << 24 | out[outf + 0];
outOffset.add(2);
}
private void encode61(final int[] in, final IntWrapper inOffset, final int code, final int[] out,
final IntWrapper outOffset) {
int inf = inOffset.get();
int outf = outOffset.get();
for (int i = 0; i < 2; i++)
out[outf + 0] = (out[outf + 0] << 9) + in[inf + i];
out[outf + 0] = (out[outf + 0] << 6) + (in[inf + 2] >>> 3);
out[outf + 1] = (out[outf + 1] << 3) + ((in[inf + 2] << 29) >>> 29);
for (int i = 0; i < 2; i++)
out[outf + 1] = (out[outf + 1] << 14) + in[inf + 3 + i];
out[outf + 0] = code << 24 | out[outf + 0];
outOffset.add(2);
}
private void encode62(final int[] in, final IntWrapper inOffset, final int code, final int[] out,
final IntWrapper outOffset) {
int inf = inOffset.get();
int outf = outOffset.get();
for (int i = 0; i < 2; i++)
out[outf + 0] = (out[outf + 0] << 9) + in[inf + i];
out[outf + 0] = (out[outf + 0] << 6) + (in[inf + 2] >>> 3);
out[outf + 1] = (out[outf + 1] << 3) + ((in[inf + 2] << 29) >>> 29);
for (int i = 0; i < 1; i++)
out[outf + 1] = (out[outf + 1] << 28) + in[inf + 3 + i];
out[outf + 0] = code << 24 | out[outf + 0];
outOffset.add(2);
}
private void encode63(final int[] in, final IntWrapper inOffset, final int code, final int[] out,
final IntWrapper outOffset) {
int inf = inOffset.get();
int outf = outOffset.get();
out[outf + 0] = (out[outf + 0] << 14) + in[inf];
out[outf + 0] = (out[outf + 0] << 10) + (in[inf + 1] >>> 4);
out[outf + 1] = (out[outf + 1] << 4) + ((in[inf + 1] << 28) >>> 28);
for (int i = 0; i < 28; i++)
out[outf + 1] = (out[outf + 1] << 1) + in[inf + 2 + i];
out[outf + 0] = code << 24 | out[outf + 0];
outOffset.add(2);
}
private void encode64(final int[] in, final IntWrapper inOffset, final int code, final int[] out,
final IntWrapper outOffset) {
int inf = inOffset.get();
int outf = outOffset.get();
out[outf + 0] = (out[outf + 0] << 14) + in[inf];
out[outf + 0] = (out[outf + 0] << 10) + (in[inf + 1] >>> 4);
out[outf + 1] = (out[outf + 1] << 4) + ((in[inf + 1] << 28) >>> 28);
for (int i = 0; i < 14; i++)
out[outf + 1] = (out[outf + 1] << 2) + in[inf + 2 + i];
out[outf + 0] = code << 24 | out[outf + 0];
outOffset.add(2);
}
private void encode65(final int[] in, final IntWrapper inOffset, final int code, final int[] out,
final IntWrapper outOffset) {
int inf = inOffset.get();
int outf = outOffset.get();
out[outf + 0] = (out[outf + 0] << 14) + in[inf];
out[outf + 0] = (out[outf + 0] << 10) + (in[inf + 1] >>> 4);
out[outf + 1] = (out[outf + 1] << 4) + ((in[inf + 1] << 28) >>> 28);
for (int i = 0; i < 9; i++)
out[outf + 1] = (out[outf + 1] << 3) + in[inf + 2 + i];
out[outf + 0] = code << 24 | out[outf + 0];
outOffset.add(2);
}
private void encode66(final int[] in, final IntWrapper inOffset, final int code, final int[] out,
final IntWrapper outOffset) {
int inf = inOffset.get();
int outf = outOffset.get();
out[outf + 0] = (out[outf + 0] << 14) + in[inf];
out[outf + 0] = (out[outf + 0] << 10) + (in[inf + 1] >>> 4);
out[outf + 1] = (out[outf + 1] << 4) + ((in[inf + 1] << 28) >>> 28);
for (int i = 0; i < 7; i++)
out[outf + 1] = (out[outf + 1] << 4) + in[inf + 2 + i];
out[outf + 0] = code << 24 | out[outf + 0];
outOffset.add(2);
}
private void encode67(final int[] in, final IntWrapper inOffset, final int code, final int[] out,
final IntWrapper outOffset) {
int inf = inOffset.get();
int outf = outOffset.get();
out[outf + 0] = (out[outf + 0] << 14) + in[inf];
out[outf + 0] = (out[outf + 0] << 10) + (in[inf + 1] >>> 4);
out[outf + 1] = (out[outf + 1] << 4) + ((in[inf + 1] << 28) >>> 28);
for (int i = 0; i < 5; i++)
out[outf + 1] = (out[outf + 1] << 5) + in[inf + 2 + i];
out[outf + 0] = code << 24 | out[outf + 0];
outOffset.add(2);
}
private void encode68(final int[] in, final IntWrapper inOffset, final int code, final int[] out,
final IntWrapper outOffset) {
int inf = inOffset.get();
int outf = outOffset.get();
out[outf + 0] = (out[outf + 0] << 14) + in[inf];
out[outf + 0] = (out[outf + 0] << 10) + (in[inf + 1] >>> 4);
out[outf + 1] = (out[outf + 1] << 4) + ((in[inf + 1] << 28) >>> 28);
for (int i = 0; i < 4; i++)
out[outf + 1] = (out[outf + 1] << 7) + in[inf + 2 + i];
out[outf + 0] = code << 24 | out[outf + 0];
outOffset.add(2);
}
private void encode69(final int[] in, final IntWrapper inOffset, final int code, final int[] out,
final IntWrapper outOffset) {
int inf = inOffset.get();
int outf = outOffset.get();
out[outf + 0] = (out[outf + 0] << 14) + in[inf];
out[outf + 0] = (out[outf + 0] << 10) + (in[inf + 1] >>> 4);
out[outf + 1] = (out[outf + 1] << 4) + ((in[inf + 1] << 28) >>> 28);
for (int i = 0; i < 3; i++)
out[outf + 1] = (out[outf + 1] << 9) + in[inf + 2 + i];
out[outf + 0] = code << 24 | out[outf + 0];
outOffset.add(2);
}
private void encode70(final int[] in, final IntWrapper inOffset, final int code, final int[] out,
final IntWrapper outOffset) {
int inf = inOffset.get();
int outf = outOffset.get();
out[outf + 0] = (out[outf + 0] << 14) + in[inf];
out[outf + 0] = (out[outf + 0] << 10) + (in[inf + 1] >>> 4);
out[outf + 1] = (out[outf + 1] << 4) + ((in[inf + 1] << 28) >>> 28);
for (int i = 0; i < 2; i++)
out[outf + 1] = (out[outf + 1] << 14) + in[inf + 2 + i];
out[outf + 0] = code << 24 | out[outf + 0];
outOffset.add(2);
}
private void encode71(final int[] in, final IntWrapper inOffset, final int code, final int[] out,
final IntWrapper outOffset) {
int inf = inOffset.get();
int outf = outOffset.get();
out[outf + 0] = (out[outf + 0] << 14) + in[inf];
out[outf + 0] = (out[outf + 0] << 10) + (in[inf + 1] >>> 4);
out[outf + 1] = (out[outf + 1] << 4) + ((in[inf + 1] << 28) >>> 28);
for (int i = 0; i < 1; i++)
out[outf + 1] = (out[outf + 1] << 28) + in[inf + 2 + i];
out[outf + 0] = code << 24 | out[outf + 0];
outOffset.add(2);
}
private void encode72(final int[] in, final IntWrapper inOffset, final int code, final int[] out,
final IntWrapper outOffset) {
int inf = inOffset.get();
int outf = outOffset.get();
out[outf + 0] = (out[outf + 0] << 24) + (in[inf] >>> 4);
out[outf + 1] = (out[outf + 1] << 4) + ((in[inf] << 28) >>> 28);
for (int i = 0; i < 28; i++)
out[outf + 1] = (out[outf + 1] << 1) + in[inf + 1 + i];
out[outf + 0] = code << 24 | out[outf + 0];
outOffset.add(2);
}
private void encode73(final int[] in, final IntWrapper inOffset, final int code, final int[] out,
final IntWrapper outOffset) {
int inf = inOffset.get();
int outf = outOffset.get();
out[outf + 0] = (out[outf + 0] << 24) + (in[inf] >>> 4);
out[outf + 1] = (out[outf + 1] << 4) + ((in[inf] << 28) >>> 28);
for (int i = 0; i < 14; i++)
out[outf + 1] = (out[outf + 1] << 2) + in[inf + 1 + i];
out[outf + 0] = code << 24 | out[outf + 0];
outOffset.add(2);
}
private void encode74(final int[] in, final IntWrapper inOffset, final int code, final int[] out,
final IntWrapper outOffset) {
int inf = inOffset.get();
int outf = outOffset.get();
out[outf + 0] = (out[outf + 0] << 24) + (in[inf] >>> 4);
out[outf + 1] = (out[outf + 1] << 4) + ((in[inf] << 28) >>> 28);
for (int i = 0; i < 9; i++)
out[outf + 1] = (out[outf + 1] << 3) + in[inf + 1 + i];
out[outf + 0] = code << 24 | out[outf + 0];
outOffset.add(2);
}
private void encode75(final int[] in, final IntWrapper inOffset, final int code, final int[] out,
final IntWrapper outOffset) {
int inf = inOffset.get();
int outf = outOffset.get();
out[outf + 0] = (out[outf + 0] << 24) + (in[inf] >>> 4);
out[outf + 1] = (out[outf + 1] << 4) + ((in[inf] << 28) >>> 28);
for (int i = 0; i < 7; i++)
out[outf + 1] = (out[outf + 1] << 4) + in[inf + 1 + i];
out[outf + 0] = code << 24 | out[outf + 0];
outOffset.add(2);
}
private void encode76(final int[] in, final IntWrapper inOffset, final int code, final int[] out,
final IntWrapper outOffset) {
int inf = inOffset.get();
int outf = outOffset.get();
out[outf + 0] = (out[outf + 0] << 24) + (in[inf] >>> 4);
out[outf + 1] = (out[outf + 1] << 4) + ((in[inf] << 28) >>> 28);
for (int i = 0; i < 5; i++)
out[outf + 1] = (out[outf + 1] << 5) + in[inf + 1 + i];
out[outf + 0] = code << 24 | out[outf + 0];
outOffset.add(2);
}
private void encode77(final int[] in, final IntWrapper inOffset, final int code, final int[] out,
final IntWrapper outOffset) {
int inf = inOffset.get();
int outf = outOffset.get();
out[outf + 0] = (out[outf + 0] << 24) + (in[inf] >>> 4);
out[outf + 1] = (out[outf + 1] << 4) + ((in[inf] << 28) >>> 28);
for (int i = 0; i < 4; i++)
out[outf + 1] = (out[outf + 1] << 7) + in[inf + 1 + i];
out[outf + 0] = code << 24 | out[outf + 0];
outOffset.add(2);
}
private void encode78(final int[] in, final IntWrapper inOffset, final int code, final int[] out,
final IntWrapper outOffset) {
int inf = inOffset.get();
int outf = outOffset.get();
out[outf + 0] = (out[outf + 0] << 24) + (in[inf] >>> 4);
out[outf + 1] = (out[outf + 1] << 4) + ((in[inf] << 28) >>> 28);
for (int i = 0; i < 3; i++)
out[outf + 1] = (out[outf + 1] << 9) + in[inf + 1 + i];
out[outf + 0] = code << 24 | out[outf + 0];
outOffset.add(2);
}
private void encode79(final int[] in, final IntWrapper inOffset, final int code, final int[] out,
final IntWrapper outOffset) {
int inf = inOffset.get();
int outf = outOffset.get();
out[outf + 0] = (out[outf + 0] << 24) + (in[inf] >>> 4);
out[outf + 1] = (out[outf + 1] << 4) + ((in[inf] << 28) >>> 28);
for (int i = 0; i < 2; i++)
out[outf + 1] = (out[outf + 1] << 14) + in[inf + 1 + i];
out[outf + 0] = code << 24 | out[outf + 0];
outOffset.add(2);
}
private void encode80(final int[] in, final IntWrapper inOffset, final int code, final int[] out,
final IntWrapper outOffset) {
int inf = inOffset.get();
int outf = outOffset.get();
out[outf + 0] = (out[outf + 0] << 24) + (in[inf] >>> 4);
out[outf + 1] = (out[outf + 1] << 4) + ((in[inf] << 28) >>> 28);
for (int i = 0; i < 1; i++)
out[outf + 1] = (out[outf + 1] << 28) + in[inf + 1 + i];
out[outf + 0] = code << 24 | out[outf + 0];
outOffset.add(2);
}
@Override
public void uncompress(int[] in, IntWrapper inpos, int inlength, int[] out, IntWrapper outpos) {
int currentPos = outpos.get();
int tmpinpos = inpos.get();
final int finalout = currentPos + in[tmpinpos++];
while (currentPos < finalout - 2 * 28) {
int val = in[tmpinpos++];
int valn = in[tmpinpos++];
int header = val >>> 24;
switch (header) {
case 0: {
decode0(val, valn, out, currentPos);
currentPos+=56;
break;
}
case 1: {
decode1(val, valn, out, currentPos);
currentPos+=42;
break;
}
case 2: {
decode2(val, valn, out, currentPos);
currentPos+=37;
break;
}
case 3: {
decode3(val, valn, out, currentPos);
currentPos+=35;
break;
}
case 4: {
decode4(val, valn, out, currentPos);
currentPos+=33;
break;
}
case 5: {
decode5(val, valn, out, currentPos);
currentPos+=32;
break;
}
case 6: {
decode6(val, valn, out, currentPos);
currentPos+=31;
break;
}
case 7: {
decode7(val, valn, out, currentPos);
currentPos+=30;
break;
}
case 8: {
decode8(val, valn, out, currentPos);
currentPos+=29;
break;
}
case 9: {
decode9(val, valn, out, currentPos);
currentPos+=42;
break;
}
case 10: {
decode10(val, valn, out, currentPos);
currentPos+=28;
break;
}
case 11: {
decode11(val, valn, out, currentPos);
currentPos+=23;
break;
}
case 12: {
decode12(val, valn, out, currentPos);
currentPos+=21;
break;
}
case 13: {
decode13(val, valn, out, currentPos);
currentPos+=19;
break;
}
case 14: {
decode14(val, valn, out, currentPos);
currentPos+=18;
break;
}
case 15: {
decode15(val, valn, out, currentPos);
currentPos+=17;
break;
}
case 16: {
decode16(val, valn, out, currentPos);
currentPos+=16;
break;
}
case 17: {
decode17(val, valn, out, currentPos);
currentPos+=15;
break;
}
case 18: {
decode18(val, valn, out, currentPos);
currentPos+=37;
break;
}
case 19: {
decode19(val, valn, out, currentPos);
currentPos+=23;
break;
}
case 20: {
decode20(val, valn, out, currentPos);
currentPos+=18;
break;
}
case 21: {
decode21(val, valn, out, currentPos);
currentPos+=16;
break;
}
case 22: {
decode22(val, valn, out, currentPos);
currentPos+=14;
break;
}
case 23: {
decode23(val, valn, out, currentPos);
currentPos+=13;
break;
}
case 24: {
decode24(val, valn, out, currentPos);
currentPos+=12;
break;
}
case 25: {
decode25(val, valn, out, currentPos);
currentPos+=11;
break;
}
case 26: {
decode26(val, valn, out, currentPos);
currentPos+=10;
break;
}
case 27: {
decode27(val, valn, out, currentPos);
currentPos+=35;
break;
}
case 28: {
decode28(val, valn, out, currentPos);
currentPos+=21;
break;
}
case 29: {
decode29(val, valn, out, currentPos);
currentPos+=16;
break;
}
case 30: {
decode30(val, valn, out, currentPos);
currentPos+=14;
break;
}
case 31: {
decode31(val, valn, out, currentPos);
currentPos+=12;
break;
}
case 32: {
decode32(val, valn, out, currentPos);
currentPos+=11;
break;
}
case 33: {
decode33(val, valn, out, currentPos);
currentPos+=10;
break;
}
case 34: {
decode34(val, valn, out, currentPos);
currentPos+=9;
break;
}
case 35: {
decode35(val, valn, out, currentPos);
currentPos+=8;
break;
}
case 36: {
decode36(val, valn, out, currentPos);
currentPos+=33;
break;
}
case 37: {
decode37(val, valn, out, currentPos);
currentPos+=19;
break;
}
case 38: {
decode38(val, valn, out, currentPos);
currentPos+=14;
break;
}
case 39: {
decode39(val, valn, out, currentPos);
currentPos+=12;
break;
}
case 40: {
decode40(val, valn, out, currentPos);
currentPos+=10;
break;
}
case 41: {
decode41(val, valn, out, currentPos);
currentPos+=9;
break;
}
case 42: {
decode42(val, valn, out, currentPos);
currentPos+=8;
break;
}
case 43: {
decode43(val, valn, out, currentPos);
currentPos+=7;
break;
}
case 44: {
decode44(val, valn, out, currentPos);
currentPos+=6;
break;
}
case 45: {
decode45(val, valn, out, currentPos);
currentPos+=32;
break;
}
case 46: {
decode46(val, valn, out, currentPos);
currentPos+=18;
break;
}
case 47: {
decode47(val, valn, out, currentPos);
currentPos+=13;
break;
}
case 48: {
decode48(val, valn, out, currentPos);
currentPos+=11;
break;
}
case 49: {
decode49(val, valn, out, currentPos);
currentPos+=9;
break;
}
case 50: {
decode50(val, valn, out, currentPos);
currentPos+=8;
break;
}
case 51: {
decode51(val, valn, out, currentPos);
currentPos+=7;
break;
}
case 52: {
decode52(val, valn, out, currentPos);
currentPos+=6;
break;
}
case 53: {
decode53(val, valn, out, currentPos);
currentPos+=5;
break;
}
case 54: {
decode54(val, valn, out, currentPos);
currentPos+=31;
break;
}
case 55: {
decode55(val, valn, out, currentPos);
currentPos+=17;
break;
}
case 56: {
decode56(val, valn, out, currentPos);
currentPos+=12;
break;
}
case 57: {
decode57(val, valn, out, currentPos);
currentPos+=10;
break;
}
case 58: {
decode58(val, valn, out, currentPos);
currentPos+=8;
break;
}
case 59: {
decode59(val, valn, out, currentPos);
currentPos+=7;
break;
}
case 60: {
decode60(val, valn, out, currentPos);
currentPos+=6;
break;
}
case 61: {
decode61(val, valn, out, currentPos);
currentPos+=5;
break;
}
case 62: {
decode62(val, valn, out, currentPos);
currentPos+=4;
break;
}
case 63: {
decode63(val, valn, out, currentPos);
currentPos+=30;
break;
}
case 64: {
decode64(val, valn, out, currentPos);
currentPos+=16;
break;
}
case 65: {
decode65(val, valn, out, currentPos);
currentPos+=11;
break;
}
case 66: {
decode66(val, valn, out, currentPos);
currentPos+=9;
break;
}
case 67: {
decode67(val, valn, out, currentPos);
currentPos+=7;
break;
}
case 68: {
decode68(val, valn, out, currentPos);
currentPos+=6;
break;
}
case 69: {
decode69(val, valn, out, currentPos);
currentPos+=5;
break;
}
case 70: {
decode70(val, valn, out, currentPos);
currentPos+=4;
break;
}
case 71: {
decode71(val, valn, out, currentPos);
currentPos+=3;
break;
}
case 72: {
decode72(val, valn, out, currentPos);
currentPos+=29;
break;
}
case 73: {
decode73(val, valn, out, currentPos);
currentPos+=15;
break;
}
case 74: {
decode74(val, valn, out, currentPos);
currentPos+=10;
break;
}
case 75: {
decode75(val, valn, out, currentPos);
currentPos+=8;
break;
}
case 76: {
decode76(val, valn, out, currentPos);
currentPos+=6;
break;
}
case 77: {
decode77(val, valn, out, currentPos);
currentPos+=5;
break;
}
case 78: {
decode78(val, valn, out, currentPos);
currentPos+=4;
break;
}
case 79: {
decode79(val, valn, out, currentPos);
currentPos+=3;
break;
}
case 80: {
decode80(val, valn, out, currentPos);
currentPos+=2;
break;
}
default:
throw new RuntimeException("Wrong code: " + header);
}// end switch
} // end while
while (currentPos < finalout) {
int val = in[tmpinpos++];
int header = val >>> 28;
switch (header) {
case 0: { // number : 28, bitwidth : 1
final int howmany = finalout - currentPos < 28 ? finalout - currentPos : 28;
for (int k = 0; k < howmany; ++k) {
out[currentPos++] = (val << (k + 4)) >>> 31;
}
break;
}
case 1: { // number : 14, bitwidth : 2
final int howmany = finalout - currentPos < 14 ? finalout - currentPos : 14;
for (int k = 0; k < howmany; ++k) {
out[currentPos++] = (val << (2 * k + 4)) >>> 30;
}
break;
}
case 2: { // number : 9, bitwidth : 3
final int howmany = finalout - currentPos < 9 ? finalout - currentPos : 9;
for (int k = 0; k < howmany; ++k) {
out[currentPos++] = (val << (3 * k + 5)) >>> 29;
}
break;
}
case 3: { // number : 7, bitwidth : 4
final int howmany = finalout - currentPos < 7 ? finalout - currentPos : 7;
for (int k = 0; k < howmany; ++k) {
out[currentPos++] = (val << (4 * k + 4)) >>> 28;
}
break;
}
case 4: { // number : 5, bitwidth : 5
final int howmany = finalout - currentPos < 5 ? finalout - currentPos : 5;
for (int k = 0; k < howmany; ++k) {
out[currentPos++] = (val << (5 * k + 7)) >>> 27;
}
break;
}
case 5: { // number : 4, bitwidth : 7
final int howmany = finalout - currentPos < 4 ? finalout - currentPos : 4;
for (int k = 0; k < howmany; ++k) {
out[currentPos++] = (val << (7 * k + 4)) >>> 25;
}
break;
}
case 6: { // number : 3, bitwidth : 9
final int howmany = finalout - currentPos < 3 ? finalout - currentPos : 3;
for (int k = 0; k < howmany; ++k) {
out[currentPos++] = (val << (9 * k + 5)) >>> 23;
}
break;
}
case 7: { // number : 2, bitwidth : 14
final int howmany = finalout - currentPos < 2 ? finalout - currentPos : 2;
for (int k = 0; k < howmany; ++k) {
out[currentPos++] = (val << (14 * k + 4)) >>> 18;
}
break;
}
case 8: { // number : 1, bitwidth : 28
out[currentPos++] = (val << 4) >>> 4;
break;
}
default: {
throw new RuntimeException("shouldn't happen");
}
}
}
outpos.set(finalout);
inpos.set(tmpinpos);
}
private void decode80(int val, int valn, int[] out, int currentPos) {
// number : 1, bitwidth : 28
out[currentPos++] = (val << 8) >>> 4 | (valn >>> 28);
// number : 1, bitwidth : 28
out[currentPos++] = (valn << 4) >>> 4;
}
private void decode79(int val, int valn, int[] out, int currentPos) {
// number : 1, bitwidth : 28
out[currentPos++] = (val << 8) >>> 4 | (valn >>> 28);
// number :2, bitwidth : 14
out[currentPos++] = (valn << 4) >>> 18;
out[currentPos++] = (valn << 18) >>> 18;
}
private void decode78(int val, int valn, int[] out, int currentPos) {
// number : 1, bitwidth : 28
out[currentPos++] = (val << 8) >>> 4 | (valn >>> 27);
// number : 3, bitwidth :9
out[currentPos++] = (valn << 5) >>> 23;
out[currentPos++] = (valn << 14) >>> 23;
out[currentPos++] = (valn << 23) >>> 23;
}
private void decode77(int val, int valn, int[] out, int currentPos) {
// number : 1, bitwidth : 28
out[currentPos++] = (val << 8) >>> 4 | (valn >>> 28);
// number : 4, bitwidth : 7
out[currentPos++] = (valn << 4) >>> 25;
out[currentPos++] = (valn << 11) >>> 25;
out[currentPos++] = (valn << 18) >>> 25;
out[currentPos++] = (valn << 25) >>> 25;
}
private void decode76(int val, int valn, int[] out, int currentPos) {
// number : 5, bitwidth : 5
out[currentPos++] = (val << 8) >>> 4 | (valn >>> 25);
// number : 14, bitwidth : 2
out[currentPos++] = (valn << 7) >>> 27;
out[currentPos++] = (valn << 12) >>> 27;
out[currentPos++] = (valn << 17) >>> 27;
out[currentPos++] = (valn << 22) >>> 27;
out[currentPos++] = (valn << 27) >>> 27;
}
private void decode75(int val, int valn, int[] out, int currentPos) {
// number : 1, bitwidth : 28
out[currentPos++] = (val << 8) >>> 4 | (valn >>> 28);
// number : 7, bitwidth : 4
out[currentPos++] = (valn << 4) >>> 28;
out[currentPos++] = (valn << 8) >>> 28;
out[currentPos++] = (valn << 12) >>> 28;
out[currentPos++] = (valn << 16) >>> 28;
out[currentPos++] = (valn << 20) >>> 28;
out[currentPos++] = (valn << 24) >>> 28;
out[currentPos++] = (valn << 28) >>> 28;
}
private void decode74(int val, int valn, int[] out, int currentPos) {
// number : 1, bitwidth : 28
out[currentPos++] = (val << 8) >>> 4 | (valn >>> 27);
// number : 9, bitwidth : 3
out[currentPos++] = (valn << 5) >>> 29;
out[currentPos++] = (valn << 8) >>> 29;
out[currentPos++] = (valn << 11) >>> 29;
out[currentPos++] = (valn << 14) >>> 29;
out[currentPos++] = (valn << 17) >>> 29;
out[currentPos++] = (valn << 20) >>> 29;
out[currentPos++] = (valn << 23) >>> 29;
out[currentPos++] = (valn << 26) >>> 29;
out[currentPos++] = (valn << 29) >>> 29;
}
private void decode73(int val, int valn, int[] out, int currentPos) {
// number : 1, bitwidth : 28
out[currentPos++] = (val << 8) >>> 4 | (valn >>> 28);
// number : 14, bitwidth : 2
out[currentPos++] = (valn << 4) >>> 30;
out[currentPos++] = (valn << 6) >>> 30;
out[currentPos++] = (valn << 8) >>> 30;
out[currentPos++] = (valn << 10) >>> 30;
out[currentPos++] = (valn << 12) >>> 30;
out[currentPos++] = (valn << 14) >>> 30;
out[currentPos++] = (valn << 16) >>> 30;
out[currentPos++] = (valn << 18) >>> 30;
out[currentPos++] = (valn << 20) >>> 30;
out[currentPos++] = (valn << 22) >>> 30; // 10
out[currentPos++] = (valn << 24) >>> 30;
out[currentPos++] = (valn << 26) >>> 30;
out[currentPos++] = (valn << 28) >>> 30;
out[currentPos++] = (valn << 30) >>> 30;
}
private void decode72(int val, int valn, int[] out, int currentPos) {
// number : 1, bitwidth : 28
out[currentPos++] = (val << 8) >>> 4 | (valn >>> 28);
// number : 28, bitwidth : 1
out[currentPos++] = (valn << 4) >>> 31;
out[currentPos++] = (valn << 5) >>> 31;
out[currentPos++] = (valn << 6) >>> 31;
out[currentPos++] = (valn << 7) >>> 31;
out[currentPos++] = (valn << 8) >>> 31;
out[currentPos++] = (valn << 9) >>> 31;
out[currentPos++] = (valn << 10) >>> 31;
out[currentPos++] = (valn << 11) >>> 31;
out[currentPos++] = (valn << 12) >>> 31;
out[currentPos++] = (valn << 13) >>> 31; // 10
out[currentPos++] = (valn << 14) >>> 31;
out[currentPos++] = (valn << 15) >>> 31;
out[currentPos++] = (valn << 16) >>> 31;
out[currentPos++] = (valn << 17) >>> 31;
out[currentPos++] = (valn << 18) >>> 31;
out[currentPos++] = (valn << 19) >>> 31;
out[currentPos++] = (valn << 20) >>> 31;
out[currentPos++] = (valn << 21) >>> 31;
out[currentPos++] = (valn << 22) >>> 31;
out[currentPos++] = (valn << 23) >>> 31; // 20
out[currentPos++] = (valn << 24) >>> 31;
out[currentPos++] = (valn << 25) >>> 31;
out[currentPos++] = (valn << 26) >>> 31;
out[currentPos++] = (valn << 27) >>> 31;
out[currentPos++] = (valn << 28) >>> 31;
out[currentPos++] = (valn << 29) >>> 31;
out[currentPos++] = (valn << 30) >>> 31;
out[currentPos++] = (valn << 31) >>> 31;
}
private void decode71(int val, int valn, int[] out, int currentPos) {
// number : 2, bitwidth : 14
out[currentPos++] = (val << 8) >>> 18;
out[currentPos++] = (val << 22) >>> 18 | (valn >>> 28);
// number : 1, bitwidth : 28
out[currentPos++] = (valn << 4) >>> 4;
}
private void decode70(int val, int valn, int[] out, int currentPos) {
// number : 2, bitwidth : 14
out[currentPos++] = (val << 8) >>> 18;
out[currentPos++] = (val << 22) >>> 18 | (valn >>> 28);
// number : 2, bitwidth : 14
out[currentPos++] = (valn << 4) >>> 18;
out[currentPos++] = (valn << 18) >>> 18;
}
private void decode69(int val, int valn, int[] out, int currentPos) {
// number : 2, bitwidth : 14
out[currentPos++] = (val << 8) >>> 18;
out[currentPos++] = (val << 22) >>> 18 | (valn >>> 27);
// number : 3, bitwidth : 9
out[currentPos++] = (valn << 5) >>> 23;
out[currentPos++] = (valn << 14) >>> 23;
out[currentPos++] = (valn << 23) >>> 23;
}
private void decode68(int val, int valn, int[] out, int currentPos) {
// number : 2, bitwidth : 14
out[currentPos++] = (val << 8) >>> 18;
out[currentPos++] = (val << 22) >>> 18 | (valn >>> 28);
// number : 4, bitwidth : 7
out[currentPos++] = (valn << 4) >>> 25;
out[currentPos++] = (valn << 11) >>> 25;
out[currentPos++] = (valn << 18) >>> 25;
out[currentPos++] = (valn << 25) >>> 25;
}
private void decode67(int val, int valn, int[] out, int currentPos) {
// number : 2, bitwidth : 14
out[currentPos++] = (val << 8) >>> 18;
out[currentPos++] = (val << 22) >>> 18 | (valn >>> 25);
// number : 5, bitwidth : 5
out[currentPos++] = (valn << 7) >>> 27;
out[currentPos++] = (valn << 12) >>> 27;
out[currentPos++] = (valn << 17) >>> 27;
out[currentPos++] = (valn << 22) >>> 27;
out[currentPos++] = (valn << 27) >>> 27;
}
private void decode66(int val, int valn, int[] out, int currentPos) {
// number : 2, bitwidth : 14
out[currentPos++] = (val << 8) >>> 18;
out[currentPos++] = (val << 22) >>> 18 | (valn >>> 28);
// number : 7, bitwidth : 4
out[currentPos++] = (valn << 4) >>> 28;
out[currentPos++] = (valn << 8) >>> 28;
out[currentPos++] = (valn << 12) >>> 28;
out[currentPos++] = (valn << 16) >>> 28;
out[currentPos++] = (valn << 20) >>> 28;
out[currentPos++] = (valn << 24) >>> 28;
out[currentPos++] = (valn << 28) >>> 28;
}
private void decode65(int val, int valn, int[] out, int currentPos) {
// number : 2, bitwidth : 14
out[currentPos++] = (val << 8) >>> 18;
out[currentPos++] = (val << 22) >>> 18 | (valn >>> 27);
// number : 9, bitwidth : 3
out[currentPos++] = (valn << 5) >>> 29;
out[currentPos++] = (valn << 8) >>> 29;
out[currentPos++] = (valn << 11) >>> 29;
out[currentPos++] = (valn << 14) >>> 29;
out[currentPos++] = (valn << 17) >>> 29;
out[currentPos++] = (valn << 20) >>> 29;
out[currentPos++] = (valn << 23) >>> 29;
out[currentPos++] = (valn << 26) >>> 29;
out[currentPos++] = (valn << 29) >>> 29;
}
private void decode64(int val, int valn, int[] out, int currentPos) {
// number : 2, bitwidth : 14
out[currentPos++] = (val << 8) >>> 18;
out[currentPos++] = (val << 22) >>> 18 | (valn >>> 28);
// number : 14, bitwidth : 2
out[currentPos++] = (valn << 4) >>> 30;
out[currentPos++] = (valn << 6) >>> 30;
out[currentPos++] = (valn << 8) >>> 30;
out[currentPos++] = (valn << 10) >>> 30;
out[currentPos++] = (valn << 12) >>> 30;
out[currentPos++] = (valn << 14) >>> 30;
out[currentPos++] = (valn << 16) >>> 30;
out[currentPos++] = (valn << 18) >>> 30;
out[currentPos++] = (valn << 20) >>> 30;
out[currentPos++] = (valn << 22) >>> 30; // 10
out[currentPos++] = (valn << 24) >>> 30;
out[currentPos++] = (valn << 26) >>> 30;
out[currentPos++] = (valn << 28) >>> 30;
out[currentPos++] = (valn << 30) >>> 30;
}
private void decode63(int val, int valn, int[] out, int currentPos) {
// number : 2, bitwidth : 14
out[currentPos++] = (val << 8) >>> 18;
out[currentPos++] = (val << 22) >>> 18 | (valn >>> 28);
// number : 28, bitwidth : 1
out[currentPos++] = (valn << 4) >>> 31;
out[currentPos++] = (valn << 5) >>> 31;
out[currentPos++] = (valn << 6) >>> 31;
out[currentPos++] = (valn << 7) >>> 31;
out[currentPos++] = (valn << 8) >>> 31;
out[currentPos++] = (valn << 9) >>> 31;
out[currentPos++] = (valn << 10) >>> 31;
out[currentPos++] = (valn << 11) >>> 31;
out[currentPos++] = (valn << 12) >>> 31;
out[currentPos++] = (valn << 13) >>> 31; // 10
out[currentPos++] = (valn << 14) >>> 31;
out[currentPos++] = (valn << 15) >>> 31;
out[currentPos++] = (valn << 16) >>> 31;
out[currentPos++] = (valn << 17) >>> 31;
out[currentPos++] = (valn << 18) >>> 31;
out[currentPos++] = (valn << 19) >>> 31;
out[currentPos++] = (valn << 20) >>> 31;
out[currentPos++] = (valn << 21) >>> 31;
out[currentPos++] = (valn << 22) >>> 31;
out[currentPos++] = (valn << 23) >>> 31; // 20
out[currentPos++] = (valn << 24) >>> 31;
out[currentPos++] = (valn << 25) >>> 31;
out[currentPos++] = (valn << 26) >>> 31;
out[currentPos++] = (valn << 27) >>> 31;
out[currentPos++] = (valn << 28) >>> 31;
out[currentPos++] = (valn << 29) >>> 31;
out[currentPos++] = (valn << 30) >>> 31;
out[currentPos++] = (valn << 31) >>> 31;
}
private void decode62(int val, int valn, int[] out, int currentPos) {
// number : 3, bitwidth : 9
out[currentPos++] = (val << 8) >>> 23;
out[currentPos++] = (val << 17) >>> 23;
out[currentPos++] = (val << 26) >>> 23 | (valn >>> 28);
// number : 1, bitwidth : 28
out[currentPos++] = (valn << 4) >>> 4;
}
private void decode61(int val, int valn, int[] out, int currentPos) {
// number : 3, bitwidth : 9
out[currentPos++] = (val << 8) >>> 23;
out[currentPos++] = (val << 17) >>> 23;
out[currentPos++] = (val << 26) >>> 23 | (valn >>> 28);
// number : 2, bitwidth : 14
out[currentPos++] = (valn << 4) >>> 18;
out[currentPos++] = (valn << 18) >>> 18;
}
private void decode60(int val, int valn, int[] out, int currentPos) {
// number : 3, bitwidth : 9
out[currentPos++] = (val << 8) >>> 23;
out[currentPos++] = (val << 17) >>> 23;
out[currentPos++] = (val << 26) >>> 23 | (valn >>> 27);
// number : 3, bitwidth : 9
out[currentPos++] = (valn << 5) >>> 23;
out[currentPos++] = (valn << 14) >>> 23;
out[currentPos++] = (valn << 23) >>> 23;
}
private void decode59(int val, int valn, int[] out, int currentPos) {
// number : 3, bitwidth : 9
out[currentPos++] = (val << 8) >>> 23;
out[currentPos++] = (val << 17) >>> 23;
out[currentPos++] = (val << 26) >>> 23 | (valn >>> 28);
// number : 4, bitwidth : 7
out[currentPos++] = (valn << 4) >>> 25;
out[currentPos++] = (valn << 11) >>> 25;
out[currentPos++] = (valn << 18) >>> 25;
out[currentPos++] = (valn << 25) >>> 25;
}
private void decode58(int val, int valn, int[] out, int currentPos) {
// number : 3, bitwidth : 9
out[currentPos++] = (val << 8) >>> 23;
out[currentPos++] = (val << 17) >>> 23;
out[currentPos++] = (val << 26) >>> 23 | (valn >>> 25);
// number : 5, bitwidth : 5
out[currentPos++] = (valn << 7) >>> 27;
out[currentPos++] = (valn << 12) >>> 27;
out[currentPos++] = (valn << 17) >>> 27;
out[currentPos++] = (valn << 22) >>> 27;
out[currentPos++] = (valn << 27) >>> 27;
}
private void decode57(int val, int valn, int[] out, int currentPos) {
// number : 3, bitwidth : 9
out[currentPos++] = (val << 8) >>> 23;
out[currentPos++] = (val << 17) >>> 23;
out[currentPos++] = (val << 26) >>> 23 | (valn >>> 28);
// number : 7, bitwidth : 4
out[currentPos++] = (valn << 4) >>> 28;
out[currentPos++] = (valn << 8) >>> 28;
out[currentPos++] = (valn << 12) >>> 28;
out[currentPos++] = (valn << 16) >>> 28;
out[currentPos++] = (valn << 20) >>> 28;
out[currentPos++] = (valn << 24) >>> 28;
out[currentPos++] = (valn << 28) >>> 28;
}
private void decode56(int val, int valn, int[] out, int currentPos) {
// number : 3, bitwidth : 9
out[currentPos++] = (val << 8) >>> 23;
out[currentPos++] = (val << 17) >>> 23;
out[currentPos++] = (val << 26) >>> 23 | (valn >>> 27);
// number : 9, bitwidth : 3
out[currentPos++] = (valn << 5) >>> 29;
out[currentPos++] = (valn << 8) >>> 29;
out[currentPos++] = (valn << 11) >>> 29;
out[currentPos++] = (valn << 14) >>> 29;
out[currentPos++] = (valn << 17) >>> 29;
out[currentPos++] = (valn << 20) >>> 29;
out[currentPos++] = (valn << 23) >>> 29;
out[currentPos++] = (valn << 26) >>> 29;
out[currentPos++] = (valn << 29) >>> 29;
}
private void decode55(int val, int valn, int[] out, int currentPos) {
// number : 3, bitwidth : 9
out[currentPos++] = (val << 8) >>> 23;
out[currentPos++] = (val << 17) >>> 23;
out[currentPos++] = (val << 26) >>> 23 | (valn >>> 28);
// number : 14, bitwidth : 2
out[currentPos++] = (valn << 4) >>> 30;
out[currentPos++] = (valn << 6) >>> 30;
out[currentPos++] = (valn << 8) >>> 30;
out[currentPos++] = (valn << 10) >>> 30;
out[currentPos++] = (valn << 12) >>> 30;
out[currentPos++] = (valn << 14) >>> 30;
out[currentPos++] = (valn << 16) >>> 30;
out[currentPos++] = (valn << 18) >>> 30;
out[currentPos++] = (valn << 20) >>> 30;
out[currentPos++] = (valn << 22) >>> 30; // 10
out[currentPos++] = (valn << 24) >>> 30;
out[currentPos++] = (valn << 26) >>> 30;
out[currentPos++] = (valn << 28) >>> 30;
out[currentPos++] = (valn << 30) >>> 30;
}
private void decode54(int val, int valn, int[] out, int currentPos) {
// number : 3, bitwidth : 9
out[currentPos++] = (val << 8) >>> 23;
out[currentPos++] = (val << 17) >>> 23;
out[currentPos++] = (val << 26) >>> 23 | (valn >>> 28);
// number : 28, bitwidth : 1
out[currentPos++] = (valn << 4) >>> 31;
out[currentPos++] = (valn << 5) >>> 31;
out[currentPos++] = (valn << 6) >>> 31;
out[currentPos++] = (valn << 7) >>> 31;
out[currentPos++] = (valn << 8) >>> 31;
out[currentPos++] = (valn << 9) >>> 31;
out[currentPos++] = (valn << 10) >>> 31;
out[currentPos++] = (valn << 11) >>> 31;
out[currentPos++] = (valn << 12) >>> 31;
out[currentPos++] = (valn << 13) >>> 31; // 10
out[currentPos++] = (valn << 14) >>> 31;
out[currentPos++] = (valn << 15) >>> 31;
out[currentPos++] = (valn << 16) >>> 31;
out[currentPos++] = (valn << 17) >>> 31;
out[currentPos++] = (valn << 18) >>> 31;
out[currentPos++] = (valn << 19) >>> 31;
out[currentPos++] = (valn << 20) >>> 31;
out[currentPos++] = (valn << 21) >>> 31;
out[currentPos++] = (valn << 22) >>> 31;
out[currentPos++] = (valn << 23) >>> 31; // 20
out[currentPos++] = (valn << 24) >>> 31;
out[currentPos++] = (valn << 25) >>> 31;
out[currentPos++] = (valn << 26) >>> 31;
out[currentPos++] = (valn << 27) >>> 31;
out[currentPos++] = (valn << 28) >>> 31;
out[currentPos++] = (valn << 29) >>> 31;
out[currentPos++] = (valn << 30) >>> 31;
out[currentPos++] = (valn << 31) >>> 31;
}
private void decode53(int val, int valn, int[] out, int currentPos) {
// number : 4, bitwidth : 7
out[currentPos++] = (val << 8) >>> 25;
out[currentPos++] = (val << 15) >>> 25;
out[currentPos++] = (val << 22) >>> 25;
out[currentPos++] = (val << 29) >>> 25 | (valn >>> 28);
// number : 1, bitwidth : 28
out[currentPos++] = (valn << 4) >>> 4;
}
private void decode52(int val, int valn, int[] out, int currentPos) {
// number : 4, bitwidth : 7
out[currentPos++] = (val << 8) >>> 25;
out[currentPos++] = (val << 15) >>> 25;
out[currentPos++] = (val << 22) >>> 25;
out[currentPos++] = (val << 29) >>> 25 | (valn >>> 28);
// number : 2, bitwidth : 14
out[currentPos++] = (valn << 4) >>> 18;
out[currentPos++] = (valn << 18) >>> 18;
}
private void decode51(int val, int valn, int[] out, int currentPos) {
// number : 4, bitwidth : 7
out[currentPos++] = (val << 8) >>> 25;
out[currentPos++] = (val << 15) >>> 25;
out[currentPos++] = (val << 22) >>> 25;
out[currentPos++] = (val << 29) >>> 25 | (valn >>> 27);
// number : 3, bitwidth : 9
out[currentPos++] = (valn << 5) >>> 23;
out[currentPos++] = (valn << 14) >>> 23;
out[currentPos++] = (valn << 23) >>> 23;
}
private void decode50(int val, int valn, int[] out, int currentPos) {
// number : 4, bitwidth : 7
out[currentPos++] = (val << 8) >>> 25;
out[currentPos++] = (val << 15) >>> 25;
out[currentPos++] = (val << 22) >>> 25;
out[currentPos++] = (val << 29) >>> 25 | (valn >>> 28);
// number : 4, bitwidth : 7
out[currentPos++] = (valn << 4) >>> 25;
out[currentPos++] = (valn << 11) >>> 25;
out[currentPos++] = (valn << 18) >>> 25;
out[currentPos++] = (valn << 25) >>> 25;
}
private void decode49(int val, int valn, int[] out, int currentPos) {
// number : 4, bitwidth : 7
out[currentPos++] = (val << 8) >>> 25;
out[currentPos++] = (val << 15) >>> 25;
out[currentPos++] = (val << 22) >>> 25;
out[currentPos++] = (val << 29) >>> 25 | (valn >>> 25);
// number : 5, bitwidth : 5
out[currentPos++] = (valn << 7) >>> 27;
out[currentPos++] = (valn << 12) >>> 27;
out[currentPos++] = (valn << 17) >>> 27;
out[currentPos++] = (valn << 22) >>> 27;
out[currentPos++] = (valn << 27) >>> 27;
}
private void decode48(int val, int valn, int[] out, int currentPos) {
// number : 4, bitwidth : 7
out[currentPos++] = (val << 8) >>> 25;
out[currentPos++] = (val << 15) >>> 25;
out[currentPos++] = (val << 22) >>> 25;
out[currentPos++] = (val << 29) >>> 25 | (valn >>> 28);
// number : 7, bitwidth : 4
out[currentPos++] = (valn << 4) >>> 28;
out[currentPos++] = (valn << 8) >>> 28;
out[currentPos++] = (valn << 12) >>> 28;
out[currentPos++] = (valn << 16) >>> 28;
out[currentPos++] = (valn << 20) >>> 28;
out[currentPos++] = (valn << 24) >>> 28;
out[currentPos++] = (valn << 28) >>> 28;
}
private void decode47(int val, int valn, int[] out, int currentPos) {
// number : 4, bitwidth : 7
out[currentPos++] = (val << 8) >>> 25;
out[currentPos++] = (val << 15) >>> 25;
out[currentPos++] = (val << 22) >>> 25;
out[currentPos++] = (val << 29) >>> 25 | (valn >>> 27);
// number : 9, bitwidth : 3
out[currentPos++] = (valn << 5) >>> 29;
out[currentPos++] = (valn << 8) >>> 29;
out[currentPos++] = (valn << 11) >>> 29;
out[currentPos++] = (valn << 14) >>> 29;
out[currentPos++] = (valn << 17) >>> 29;
out[currentPos++] = (valn << 20) >>> 29;
out[currentPos++] = (valn << 23) >>> 29;
out[currentPos++] = (valn << 26) >>> 29;
out[currentPos++] = (valn << 29) >>> 29;
}
private void decode46(int val, int valn, int[] out, int currentPos) {
// number : 4, bitwidth : 7
out[currentPos++] = (val << 8) >>> 25;
out[currentPos++] = (val << 15) >>> 25;
out[currentPos++] = (val << 22) >>> 25;
out[currentPos++] = (val << 29) >>> 25 | (valn >>> 28);
// number : 14, bitwidth : 2
out[currentPos++] = (valn << 4) >>> 30;
out[currentPos++] = (valn << 6) >>> 30;
out[currentPos++] = (valn << 8) >>> 30;
out[currentPos++] = (valn << 10) >>> 30;
out[currentPos++] = (valn << 12) >>> 30;
out[currentPos++] = (valn << 14) >>> 30;
out[currentPos++] = (valn << 16) >>> 30;
out[currentPos++] = (valn << 18) >>> 30;
out[currentPos++] = (valn << 20) >>> 30;
out[currentPos++] = (valn << 22) >>> 30; // 10
out[currentPos++] = (valn << 24) >>> 30;
out[currentPos++] = (valn << 26) >>> 30;
out[currentPos++] = (valn << 28) >>> 30;
out[currentPos++] = (valn << 30) >>> 30;
}
private void decode45(int val, int valn, int[] out, int currentPos) {
// number : 4, bitwidth : 7
out[currentPos++] = (val << 8) >>> 25;
out[currentPos++] = (val << 15) >>> 25;
out[currentPos++] = (val << 22) >>> 25;
out[currentPos++] = (val << 29) >>> 25 | (valn >>> 28);
// number : 28, bitwidth : 1
out[currentPos++] = (valn << 4) >>> 31;
out[currentPos++] = (valn << 5) >>> 31;
out[currentPos++] = (valn << 6) >>> 31;
out[currentPos++] = (valn << 7) >>> 31;
out[currentPos++] = (valn << 8) >>> 31;
out[currentPos++] = (valn << 9) >>> 31;
out[currentPos++] = (valn << 10) >>> 31;
out[currentPos++] = (valn << 11) >>> 31;
out[currentPos++] = (valn << 12) >>> 31;
out[currentPos++] = (valn << 13) >>> 31; // 10
out[currentPos++] = (valn << 14) >>> 31;
out[currentPos++] = (valn << 15) >>> 31;
out[currentPos++] = (valn << 16) >>> 31;
out[currentPos++] = (valn << 17) >>> 31;
out[currentPos++] = (valn << 18) >>> 31;
out[currentPos++] = (valn << 19) >>> 31;
out[currentPos++] = (valn << 20) >>> 31;
out[currentPos++] = (valn << 21) >>> 31;
out[currentPos++] = (valn << 22) >>> 31;
out[currentPos++] = (valn << 23) >>> 31; // 20
out[currentPos++] = (valn << 24) >>> 31;
out[currentPos++] = (valn << 25) >>> 31;
out[currentPos++] = (valn << 26) >>> 31;
out[currentPos++] = (valn << 27) >>> 31;
out[currentPos++] = (valn << 28) >>> 31;
out[currentPos++] = (valn << 29) >>> 31;
out[currentPos++] = (valn << 30) >>> 31;
out[currentPos++] = (valn << 31) >>> 31;
}
private void decode44(int val, int valn, int[] out, int currentPos) {
// number : 5, bitwidth : 5
out[currentPos++] = (val << 8) >>> 27;
out[currentPos++] = (val << 13) >>> 27;
out[currentPos++] = (val << 18) >>> 27;
out[currentPos++] = (val << 23) >>> 27;
out[currentPos++] = (val << 28) >>> 27 | (valn >>> 28);
// number : 1, bitwidth : 28
out[currentPos++] = (valn << 4) >>> 4;
}
private void decode43(int val, int valn, int[] out, int currentPos) {
// number : 5, bitwidth : 5
out[currentPos++] = (val << 8) >>> 27;
out[currentPos++] = (val << 13) >>> 27;
out[currentPos++] = (val << 18) >>> 27;
out[currentPos++] = (val << 23) >>> 27;
out[currentPos++] = (val << 28) >>> 27 | (valn >>> 28);
// number : 2, bitwidth : 14
out[currentPos++] = (valn << 4) >>> 18;
out[currentPos++] = (valn << 18) >>> 18;
}
private void decode42(int val, int valn, int[] out, int currentPos) {
// number : 5, bitwidth : 5
out[currentPos++] = (val << 8) >>> 27;
out[currentPos++] = (val << 13) >>> 27;
out[currentPos++] = (val << 18) >>> 27;
out[currentPos++] = (val << 23) >>> 27;
out[currentPos++] = (val << 28) >>> 27 | (valn >>> 27);
// number : 3, bitwidth : 9
out[currentPos++] = (valn << 5) >>> 23;
out[currentPos++] = (valn << 14) >>> 23;
out[currentPos++] = (valn << 23) >>> 23;
}
private void decode41(int val, int valn, int[] out, int currentPos) {
// number : 5, bitwidth : 5
out[currentPos++] = (val << 8) >>> 27;
out[currentPos++] = (val << 13) >>> 27;
out[currentPos++] = (val << 18) >>> 27;
out[currentPos++] = (val << 23) >>> 27;
out[currentPos++] = (val << 28) >>> 27 | (valn >>> 28);
// number : 4, bitwidth : 7
out[currentPos++] = (valn << 4) >>> 25;
out[currentPos++] = (valn << 11) >>> 25;
out[currentPos++] = (valn << 18) >>> 25;
out[currentPos++] = (valn << 25) >>> 25;
}
private void decode40(int val, int valn, int[] out, int currentPos) {
// number : 5, bitwidth : 5
out[currentPos++] = (val << 8) >>> 27;
out[currentPos++] = (val << 13) >>> 27;
out[currentPos++] = (val << 18) >>> 27;
out[currentPos++] = (val << 23) >>> 27;
out[currentPos++] = (val << 28) >>> 27 | (valn >>> 25);
// number : 5, bitwidth : 5
out[currentPos++] = (valn << 7) >>> 27;
out[currentPos++] = (valn << 12) >>> 27;
out[currentPos++] = (valn << 17) >>> 27;
out[currentPos++] = (valn << 22) >>> 27;
out[currentPos++] = (valn << 27) >>> 27;
}
private void decode39(int val, int valn, int[] out, int currentPos) {
// number : 5, bitwidth : 5
out[currentPos++] = (val << 8) >>> 27;
out[currentPos++] = (val << 13) >>> 27;
out[currentPos++] = (val << 18) >>> 27;
out[currentPos++] = (val << 23) >>> 27;
out[currentPos++] = (val << 28) >>> 27 | (valn >>> 28);
// number : 7, bitwidth : 4
out[currentPos++] = (valn << 4) >>> 28;
out[currentPos++] = (valn << 8) >>> 28;
out[currentPos++] = (valn << 12) >>> 28;
out[currentPos++] = (valn << 16) >>> 28;
out[currentPos++] = (valn << 20) >>> 28;
out[currentPos++] = (valn << 24) >>> 28;
out[currentPos++] = (valn << 28) >>> 28;
}
private void decode38(int val, int valn, int[] out, int currentPos) {
// number : 5, bitwidth : 5
out[currentPos++] = (val << 8) >>> 27;
out[currentPos++] = (val << 13) >>> 27;
out[currentPos++] = (val << 18) >>> 27;
out[currentPos++] = (val << 23) >>> 27;
out[currentPos++] = (val << 28) >>> 27 | (valn >>> 27);
// number : 9, bitwidth : 3
out[currentPos++] = (valn << 5) >>> 29;
out[currentPos++] = (valn << 8) >>> 29;
out[currentPos++] = (valn << 11) >>> 29;
out[currentPos++] = (valn << 14) >>> 29;
out[currentPos++] = (valn << 17) >>> 29;
out[currentPos++] = (valn << 20) >>> 29;
out[currentPos++] = (valn << 23) >>> 29;
out[currentPos++] = (valn << 26) >>> 29;
out[currentPos++] = (valn << 29) >>> 29;
}
private void decode37(int val, int valn, int[] out, int currentPos) {
// number : 5, bitwidth : 5
out[currentPos++] = (val << 8) >>> 27;
out[currentPos++] = (val << 13) >>> 27;
out[currentPos++] = (val << 18) >>> 27;
out[currentPos++] = (val << 23) >>> 27;
out[currentPos++] = (val << 28) >>> 27 | (valn >>> 28);
// number : 14, bitwidth : 2
out[currentPos++] = (valn << 4) >>> 30;
out[currentPos++] = (valn << 6) >>> 30;
out[currentPos++] = (valn << 8) >>> 30;
out[currentPos++] = (valn << 10) >>> 30;
out[currentPos++] = (valn << 12) >>> 30;
out[currentPos++] = (valn << 14) >>> 30;
out[currentPos++] = (valn << 16) >>> 30;
out[currentPos++] = (valn << 18) >>> 30;
out[currentPos++] = (valn << 20) >>> 30;
out[currentPos++] = (valn << 22) >>> 30; // 10
out[currentPos++] = (valn << 24) >>> 30;
out[currentPos++] = (valn << 26) >>> 30;
out[currentPos++] = (valn << 28) >>> 30;
out[currentPos++] = (valn << 30) >>> 30;
}
private void decode36(int val, int valn, int[] out, int currentPos) {
// number : 5, bitwidth : 5
out[currentPos++] = (val << 8) >>> 27;
out[currentPos++] = (val << 13) >>> 27;
out[currentPos++] = (val << 18) >>> 27;
out[currentPos++] = (val << 23) >>> 27;
out[currentPos++] = (val << 28) >>> 27 | (valn >>> 28);
// number : 28, bitwidth : 1
out[currentPos++] = (valn << 4) >>> 31;
out[currentPos++] = (valn << 5) >>> 31;
out[currentPos++] = (valn << 6) >>> 31;
out[currentPos++] = (valn << 7) >>> 31;
out[currentPos++] = (valn << 8) >>> 31;
out[currentPos++] = (valn << 9) >>> 31;
out[currentPos++] = (valn << 10) >>> 31;
out[currentPos++] = (valn << 11) >>> 31;
out[currentPos++] = (valn << 12) >>> 31;
out[currentPos++] = (valn << 13) >>> 31; // 10
out[currentPos++] = (valn << 14) >>> 31;
out[currentPos++] = (valn << 15) >>> 31;
out[currentPos++] = (valn << 16) >>> 31;
out[currentPos++] = (valn << 17) >>> 31;
out[currentPos++] = (valn << 18) >>> 31;
out[currentPos++] = (valn << 19) >>> 31;
out[currentPos++] = (valn << 20) >>> 31;
out[currentPos++] = (valn << 21) >>> 31;
out[currentPos++] = (valn << 22) >>> 31;
out[currentPos++] = (valn << 23) >>> 31; // 20
out[currentPos++] = (valn << 24) >>> 31;
out[currentPos++] = (valn << 25) >>> 31;
out[currentPos++] = (valn << 26) >>> 31;
out[currentPos++] = (valn << 27) >>> 31;
out[currentPos++] = (valn << 28) >>> 31;
out[currentPos++] = (valn << 29) >>> 31;
out[currentPos++] = (valn << 30) >>> 31;
out[currentPos++] = (valn << 31) >>> 31;
}
private void decode35(int val, int valn, int[] out, int currentPos) {
// number : 7, bitwidth : 4
out[currentPos++] = (val << 8) >>> 28;
out[currentPos++] = (val << 12) >>> 28;
out[currentPos++] = (val << 16) >>> 28;
out[currentPos++] = (val << 20) >>> 28;
out[currentPos++] = (val << 24) >>> 28;
out[currentPos++] = (val << 28) >>> 28;
out[currentPos++] = (valn << 0) >>> 28;
// number : 1, bitwidth : 28
out[currentPos++] = (valn << 4) >>> 4;
}
private void decode34(int val, int valn, int[] out, int currentPos) {
// number : 7, bitwidth : 4
out[currentPos++] = (val << 8) >>> 28;
out[currentPos++] = (val << 12) >>> 28;
out[currentPos++] = (val << 16) >>> 28;
out[currentPos++] = (val << 20) >>> 28;
out[currentPos++] = (val << 24) >>> 28;
out[currentPos++] = (val << 28) >>> 28;
out[currentPos++] = (valn << 0) >>> 28;
// number : 2, bitwidth : 14
out[currentPos++] = (valn << 4) >>> 18;
out[currentPos++] = (valn << 18) >>> 18;
}
private void decode33(int val, int valn, int[] out, int currentPos) {
// number : 7, bitwidth : 4
out[currentPos++] = (val << 8) >>> 28;
out[currentPos++] = (val << 12) >>> 28;
out[currentPos++] = (val << 16) >>> 28;
out[currentPos++] = (val << 20) >>> 28;
out[currentPos++] = (val << 24) >>> 28;
out[currentPos++] = (val << 28) >>> 28;
out[currentPos++] = (valn << 1) >>> 28;
// number : 3, bitwidth : 9
out[currentPos++] = (valn << 5) >>> 23;
out[currentPos++] = (valn << 14) >>> 23;
out[currentPos++] = (valn << 23) >>> 23;
}
private void decode32(int val, int valn, int[] out, int currentPos) {
// number : 7, bitwidth : 4
out[currentPos++] = (val << 8) >>> 28;
out[currentPos++] = (val << 12) >>> 28;
out[currentPos++] = (val << 16) >>> 28;
out[currentPos++] = (val << 20) >>> 28;
out[currentPos++] = (val << 24) >>> 28;
out[currentPos++] = (val << 28) >>> 28;
out[currentPos++] = (valn << 0) >>> 28;
// number : 4, bitwidth : 7
out[currentPos++] = (valn << 4) >>> 25;
out[currentPos++] = (valn << 11) >>> 25;
out[currentPos++] = (valn << 18) >>> 25;
out[currentPos++] = (valn << 25) >>> 25;
}
private void decode31(int val, int valn, int[] out, int currentPos) {
// number : 7, bitwidth : 4
out[currentPos++] = (val << 8) >>> 28;
out[currentPos++] = (val << 12) >>> 28;
out[currentPos++] = (val << 16) >>> 28;
out[currentPos++] = (val << 20) >>> 28;
out[currentPos++] = (val << 24) >>> 28;
out[currentPos++] = (val << 28) >>> 28;
out[currentPos++] = (valn << 3) >>> 28;
// number : 5, bitwidth : 5
out[currentPos++] = (valn << 7) >>> 27;
out[currentPos++] = (valn << 12) >>> 27;
out[currentPos++] = (valn << 17) >>> 27;
out[currentPos++] = (valn << 22) >>> 27;
out[currentPos++] = (valn << 27) >>> 27;
}
private void decode30(int val, int valn, int[] out, int currentPos) {
// number : 7, bitwidth : 4
out[currentPos++] = (val << 8) >>> 28;
out[currentPos++] = (val << 12) >>> 28;
out[currentPos++] = (val << 16) >>> 28;
out[currentPos++] = (val << 20) >>> 28;
out[currentPos++] = (val << 24) >>> 28;
out[currentPos++] = (val << 28) >>> 28;
out[currentPos++] = (valn << 0) >>> 28;
// number : 7, bitwidth : 4
out[currentPos++] = (valn << 4) >>> 28;
out[currentPos++] = (valn << 8) >>> 28;
out[currentPos++] = (valn << 12) >>> 28;
out[currentPos++] = (valn << 16) >>> 28;
out[currentPos++] = (valn << 20) >>> 28;
out[currentPos++] = (valn << 24) >>> 28;
out[currentPos++] = (valn << 28) >>> 28;
}
private void decode29(int val, int valn, int[] out, int currentPos) {
// number : 7, bitwidth : 4
out[currentPos++] = (val << 8) >>> 28;
out[currentPos++] = (val << 12) >>> 28;
out[currentPos++] = (val << 16) >>> 28;
out[currentPos++] = (val << 20) >>> 28;
out[currentPos++] = (val << 24) >>> 28;
out[currentPos++] = (val << 28) >>> 28;
out[currentPos++] = (valn << 1) >>> 28;
// number : 9, bitwidth : 3
out[currentPos++] = (valn << 5) >>> 29;
out[currentPos++] = (valn << 8) >>> 29;
out[currentPos++] = (valn << 11) >>> 29;
out[currentPos++] = (valn << 14) >>> 29;
out[currentPos++] = (valn << 17) >>> 29;
out[currentPos++] = (valn << 20) >>> 29;
out[currentPos++] = (valn << 23) >>> 29;
out[currentPos++] = (valn << 26) >>> 29;
out[currentPos++] = (valn << 29) >>> 29;
}
private void decode28(int val, int valn, int[] out, int currentPos) {
// number : 7, bitwidth : 4
out[currentPos++] = (val << 8) >>> 28;
out[currentPos++] = (val << 12) >>> 28;
out[currentPos++] = (val << 16) >>> 28;
out[currentPos++] = (val << 20) >>> 28;
out[currentPos++] = (val << 24) >>> 28;
out[currentPos++] = (val << 28) >>> 28;
out[currentPos++] = (valn << 0) >>> 28;
// number : 14, bitwidth : 2
out[currentPos++] = (valn << 4) >>> 30;
out[currentPos++] = (valn << 6) >>> 30;
out[currentPos++] = (valn << 8) >>> 30;
out[currentPos++] = (valn << 10) >>> 30;
out[currentPos++] = (valn << 12) >>> 30;
out[currentPos++] = (valn << 14) >>> 30;
out[currentPos++] = (valn << 16) >>> 30;
out[currentPos++] = (valn << 18) >>> 30;
out[currentPos++] = (valn << 20) >>> 30;
out[currentPos++] = (valn << 22) >>> 30; // 10
out[currentPos++] = (valn << 24) >>> 30;
out[currentPos++] = (valn << 26) >>> 30;
out[currentPos++] = (valn << 28) >>> 30;
out[currentPos++] = (valn << 30) >>> 30;
}
private void decode27(int val, int valn, int[] out, int currentPos) {
// number : 7, bitwidth : 4
out[currentPos++] = (val << 8) >>> 28;
out[currentPos++] = (val << 12) >>> 28;
out[currentPos++] = (val << 16) >>> 28;
out[currentPos++] = (val << 20) >>> 28;
out[currentPos++] = (val << 24) >>> 28;
out[currentPos++] = (val << 28) >>> 28;
out[currentPos++] = (valn << 0) >>> 28;
// number : 28, bitwidth : 1
out[currentPos++] = (valn << 4) >>> 31;
out[currentPos++] = (valn << 5) >>> 31;
out[currentPos++] = (valn << 6) >>> 31;
out[currentPos++] = (valn << 7) >>> 31;
out[currentPos++] = (valn << 8) >>> 31;
out[currentPos++] = (valn << 9) >>> 31;
out[currentPos++] = (valn << 10) >>> 31;
out[currentPos++] = (valn << 11) >>> 31;
out[currentPos++] = (valn << 12) >>> 31;
out[currentPos++] = (valn << 13) >>> 31; // 10
out[currentPos++] = (valn << 14) >>> 31;
out[currentPos++] = (valn << 15) >>> 31;
out[currentPos++] = (valn << 16) >>> 31;
out[currentPos++] = (valn << 17) >>> 31;
out[currentPos++] = (valn << 18) >>> 31;
out[currentPos++] = (valn << 19) >>> 31;
out[currentPos++] = (valn << 20) >>> 31;
out[currentPos++] = (valn << 21) >>> 31;
out[currentPos++] = (valn << 22) >>> 31;
out[currentPos++] = (valn << 23) >>> 31; // 20
out[currentPos++] = (valn << 24) >>> 31;
out[currentPos++] = (valn << 25) >>> 31;
out[currentPos++] = (valn << 26) >>> 31;
out[currentPos++] = (valn << 27) >>> 31;
out[currentPos++] = (valn << 28) >>> 31;
out[currentPos++] = (valn << 29) >>> 31;
out[currentPos++] = (valn << 30) >>> 31;
out[currentPos++] = (valn << 31) >>> 31;
}
private void decode26(int val, int valn, int[] out, int currentPos) {
// number : 9, bitwidth : 3
out[currentPos++] = (val << 8) >>> 29;
out[currentPos++] = (val << 11) >>> 29;
out[currentPos++] = (val << 14) >>> 29;
out[currentPos++] = (val << 17) >>> 29;
out[currentPos++] = (val << 20) >>> 29;
out[currentPos++] = (val << 23) >>> 29;
out[currentPos++] = (val << 26) >>> 29;
out[currentPos++] = (val << 29) >>> 29;
out[currentPos++] = (valn << 1) >>> 29;
// number : 1, bitwidth : 28
out[currentPos++] = (valn << 4) >>> 4;
}
private void decode25(int val, int valn, int[] out, int currentPos) {
// number : 9, bitwidth : 3
out[currentPos++] = (val << 8) >>> 29;
out[currentPos++] = (val << 11) >>> 29;
out[currentPos++] = (val << 14) >>> 29;
out[currentPos++] = (val << 17) >>> 29;
out[currentPos++] = (val << 20) >>> 29;
out[currentPos++] = (val << 23) >>> 29;
out[currentPos++] = (val << 26) >>> 29;
out[currentPos++] = (val << 29) >>> 29;
out[currentPos++] = (valn << 1) >>> 29;
// number : 2, bitwidth : 14
out[currentPos++] = (valn << 4) >>> 18;
out[currentPos++] = (valn << 18) >>> 18;
}
private void decode24(int val, int valn, int[] out, int currentPos) {
// number : 9, bitwidth : 3
out[currentPos++] = (val << 8) >>> 29;
out[currentPos++] = (val << 11) >>> 29;
out[currentPos++] = (val << 14) >>> 29;
out[currentPos++] = (val << 17) >>> 29;
out[currentPos++] = (val << 20) >>> 29;
out[currentPos++] = (val << 23) >>> 29;
out[currentPos++] = (val << 26) >>> 29;
out[currentPos++] = (val << 29) >>> 29;
out[currentPos++] = (valn << 2) >>> 29;
// number : 3, bitwidth : 9
out[currentPos++] = (valn << 5) >>> 23;
out[currentPos++] = (valn << 14) >>> 23;
out[currentPos++] = (valn << 23) >>> 23;
}
private void decode23(int val, int valn, int[] out, int currentPos) {
// number : 9, bitwidth : 3
out[currentPos++] = (val << 8) >>> 29;
out[currentPos++] = (val << 11) >>> 29;
out[currentPos++] = (val << 14) >>> 29;
out[currentPos++] = (val << 17) >>> 29;
out[currentPos++] = (val << 20) >>> 29;
out[currentPos++] = (val << 23) >>> 29;
out[currentPos++] = (val << 26) >>> 29;
out[currentPos++] = (val << 29) >>> 29;
out[currentPos++] = (valn << 1) >>> 29;
// number : 4, bitwidth : 7
out[currentPos++] = (valn << 4) >>> 25;
out[currentPos++] = (valn << 11) >>> 25;
out[currentPos++] = (valn << 18) >>> 25;
out[currentPos++] = (valn << 25) >>> 25;
}
private void decode22(int val, int valn, int[] out, int currentPos) {
// number : 9, bitwidth : 3
out[currentPos++] = (val << 8) >>> 29;
out[currentPos++] = (val << 11) >>> 29;
out[currentPos++] = (val << 14) >>> 29;
out[currentPos++] = (val << 17) >>> 29;
out[currentPos++] = (val << 20) >>> 29;
out[currentPos++] = (val << 23) >>> 29;
out[currentPos++] = (val << 26) >>> 29;
out[currentPos++] = (val << 29) >>> 29;
out[currentPos++] = (valn << 4) >>> 29;
// number : 5, bitwidth : 5
out[currentPos++] = (valn << 7) >>> 27;
out[currentPos++] = (valn << 12) >>> 27;
out[currentPos++] = (valn << 17) >>> 27;
out[currentPos++] = (valn << 22) >>> 27;
out[currentPos++] = (valn << 27) >>> 27;
}
private void decode21(int val, int valn, int[] out, int currentPos) {
// number : 9, bitwidth : 3
out[currentPos++] = (val << 8) >>> 29;
out[currentPos++] = (val << 11) >>> 29;
out[currentPos++] = (val << 14) >>> 29;
out[currentPos++] = (val << 17) >>> 29;
out[currentPos++] = (val << 20) >>> 29;
out[currentPos++] = (val << 23) >>> 29;
out[currentPos++] = (val << 26) >>> 29;
out[currentPos++] = (val << 29) >>> 29;
out[currentPos++] = (valn << 1) >>> 29;
// number : 7, bitwidth : 4
out[currentPos++] = (valn << 4) >>> 28;
out[currentPos++] = (valn << 8) >>> 28;
out[currentPos++] = (valn << 12) >>> 28;
out[currentPos++] = (valn << 16) >>> 28;
out[currentPos++] = (valn << 20) >>> 28;
out[currentPos++] = (valn << 24) >>> 28;
out[currentPos++] = (valn << 28) >>> 28;
}
private void decode20(int val, int valn, int[] out, int currentPos) {
// number : 9, bitwidth : 3
out[currentPos++] = (val << 8) >>> 29;
out[currentPos++] = (val << 11) >>> 29;
out[currentPos++] = (val << 14) >>> 29;
out[currentPos++] = (val << 17) >>> 29;
out[currentPos++] = (val << 20) >>> 29;
out[currentPos++] = (val << 23) >>> 29;
out[currentPos++] = (val << 26) >>> 29;
out[currentPos++] = (val << 29) >>> 29;
out[currentPos++] = (valn << 2) >>> 29;
// number : 9, bitwidth : 3
out[currentPos++] = (valn << 5) >>> 29;
out[currentPos++] = (valn << 8) >>> 29;
out[currentPos++] = (valn << 11) >>> 29;
out[currentPos++] = (valn << 14) >>> 29;
out[currentPos++] = (valn << 17) >>> 29;
out[currentPos++] = (valn << 20) >>> 29;
out[currentPos++] = (valn << 23) >>> 29;
out[currentPos++] = (valn << 26) >>> 29;
out[currentPos++] = (valn << 29) >>> 29;
}
private void decode19(int val, int valn, int[] out, int currentPos) {
// number : 9, bitwidth : 3
out[currentPos++] = (val << 8) >>> 29;
out[currentPos++] = (val << 11) >>> 29;
out[currentPos++] = (val << 14) >>> 29;
out[currentPos++] = (val << 17) >>> 29;
out[currentPos++] = (val << 20) >>> 29;
out[currentPos++] = (val << 23) >>> 29;
out[currentPos++] = (val << 26) >>> 29;
out[currentPos++] = (val << 29) >>> 29;
out[currentPos++] = (valn << 1) >>> 29;
// number : 14, bitwidth : 2
out[currentPos++] = (valn << 4) >>> 30;
out[currentPos++] = (valn << 6) >>> 30;
out[currentPos++] = (valn << 8) >>> 30;
out[currentPos++] = (valn << 10) >>> 30;
out[currentPos++] = (valn << 12) >>> 30;
out[currentPos++] = (valn << 14) >>> 30;
out[currentPos++] = (valn << 16) >>> 30;
out[currentPos++] = (valn << 18) >>> 30;
out[currentPos++] = (valn << 20) >>> 30;
out[currentPos++] = (valn << 22) >>> 30; // 10
out[currentPos++] = (valn << 24) >>> 30;
out[currentPos++] = (valn << 26) >>> 30;
out[currentPos++] = (valn << 28) >>> 30;
out[currentPos++] = (valn << 30) >>> 30;
}
private void decode18(int val, int valn, int[] out, int currentPos) {
// number : 9, bitwidth : 3
out[currentPos++] = (val << 8) >>> 29;
out[currentPos++] = (val << 11) >>> 29;
out[currentPos++] = (val << 14) >>> 29;
out[currentPos++] = (val << 17) >>> 29;
out[currentPos++] = (val << 20) >>> 29;
out[currentPos++] = (val << 23) >>> 29;
out[currentPos++] = (val << 26) >>> 29;
out[currentPos++] = (val << 29) >>> 29;
out[currentPos++] = (valn << 1) >>> 29;
// number : 28, bitwidth : 1
out[currentPos++] = (valn << 4) >>> 31;
out[currentPos++] = (valn << 5) >>> 31;
out[currentPos++] = (valn << 6) >>> 31;
out[currentPos++] = (valn << 7) >>> 31;
out[currentPos++] = (valn << 8) >>> 31;
out[currentPos++] = (valn << 9) >>> 31;
out[currentPos++] = (valn << 10) >>> 31;
out[currentPos++] = (valn << 11) >>> 31;
out[currentPos++] = (valn << 12) >>> 31;
out[currentPos++] = (valn << 13) >>> 31; // 10
out[currentPos++] = (valn << 14) >>> 31;
out[currentPos++] = (valn << 15) >>> 31;
out[currentPos++] = (valn << 16) >>> 31;
out[currentPos++] = (valn << 17) >>> 31;
out[currentPos++] = (valn << 18) >>> 31;
out[currentPos++] = (valn << 19) >>> 31;
out[currentPos++] = (valn << 20) >>> 31;
out[currentPos++] = (valn << 21) >>> 31;
out[currentPos++] = (valn << 22) >>> 31;
out[currentPos++] = (valn << 23) >>> 31; // 20
out[currentPos++] = (valn << 24) >>> 31;
out[currentPos++] = (valn << 25) >>> 31;
out[currentPos++] = (valn << 26) >>> 31;
out[currentPos++] = (valn << 27) >>> 31;
out[currentPos++] = (valn << 28) >>> 31;
out[currentPos++] = (valn << 29) >>> 31;
out[currentPos++] = (valn << 30) >>> 31;
out[currentPos++] = (valn << 31) >>> 31;
}
private void decode17(int val, int valn, int[] out, int currentPos) {
// number : 14, bitwidth : 2
out[currentPos++] = (val << 8) >>> 30;
out[currentPos++] = (val << 10) >>> 30;
out[currentPos++] = (val << 12) >>> 30;
out[currentPos++] = (val << 14) >>> 30;
out[currentPos++] = (val << 16) >>> 30;
out[currentPos++] = (val << 18) >>> 30;
out[currentPos++] = (val << 20) >>> 30;
out[currentPos++] = (val << 22) >>> 30; // 10
out[currentPos++] = (val << 24) >>> 30;
out[currentPos++] = (val << 26) >>> 30;
out[currentPos++] = (val << 28) >>> 30;
out[currentPos++] = (val << 30) >>> 30;
out[currentPos++] = (valn << 0) >>> 30;
out[currentPos++] = (valn << 2) >>> 30;
// number : 1, bitwidth : 28
out[currentPos++] = (valn << 4) >>> 4;
}
private void decode16(int val, int valn, int[] out, int currentPos) {
// number : 14, bitwidth : 2
out[currentPos++] = (val << 8) >>> 30;
out[currentPos++] = (val << 10) >>> 30;
out[currentPos++] = (val << 12) >>> 30;
out[currentPos++] = (val << 14) >>> 30;
out[currentPos++] = (val << 16) >>> 30;
out[currentPos++] = (val << 18) >>> 30;
out[currentPos++] = (val << 20) >>> 30;
out[currentPos++] = (val << 22) >>> 30; // 10
out[currentPos++] = (val << 24) >>> 30;
out[currentPos++] = (val << 26) >>> 30;
out[currentPos++] = (val << 28) >>> 30;
out[currentPos++] = (val << 30) >>> 30;
out[currentPos++] = (valn << 0) >>> 30;
out[currentPos++] = (valn << 2) >>> 30;
// number : 2, bitwidth : 14
out[currentPos++] = (valn << 4) >>> 18;
out[currentPos++] = (valn << 18) >>> 18;
}
private void decode15(int val, int valn, int[] out, int currentPos) {
// number : 14, bitwidth : 2
out[currentPos++] = (val << 8) >>> 30;
out[currentPos++] = (val << 10) >>> 30;
out[currentPos++] = (val << 12) >>> 30;
out[currentPos++] = (val << 14) >>> 30;
out[currentPos++] = (val << 16) >>> 30;
out[currentPos++] = (val << 18) >>> 30;
out[currentPos++] = (val << 20) >>> 30;
out[currentPos++] = (val << 22) >>> 30; // 10
out[currentPos++] = (val << 24) >>> 30;
out[currentPos++] = (val << 26) >>> 30;
out[currentPos++] = (val << 28) >>> 30;
out[currentPos++] = (val << 30) >>> 30;
out[currentPos++] = (valn << 1) >>> 30;
out[currentPos++] = (valn << 3) >>> 30;
// number : 3, bitwidth : 9
out[currentPos++] = (valn << 5) >>> 23;
out[currentPos++] = (valn << 14) >>> 23;
out[currentPos++] = (valn << 23) >>> 23;
}
private void decode14(int val, int valn, int[] out, int currentPos) {
// number : 14, bitwidth : 2
out[currentPos++] = (val << 8) >>> 30;
out[currentPos++] = (val << 10) >>> 30;
out[currentPos++] = (val << 12) >>> 30;
out[currentPos++] = (val << 14) >>> 30;
out[currentPos++] = (val << 16) >>> 30;
out[currentPos++] = (val << 18) >>> 30;
out[currentPos++] = (val << 20) >>> 30;
out[currentPos++] = (val << 22) >>> 30; // 10
out[currentPos++] = (val << 24) >>> 30;
out[currentPos++] = (val << 26) >>> 30;
out[currentPos++] = (val << 28) >>> 30;
out[currentPos++] = (val << 30) >>> 30;
out[currentPos++] = (valn << 0) >>> 30;
out[currentPos++] = (valn << 2) >>> 30;
// number : 4, bitwidth : 7
out[currentPos++] = (valn << 4) >>> 25;
out[currentPos++] = (valn << 11) >>> 25;
out[currentPos++] = (valn << 18) >>> 25;
out[currentPos++] = (valn << 25) >>> 25;
}
private void decode13(int val, int valn, int[] out, int currentPos) {
// number : 14, bitwidth : 2
out[currentPos++] = (val << 8) >>> 30;
out[currentPos++] = (val << 10) >>> 30;
out[currentPos++] = (val << 12) >>> 30;
out[currentPos++] = (val << 14) >>> 30;
out[currentPos++] = (val << 16) >>> 30;
out[currentPos++] = (val << 18) >>> 30;
out[currentPos++] = (val << 20) >>> 30;
out[currentPos++] = (val << 22) >>> 30; // 10
out[currentPos++] = (val << 24) >>> 30;
out[currentPos++] = (val << 26) >>> 30;
out[currentPos++] = (val << 28) >>> 30;
out[currentPos++] = (val << 30) >>> 30;
out[currentPos++] = (valn << 3) >>> 30;
out[currentPos++] = (valn << 5) >>> 30;
// number : 5, bitwidth : 5
out[currentPos++] = (valn << 7) >>> 27;
out[currentPos++] = (valn << 12) >>> 27;
out[currentPos++] = (valn << 17) >>> 27;
out[currentPos++] = (valn << 22) >>> 27;
out[currentPos++] = (valn << 27) >>> 27;
}
private void decode12(int val, int valn, int[] out, int currentPos) {
// number : 14, bitwidth : 2
out[currentPos++] = (val << 8) >>> 30;
out[currentPos++] = (val << 10) >>> 30;
out[currentPos++] = (val << 12) >>> 30;
out[currentPos++] = (val << 14) >>> 30;
out[currentPos++] = (val << 16) >>> 30;
out[currentPos++] = (val << 18) >>> 30;
out[currentPos++] = (val << 20) >>> 30;
out[currentPos++] = (val << 22) >>> 30; // 10
out[currentPos++] = (val << 24) >>> 30;
out[currentPos++] = (val << 26) >>> 30;
out[currentPos++] = (val << 28) >>> 30;
out[currentPos++] = (val << 30) >>> 30;
out[currentPos++] = (valn << 0) >>> 30;
out[currentPos++] = (valn << 2) >>> 30;
// number : 7, bitwidth : 4
out[currentPos++] = (valn << 4) >>> 28;
out[currentPos++] = (valn << 8) >>> 28;
out[currentPos++] = (valn << 12) >>> 28;
out[currentPos++] = (valn << 16) >>> 28;
out[currentPos++] = (valn << 20) >>> 28;
out[currentPos++] = (valn << 24) >>> 28;
out[currentPos++] = (valn << 28) >>> 28;
}
private void decode11(int val, int valn, int[] out, int currentPos) {
// number : 14, bitwidth : 2
out[currentPos++] = (val << 8) >>> 30;
out[currentPos++] = (val << 10) >>> 30;
out[currentPos++] = (val << 12) >>> 30;
out[currentPos++] = (val << 14) >>> 30;
out[currentPos++] = (val << 16) >>> 30;
out[currentPos++] = (val << 18) >>> 30;
out[currentPos++] = (val << 20) >>> 30;
out[currentPos++] = (val << 22) >>> 30; // 10
out[currentPos++] = (val << 24) >>> 30;
out[currentPos++] = (val << 26) >>> 30;
out[currentPos++] = (val << 28) >>> 30;
out[currentPos++] = (val << 30) >>> 30;
out[currentPos++] = (valn << 1) >>> 30;
out[currentPos++] = (valn << 3) >>> 30;
// number : 9, bitwidth : 3
out[currentPos++] = (valn << 5) >>> 29;
out[currentPos++] = (valn << 8) >>> 29;
out[currentPos++] = (valn << 11) >>> 29;
out[currentPos++] = (valn << 14) >>> 29;
out[currentPos++] = (valn << 17) >>> 29;
out[currentPos++] = (valn << 20) >>> 29;
out[currentPos++] = (valn << 23) >>> 29;
out[currentPos++] = (valn << 26) >>> 29;
out[currentPos++] = (valn << 29) >>> 29;
}
private void decode10(int val, int valn, int[] out, int currentPos) {
// number : 14, bitwidth : 2
out[currentPos++] = (val << 8) >>> 30;
out[currentPos++] = (val << 10) >>> 30;
out[currentPos++] = (val << 12) >>> 30;
out[currentPos++] = (val << 14) >>> 30;
out[currentPos++] = (val << 16) >>> 30;
out[currentPos++] = (val << 18) >>> 30;
out[currentPos++] = (val << 20) >>> 30;
out[currentPos++] = (val << 22) >>> 30; // 10
out[currentPos++] = (val << 24) >>> 30;
out[currentPos++] = (val << 26) >>> 30;
out[currentPos++] = (val << 28) >>> 30;
out[currentPos++] = (val << 30) >>> 30;
out[currentPos++] = (valn << 0) >>> 30;
out[currentPos++] = (valn << 2) >>> 30;
// number : 14, bitwidth : 2
out[currentPos++] = (valn << 4) >>> 30;
out[currentPos++] = (valn << 6) >>> 30;
out[currentPos++] = (valn << 8) >>> 30;
out[currentPos++] = (valn << 10) >>> 30;
out[currentPos++] = (valn << 12) >>> 30;
out[currentPos++] = (valn << 14) >>> 30;
out[currentPos++] = (valn << 16) >>> 30;
out[currentPos++] = (valn << 18) >>> 30;
out[currentPos++] = (valn << 20) >>> 30;
out[currentPos++] = (valn << 22) >>> 30; // 10
out[currentPos++] = (valn << 24) >>> 30;
out[currentPos++] = (valn << 26) >>> 30;
out[currentPos++] = (valn << 28) >>> 30;
out[currentPos++] = (valn << 30) >>> 30;
}
private void decode9(int val, int valn, int[] out, int currentPos) {
// number : 14, bitwidth : 2
out[currentPos++] = (val << 8) >>> 30;
out[currentPos++] = (val << 10) >>> 30;
out[currentPos++] = (val << 12) >>> 30;
out[currentPos++] = (val << 14) >>> 30;
out[currentPos++] = (val << 16) >>> 30;
out[currentPos++] = (val << 18) >>> 30;
out[currentPos++] = (val << 20) >>> 30;
out[currentPos++] = (val << 22) >>> 30; // 10
out[currentPos++] = (val << 24) >>> 30;
out[currentPos++] = (val << 26) >>> 30;
out[currentPos++] = (val << 28) >>> 30;
out[currentPos++] = (val << 30) >>> 30;
out[currentPos++] = (valn << 0) >>> 30;
out[currentPos++] = (valn << 2) >>> 30;
// number : 28, bitwidth : 1
out[currentPos++] = (valn << 4) >>> 31;
out[currentPos++] = (valn << 5) >>> 31;
out[currentPos++] = (valn << 6) >>> 31;
out[currentPos++] = (valn << 7) >>> 31;
out[currentPos++] = (valn << 8) >>> 31;
out[currentPos++] = (valn << 9) >>> 31;
out[currentPos++] = (valn << 10) >>> 31;
out[currentPos++] = (valn << 11) >>> 31;
out[currentPos++] = (valn << 12) >>> 31;
out[currentPos++] = (valn << 13) >>> 31; // 10
out[currentPos++] = (valn << 14) >>> 31;
out[currentPos++] = (valn << 15) >>> 31;
out[currentPos++] = (valn << 16) >>> 31;
out[currentPos++] = (valn << 17) >>> 31;
out[currentPos++] = (valn << 18) >>> 31;
out[currentPos++] = (valn << 19) >>> 31;
out[currentPos++] = (valn << 20) >>> 31;
out[currentPos++] = (valn << 21) >>> 31;
out[currentPos++] = (valn << 22) >>> 31;
out[currentPos++] = (valn << 23) >>> 31; // 20
out[currentPos++] = (valn << 24) >>> 31;
out[currentPos++] = (valn << 25) >>> 31;
out[currentPos++] = (valn << 26) >>> 31;
out[currentPos++] = (valn << 27) >>> 31;
out[currentPos++] = (valn << 28) >>> 31;
out[currentPos++] = (valn << 29) >>> 31;
out[currentPos++] = (valn << 30) >>> 31;
out[currentPos++] = (valn << 31) >>> 31;
}
private void decode8(int val, int valn, int[] out, int currentPos) {
// number : 28, bitwidth : 1
out[currentPos++] = (val << 8) >>> 31;
out[currentPos++] = (val << 9) >>> 31;
out[currentPos++] = (val << 10) >>> 31;
out[currentPos++] = (val << 11) >>> 31;
out[currentPos++] = (val << 12) >>> 31;
out[currentPos++] = (val << 13) >>> 31; // 10
out[currentPos++] = (val << 14) >>> 31;
out[currentPos++] = (val << 15) >>> 31;
out[currentPos++] = (val << 16) >>> 31;
out[currentPos++] = (val << 17) >>> 31;
out[currentPos++] = (val << 18) >>> 31;
out[currentPos++] = (val << 19) >>> 31;
out[currentPos++] = (val << 20) >>> 31;
out[currentPos++] = (val << 21) >>> 31;
out[currentPos++] = (val << 22) >>> 31;
out[currentPos++] = (val << 23) >>> 31; // 20
out[currentPos++] = (val << 24) >>> 31;
out[currentPos++] = (val << 25) >>> 31;
out[currentPos++] = (val << 26) >>> 31;
out[currentPos++] = (val << 27) >>> 31;
out[currentPos++] = (val << 28) >>> 31;
out[currentPos++] = (val << 29) >>> 31;
out[currentPos++] = (val << 30) >>> 31;
out[currentPos++] = (val << 31) >>> 31;
out[currentPos++] = valn >>> 31;
out[currentPos++] = (valn << 1) >>> 31;
out[currentPos++] = (valn << 2) >>> 31;
out[currentPos++] = (valn << 3) >>> 31;
// number : 1, bitwidth : 28
out[currentPos++] = (valn << 4) >>> 4;
}
private void decode7(int val, int valn, int[] out, int currentPos) {
// number : 28, bitwidth : 1
out[currentPos++] = (val << 8) >>> 31;
out[currentPos++] = (val << 9) >>> 31;
out[currentPos++] = (val << 10) >>> 31;
out[currentPos++] = (val << 11) >>> 31;
out[currentPos++] = (val << 12) >>> 31;
out[currentPos++] = (val << 13) >>> 31; // 10
out[currentPos++] = (val << 14) >>> 31;
out[currentPos++] = (val << 15) >>> 31;
out[currentPos++] = (val << 16) >>> 31;
out[currentPos++] = (val << 17) >>> 31;
out[currentPos++] = (val << 18) >>> 31;
out[currentPos++] = (val << 19) >>> 31;
out[currentPos++] = (val << 20) >>> 31;
out[currentPos++] = (val << 21) >>> 31;
out[currentPos++] = (val << 22) >>> 31;
out[currentPos++] = (val << 23) >>> 31; // 20
out[currentPos++] = (val << 24) >>> 31;
out[currentPos++] = (val << 25) >>> 31;
out[currentPos++] = (val << 26) >>> 31;
out[currentPos++] = (val << 27) >>> 31;
out[currentPos++] = (val << 28) >>> 31;
out[currentPos++] = (val << 29) >>> 31;
out[currentPos++] = (val << 30) >>> 31;
out[currentPos++] = (val << 31) >>> 31;
out[currentPos++] = valn >>> 31;
out[currentPos++] = (valn << 1) >>> 31;
out[currentPos++] = (valn << 2) >>> 31;
out[currentPos++] = (valn << 3) >>> 31;
// number : 2, bitwidth : 14
out[currentPos++] = (valn << 4) >>> 18;
out[currentPos++] = (valn << 18) >>> 18;
}
private void decode6(int val, int valn, int[] out, int currentPos) {
// number : 28, bitwidth : 1
out[currentPos++] = (val << 8) >>> 31;
out[currentPos++] = (val << 9) >>> 31;
out[currentPos++] = (val << 10) >>> 31;
out[currentPos++] = (val << 11) >>> 31;
out[currentPos++] = (val << 12) >>> 31;
out[currentPos++] = (val << 13) >>> 31; // 10
out[currentPos++] = (val << 14) >>> 31;
out[currentPos++] = (val << 15) >>> 31;
out[currentPos++] = (val << 16) >>> 31;
out[currentPos++] = (val << 17) >>> 31;
out[currentPos++] = (val << 18) >>> 31;
out[currentPos++] = (val << 19) >>> 31;
out[currentPos++] = (val << 20) >>> 31;
out[currentPos++] = (val << 21) >>> 31;
out[currentPos++] = (val << 22) >>> 31;
out[currentPos++] = (val << 23) >>> 31; // 20
out[currentPos++] = (val << 24) >>> 31;
out[currentPos++] = (val << 25) >>> 31;
out[currentPos++] = (val << 26) >>> 31;
out[currentPos++] = (val << 27) >>> 31;
out[currentPos++] = (val << 28) >>> 31;
out[currentPos++] = (val << 29) >>> 31;
out[currentPos++] = (val << 30) >>> 31;
out[currentPos++] = (val << 31) >>> 31;
out[currentPos++] = (valn << 1) >>> 31;
out[currentPos++] = (valn << 2) >>> 31;
out[currentPos++] = (valn << 3) >>> 31;
out[currentPos++] = (valn << 4) >>> 31;
// number : 3, bitwidth : 9
out[currentPos++] = (valn << 5) >>> 23;
out[currentPos++] = (valn << 14) >>> 23;
out[currentPos++] = (valn << 23) >>> 23;
}
private void decode5(int val, int valn, int[] out, int currentPos) {
// number : 28, bitwidth : 1
out[currentPos++] = (val << 8) >>> 31;
out[currentPos++] = (val << 9) >>> 31;
out[currentPos++] = (val << 10) >>> 31;
out[currentPos++] = (val << 11) >>> 31;
out[currentPos++] = (val << 12) >>> 31;
out[currentPos++] = (val << 13) >>> 31; // 10
out[currentPos++] = (val << 14) >>> 31;
out[currentPos++] = (val << 15) >>> 31;
out[currentPos++] = (val << 16) >>> 31;
out[currentPos++] = (val << 17) >>> 31;
out[currentPos++] = (val << 18) >>> 31;
out[currentPos++] = (val << 19) >>> 31;
out[currentPos++] = (val << 20) >>> 31;
out[currentPos++] = (val << 21) >>> 31;
out[currentPos++] = (val << 22) >>> 31;
out[currentPos++] = (val << 23) >>> 31; // 20
out[currentPos++] = (val << 24) >>> 31;
out[currentPos++] = (val << 25) >>> 31;
out[currentPos++] = (val << 26) >>> 31;
out[currentPos++] = (val << 27) >>> 31;
out[currentPos++] = (val << 28) >>> 31;
out[currentPos++] = (val << 29) >>> 31;
out[currentPos++] = (val << 30) >>> 31;
out[currentPos++] = (val << 31) >>> 31;
out[currentPos++] = valn >>> 31;
out[currentPos++] = (valn << 1) >>> 31;
out[currentPos++] = (valn << 2) >>> 31;
out[currentPos++] = (valn << 3) >>> 31;
// number : 4, bitwidth : 7
out[currentPos++] = (valn << 4) >>> 25;
out[currentPos++] = (valn << 11) >>> 25;
out[currentPos++] = (valn << 18) >>> 25;
out[currentPos++] = (valn << 25) >>> 25;
}
private void decode4(int val, int valn, int[] out, int currentPos) {
// number : 28, bitwidth : 1
out[currentPos++] = (val << 8) >>> 31;
out[currentPos++] = (val << 9) >>> 31;
out[currentPos++] = (val << 10) >>> 31;
out[currentPos++] = (val << 11) >>> 31;
out[currentPos++] = (val << 12) >>> 31;
out[currentPos++] = (val << 13) >>> 31; // 10
out[currentPos++] = (val << 14) >>> 31;
out[currentPos++] = (val << 15) >>> 31;
out[currentPos++] = (val << 16) >>> 31;
out[currentPos++] = (val << 17) >>> 31;
out[currentPos++] = (val << 18) >>> 31;
out[currentPos++] = (val << 19) >>> 31;
out[currentPos++] = (val << 20) >>> 31;
out[currentPos++] = (val << 21) >>> 31;
out[currentPos++] = (val << 22) >>> 31;
out[currentPos++] = (val << 23) >>> 31; // 20
out[currentPos++] = (val << 24) >>> 31;
out[currentPos++] = (val << 25) >>> 31;
out[currentPos++] = (val << 26) >>> 31;
out[currentPos++] = (val << 27) >>> 31;
out[currentPos++] = (val << 28) >>> 31;
out[currentPos++] = (val << 29) >>> 31;
out[currentPos++] = (val << 30) >>> 31;
out[currentPos++] = (val << 31) >>> 31;
out[currentPos++] = (valn << 3) >>> 31;// 头部3bit
out[currentPos++] = (valn << 4) >>> 31;
out[currentPos++] = (valn << 5) >>> 31;
out[currentPos++] = (valn << 6) >>> 31;
// number : 5, bitwidth : 5
out[currentPos++] = (valn << 7) >>> 27;
out[currentPos++] = (valn << 12) >>> 27;
out[currentPos++] = (valn << 17) >>> 27;
out[currentPos++] = (valn << 22) >>> 27;
out[currentPos++] = (valn << 27) >>> 27;
}
private void decode3(int val, int valn, int[] out, int currentPos) {
// number : 28, bitwidth : 1
out[currentPos++] = (val << 8) >>> 31;
out[currentPos++] = (val << 9) >>> 31;
out[currentPos++] = (val << 10) >>> 31;
out[currentPos++] = (val << 11) >>> 31;
out[currentPos++] = (val << 12) >>> 31;
out[currentPos++] = (val << 13) >>> 31; // 10
out[currentPos++] = (val << 14) >>> 31;
out[currentPos++] = (val << 15) >>> 31;
out[currentPos++] = (val << 16) >>> 31;
out[currentPos++] = (val << 17) >>> 31;
out[currentPos++] = (val << 18) >>> 31;
out[currentPos++] = (val << 19) >>> 31;
out[currentPos++] = (val << 20) >>> 31;
out[currentPos++] = (val << 21) >>> 31;
out[currentPos++] = (val << 22) >>> 31;
out[currentPos++] = (val << 23) >>> 31; // 20
out[currentPos++] = (val << 24) >>> 31;
out[currentPos++] = (val << 25) >>> 31;
out[currentPos++] = (val << 26) >>> 31;
out[currentPos++] = (val << 27) >>> 31;
out[currentPos++] = (val << 28) >>> 31;
out[currentPos++] = (val << 29) >>> 31;
out[currentPos++] = (val << 30) >>> 31;
out[currentPos++] = (val << 31) >>> 31;
out[currentPos++] = valn >>> 31;
out[currentPos++] = (valn << 1) >>> 31;
out[currentPos++] = (valn << 2) >>> 31;
out[currentPos++] = (valn << 3) >>> 31;
// number : 7, bitwidth : 4
out[currentPos++] = (valn << 4) >>> 28;
out[currentPos++] = (valn << 8) >>> 28;
out[currentPos++] = (valn << 12) >>> 28;
out[currentPos++] = (valn << 16) >>> 28;
out[currentPos++] = (valn << 20) >>> 28;
out[currentPos++] = (valn << 24) >>> 28;
out[currentPos++] = (valn << 28) >>> 28;
}
private void decode2(int val, int valn, int[] out, int currentPos) {
// number : 28, bitwidth : 1
out[currentPos++] = (val << 8) >>> 31;
out[currentPos++] = (val << 9) >>> 31;
out[currentPos++] = (val << 10) >>> 31;
out[currentPos++] = (val << 11) >>> 31;
out[currentPos++] = (val << 12) >>> 31;
out[currentPos++] = (val << 13) >>> 31; // 10
out[currentPos++] = (val << 14) >>> 31;
out[currentPos++] = (val << 15) >>> 31;
out[currentPos++] = (val << 16) >>> 31;
out[currentPos++] = (val << 17) >>> 31;
out[currentPos++] = (val << 18) >>> 31;
out[currentPos++] = (val << 19) >>> 31;
out[currentPos++] = (val << 20) >>> 31;
out[currentPos++] = (val << 21) >>> 31;
out[currentPos++] = (val << 22) >>> 31;
out[currentPos++] = (val << 23) >>> 31; // 20
out[currentPos++] = (val << 24) >>> 31;
out[currentPos++] = (val << 25) >>> 31;
out[currentPos++] = (val << 26) >>> 31;
out[currentPos++] = (val << 27) >>> 31;
out[currentPos++] = (val << 28) >>> 31;
out[currentPos++] = (val << 29) >>> 31;
out[currentPos++] = (val << 30) >>> 31;
out[currentPos++] = (val << 31) >>> 31;
out[currentPos++] = (valn << 1) >>> 31;// 头部1bit
out[currentPos++] = (valn << 2) >>> 31;
out[currentPos++] = (valn << 3) >>> 31;
out[currentPos++] = (valn << 4) >>> 31;
// number : 9, bitwidth : 3
out[currentPos++] = (valn << 5) >>> 29;
out[currentPos++] = (valn << 8) >>> 29;
out[currentPos++] = (valn << 11) >>> 29;
out[currentPos++] = (valn << 14) >>> 29;
out[currentPos++] = (valn << 17) >>> 29;
out[currentPos++] = (valn << 20) >>> 29;
out[currentPos++] = (valn << 23) >>> 29;
out[currentPos++] = (valn << 26) >>> 29;
out[currentPos++] = (valn << 29) >>> 29;
}
private void decode1(int val, int valn, int[] out, int currentPos) {
// number : 28, bitwidth : 1
out[currentPos++] = (val << 8) >>> 31;
out[currentPos++] = (val << 9) >>> 31;
out[currentPos++] = (val << 10) >>> 31;
out[currentPos++] = (val << 11) >>> 31;
out[currentPos++] = (val << 12) >>> 31;
out[currentPos++] = (val << 13) >>> 31; // 10
out[currentPos++] = (val << 14) >>> 31;
out[currentPos++] = (val << 15) >>> 31;
out[currentPos++] = (val << 16) >>> 31;
out[currentPos++] = (val << 17) >>> 31;
out[currentPos++] = (val << 18) >>> 31;
out[currentPos++] = (val << 19) >>> 31;
out[currentPos++] = (val << 20) >>> 31;
out[currentPos++] = (val << 21) >>> 31;
out[currentPos++] = (val << 22) >>> 31;
out[currentPos++] = (val << 23) >>> 31;// 20
out[currentPos++] = (val << 24) >>> 31;
out[currentPos++] = (val << 25) >>> 31;
out[currentPos++] = (val << 26) >>> 31;
out[currentPos++] = (val << 27) >>> 31;
out[currentPos++] = (val << 28) >>> 31;
out[currentPos++] = (val << 29) >>> 31;
out[currentPos++] = (val << 30) >>> 31;
out[currentPos++] = (val << 31) >>> 31;
out[currentPos++] = valn >>> 31;
out[currentPos++] = (valn << 1) >>> 31;
out[currentPos++] = (valn << 2) >>> 31;
out[currentPos++] = (valn << 3) >>> 31;
// number : 14, bitwidth : 2
out[currentPos++] = (valn << 4) >>> 30;
out[currentPos++] = (valn << 6) >>> 30;
out[currentPos++] = (valn << 8) >>> 30;
out[currentPos++] = (valn << 10) >>> 30;
out[currentPos++] = (valn << 12) >>> 30;
out[currentPos++] = (valn << 14) >>> 30;
out[currentPos++] = (valn << 16) >>> 30;
out[currentPos++] = (valn << 18) >>> 30;
out[currentPos++] = (valn << 20) >>> 30;
out[currentPos++] = (valn << 22) >>> 30; // 10
out[currentPos++] = (valn << 24) >>> 30;
out[currentPos++] = (valn << 26) >>> 30;
out[currentPos++] = (valn << 28) >>> 30;
out[currentPos++] = (valn << 30) >>> 30;
}
private void decode0(int val, int valn, int[] out, int currentPos) {
// number : 28, bitwidth : 1
out[currentPos++] = (val << 8) >>> 31;
out[currentPos++] = (val << 9) >>> 31;
out[currentPos++] = (val << 10) >>> 31;
out[currentPos++] = (val << 11) >>> 31;
out[currentPos++] = (val << 12) >>> 31;
out[currentPos++] = (val << 13) >>> 31; // 10
out[currentPos++] = (val << 14) >>> 31;
out[currentPos++] = (val << 15) >>> 31;
out[currentPos++] = (val << 16) >>> 31;
out[currentPos++] = (val << 17) >>> 31;
out[currentPos++] = (val << 18) >>> 31;
out[currentPos++] = (val << 19) >>> 31;
out[currentPos++] = (val << 20) >>> 31;
out[currentPos++] = (val << 21) >>> 31;
out[currentPos++] = (val << 22) >>> 31;
out[currentPos++] = (val << 23) >>> 31; // 20
out[currentPos++] = (val << 24) >>> 31;
out[currentPos++] = (val << 25) >>> 31;
out[currentPos++] = (val << 26) >>> 31;
out[currentPos++] = (val << 27) >>> 31;
out[currentPos++] = (val << 28) >>> 31;
out[currentPos++] = (val << 29) >>> 31;
out[currentPos++] = (val << 30) >>> 31;
out[currentPos++] = (val << 31) >>> 31;
out[currentPos++] = valn >>> 31;
out[currentPos++] = (valn << 1) >>> 31;
out[currentPos++] = (valn << 2) >>> 31;
out[currentPos++] = (valn << 3) >>> 31;
// number : 28, bitwidth : 1
out[currentPos++] = (valn << 4) >>> 31;
out[currentPos++] = (valn << 5) >>> 31;
out[currentPos++] = (valn << 6) >>> 31;
out[currentPos++] = (valn << 7) >>> 31;
out[currentPos++] = (valn << 8) >>> 31;
out[currentPos++] = (valn << 9) >>> 31;
out[currentPos++] = (valn << 10) >>> 31;
out[currentPos++] = (valn << 11) >>> 31;
out[currentPos++] = (valn << 12) >>> 31;
out[currentPos++] = (valn << 13) >>> 31; // 10
out[currentPos++] = (valn << 14) >>> 31;
out[currentPos++] = (valn << 15) >>> 31;
out[currentPos++] = (valn << 16) >>> 31;
out[currentPos++] = (valn << 17) >>> 31;
out[currentPos++] = (valn << 18) >>> 31;
out[currentPos++] = (valn << 19) >>> 31;
out[currentPos++] = (valn << 20) >>> 31;
out[currentPos++] = (valn << 21) >>> 31;
out[currentPos++] = (valn << 22) >>> 31;
out[currentPos++] = (valn << 23) >>> 31; // 20
out[currentPos++] = (valn << 24) >>> 31;
out[currentPos++] = (valn << 25) >>> 31;
out[currentPos++] = (valn << 26) >>> 31;
out[currentPos++] = (valn << 27) >>> 31;
out[currentPos++] = (valn << 28) >>> 31;
out[currentPos++] = (valn << 29) >>> 31;
out[currentPos++] = (valn << 30) >>> 31;
out[currentPos++] = (valn << 31) >>> 31;
}
private final static int bitLength[] = { 1, 2, 3, 4, 5, 7, 9, 14, 28 };
private final static int codeNum[] = { 28, 14, 9, 7, 5, 4, 3, 2, 1 };
@Override
public String toString() {
return this.getClass().getSimpleName();
}
}