package me.lemire.integercompression; /** * Group Simple 9 is a variation on Simple 9 that preserves the same * compression ratios but offers higher decoding speed by regrouping * the 32-bit words into pairs of 64-bit words. * * original by Kun Jiang, Yuexiang Yang and Qinghua Zheng source: * https://github.com/deeper2/simple * * Adapted by D. Lemire. */ public final class GroupSimple9 implements IntegerCODEC, SkippableIntegerCODEC { 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) { if (inlength == 0) return; out[outpos.get()] = inlength; outpos.increment(); headlessCompress(in, inpos, inlength, out, outpos); } private void encode0(final int[] in, final int inf, final int code, final int[] out, final int outf) { 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]; } private void encode1(final int[] in, final int inf, final int code, final int[] out, final int outf) { 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]; } private void encode2(final int[] in, final int inf, final int code, final int[] out, final int outf) { 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]; } private void encode3(final int[] in, final int inf, final int code, final int[] out, final int outf) { 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]; } private void encode4(final int[] in, final int inf, final int code, final int[] out, final int outf) { 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]; } private void encode5(final int[] in, final int inf, final int code, final int[] out, final int outf) { 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]; } private void encode6(final int[] in, final int inf, final int code, final int[] out, final int outf) { 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]; } private void encode7(final int[] in, final int inf, final int code, final int[] out, final int outf) { 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]; } private void encode8(final int[] in, final int inf, final int code, final int[] out, final int outf) { 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]; } private void encode9(final int[] in, final int inf, final int code, final int[] out, final int outf) { 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]; } private void encode10(final int[] in, final int inf, final int code, final int[] out, final int outf) { 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]; } private void encode11(final int[] in, final int inf, final int code, final int[] out, final int outf) { 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]; } private void encode12(final int[] in, final int inf, final int code, final int[] out, final int outf) { 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]; } private void encode13(final int[] in, final int inf, final int code, final int[] out, final int outf) { 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]; } private void encode14(final int[] in, final int inf, final int code, final int[] out, final int outf) { 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]; } private void encode15(final int[] in, final int inf, final int code, final int[] out, final int outf) { 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]; } private void encode16(final int[] in, final int inf, final int code, final int[] out, final int outf) { 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]; } private void encode17(final int[] in, final int inf, final int code, final int[] out, final int outf) { 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]; } private void encode18(final int[] in, final int inf, final int code, final int[] out, final int outf) { 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]; } private void encode19(final int[] in, final int inf, final int code, final int[] out, final int outf) { 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]; } private void encode20(final int[] in, final int inf, final int code, final int[] out, final int outf) { 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]; } private void encode21(final int[] in, final int inf, final int code, final int[] out, final int outf) { 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]; } private void encode22(final int[] in, final int inf, final int code, final int[] out, final int outf) { 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]; } private void encode23(final int[] in, final int inf, final int code, final int[] out, final int outf) { 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]; } private void encode24(final int[] in, final int inf, final int code, final int[] out, final int outf) { 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]; } private void encode25(final int[] in, final int inf, final int code, final int[] out, final int outf) { 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]; } private void encode26(final int[] in, final int inf, final int code, final int[] out, final int outf) { 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]; } private void encode27(final int[] in, final int inf, final int code, final int[] out, final int outf) { 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]; } private void encode28(final int[] in, final int inf, final int code, final int[] out, final int outf) { 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]; } private void encode29(final int[] in, final int inf, final int code, final int[] out, final int outf) { 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]; } private void encode30(final int[] in, final int inf, final int code, final int[] out, final int outf) { 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]; } private void encode31(final int[] in, final int inf, final int code, final int[] out, final int outf) { 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]; } private void encode32(final int[] in, final int inf, final int code, final int[] out, final int outf) { 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]; } private void encode33(final int[] in, final int inf, final int code, final int[] out, final int outf) { 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]; } private void encode34(final int[] in, final int inf, final int code, final int[] out, final int outf) { 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]; } private void encode35(final int[] in, final int inf, final int code, final int[] out, final int outf) { 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]; } private void encode36(final int[] in, final int inf, final int code, final int[] out, final int outf) { 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]; } private void encode37(final int[] in, final int inf, final int code, final int[] out, final int outf) { 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]; } private void encode38(final int[] in, final int inf, final int code, final int[] out, final int outf) { 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]; } private void encode39(final int[] in, final int inf, final int code, final int[] out, final int outf) { 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]; } private void encode40(final int[] in, final int inf, final int code, final int[] out, final int outf) { 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]; } private void encode41(final int[] in, final int inf, final int code, final int[] out, final int outf) { 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]; } private void encode42(final int[] in, final int inf, final int code, final int[] out, final int outf) { 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]; } private void encode43(final int[] in, final int inf, final int code, final int[] out, final int outf) { 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]; } private void encode44(final int[] in, final int inf, final int code, final int[] out, final int outf) { 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]; } private void encode45(final int[] in, final int inf, final int code, final int[] out, final int outf) { 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]; } private void encode46(final int[] in, final int inf, final int code, final int[] out, final int outf) { 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]; } private void encode47(final int[] in, final int inf, final int code, final int[] out, final int outf) { 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]; } private void encode48(final int[] in, final int inf, final int code, final int[] out, final int outf) { 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]; } private void encode49(final int[] in, final int inf, final int code, final int[] out, final int outf) { 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]; } private void encode50(final int[] in, final int inf, final int code, final int[] out, final int outf) { 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]; } private void encode51(final int[] in, final int inf, final int code, final int[] out, final int outf) { 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]; } private void encode52(final int[] in, final int inf, final int code, final int[] out, final int outf) { 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]; } private void encode53(final int[] in, final int inf, final int code, final int[] out, final int outf) { 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]; } private void encode54(final int[] in, final int inf, final int code, final int[] out, final int outf) { 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]; } private void encode55(final int[] in, final int inf, final int code, final int[] out, final int outf) { 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]; } private void encode56(final int[] in, final int inf, final int code, final int[] out, final int outf) { 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]; } private void encode57(final int[] in, final int inf, final int code, final int[] out, final int outf) { 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]; } private void encode58(final int[] in, final int inf, final int code, final int[] out, final int outf) { 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]; } private void encode59(final int[] in, final int inf, final int code, final int[] out, final int outf) { 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]; } private void encode60(final int[] in, final int inf, final int code, final int[] out, final int outf) { 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]; } private void encode61(final int[] in, final int inf, final int code, final int[] out, final int outf) { 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]; } private void encode62(final int[] in, final int inf, final int code, final int[] out, final int outf) { 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]; } private void encode63(final int[] in, final int inf, final int code, final int[] out, final int outf) { 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]; } private void encode64(final int[] in, final int inf, final int code, final int[] out, final int outf) { 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]; } private void encode65(final int[] in, final int inf, final int code, final int[] out, final int outf) { 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]; } private void encode66(final int[] in, final int inf, final int code, final int[] out, final int outf) { 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]; } private void encode67(final int[] in, final int inf, final int code, final int[] out, final int outf) { 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]; } private void encode68(final int[] in, final int inf, final int code, final int[] out, final int outf) { 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]; } private void encode69(final int[] in, final int inf, final int code, final int[] out, final int outf) { 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]; } private void encode70(final int[] in, final int inf, final int code, final int[] out, final int outf) { 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]; } private void encode71(final int[] in, final int inf, final int code, final int[] out, final int outf) { 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]; } private void encode72(final int[] in, final int inf, final int code, final int[] out, final int outf) { 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]; } private void encode73(final int[] in, final int inf, final int code, final int[] out, final int outf) { 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]; } private void encode74(final int[] in, final int inf, final int code, final int[] out, final int outf) { 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]; } private void encode75(final int[] in, final int inf, final int code, final int[] out, final int outf) { 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]; } private void encode76(final int[] in, final int inf, final int code, final int[] out, final int outf) { 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]; } private void encode77(final int[] in, final int inf, final int code, final int[] out, final int outf) { 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]; } private void encode78(final int[] in, final int inf, final int code, final int[] out, final int outf) { 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]; } private void encode79(final int[] in, final int inf, final int code, final int[] out, final int outf) { 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]; } private void encode80(final int[] in, final int inf, final int code, final int[] out, final int outf) { 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]; } @Override public void uncompress(int[] in, IntWrapper inpos, int inlength, int[] out, IntWrapper outpos) { if (inlength == 0) return; final int outlength = in[inpos.get()]; inpos.increment(); headlessUncompress(in, inpos, inlength, out, outpos, outlength); } 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(); } @Override public void headlessCompress(int[] in, IntWrapper inpos, int inlength, int[] out, IntWrapper outpos) { int tmpoutpos = outpos.get(); int currentPos = inpos.get(); int selector1 = 0; int selector2 = 0; final int finalin = currentPos + inlength; while (currentPos < finalin - 28 * 2) { int nextCurrentPos = currentPos; mainloop1: for (selector1=0; selector1 <= 8; selector1++) { int compressedNum = codeNum[selector1]; //if (finalin <= nextCurrentPos + compressedNum - 1) // compressedNum = finalin - nextCurrentPos; int b = bitLength[selector1]; int max = 1 << b; int i = 0; for (; i < compressedNum; i++) { if (Util.smallerorequalthan(max, in[nextCurrentPos + i])) continue mainloop1; } nextCurrentPos += compressedNum; break; } mainloop2: for (selector2 = 0; selector2 <= 8; selector2++) { int compressedNum = codeNum[selector2]; //if (finalin <= nextCurrentPos + compressedNum - 1) // compressedNum = finalin - nextCurrentPos; int b = bitLength[selector2]; int max = 1 << b; int i = 0; for (; i < compressedNum; i++) { if (Util.smallerorequalthan(max, in[nextCurrentPos + i])) continue mainloop2; } nextCurrentPos += compressedNum; break; } int code = M[selector1][selector2]; out[tmpoutpos] = 0; out[tmpoutpos + 1] = 0; switch (code) { case 0: encode0(in, currentPos, code, out, tmpoutpos); break; case 1: encode1(in, currentPos, code, out, tmpoutpos); break; case 2: encode2(in, currentPos, code, out, tmpoutpos); break; case 3: encode3(in, currentPos, code, out, tmpoutpos); break; case 4: encode4(in, currentPos, code, out, tmpoutpos); break; case 5: encode5(in, currentPos, code, out, tmpoutpos); break; case 6: encode6(in, currentPos, code, out, tmpoutpos); break; case 7: encode7(in, currentPos, code, out, tmpoutpos); break; case 8: encode8(in, currentPos, code, out, tmpoutpos); break; case 9: encode9(in, currentPos, code, out, tmpoutpos); break; case 10: encode10(in, currentPos, code, out, tmpoutpos); break; case 11: encode11(in, currentPos, code, out, tmpoutpos); break; case 12: encode12(in, currentPos, code, out, tmpoutpos); break; case 13: encode13(in, currentPos, code, out, tmpoutpos); break; case 14: encode14(in, currentPos, code, out, tmpoutpos); break; case 15: encode15(in, currentPos, code, out, tmpoutpos); break; case 16: encode16(in, currentPos, code, out, tmpoutpos); break; case 17: encode17(in, currentPos, code, out, tmpoutpos); break; case 18: encode18(in, currentPos, code, out, tmpoutpos); break; case 19: encode19(in, currentPos, code, out, tmpoutpos); break; case 20: encode20(in, currentPos, code, out, tmpoutpos); break; case 21: encode21(in, currentPos, code, out, tmpoutpos); break; case 22: encode22(in, currentPos, code, out, tmpoutpos); break; case 23: encode23(in, currentPos, code, out, tmpoutpos); break; case 24: encode24(in, currentPos, code, out, tmpoutpos); break; case 25: encode25(in, currentPos, code, out, tmpoutpos); break; case 26: encode26(in, currentPos, code, out, tmpoutpos); break; case 27: encode27(in, currentPos, code, out, tmpoutpos); break; case 28: encode28(in, currentPos, code, out, tmpoutpos); break; case 29: encode29(in, currentPos, code, out, tmpoutpos); break; case 30: encode30(in, currentPos, code, out, tmpoutpos); break; case 31: encode31(in, currentPos, code, out, tmpoutpos); break; case 32: encode32(in, currentPos, code, out, tmpoutpos); break; case 33: encode33(in, currentPos, code, out, tmpoutpos); break; case 34: encode34(in, currentPos, code, out, tmpoutpos); break; case 35: encode35(in, currentPos, code, out, tmpoutpos); break; case 36: encode36(in, currentPos, code, out, tmpoutpos); break; case 37: encode37(in, currentPos, code, out, tmpoutpos); break; case 38: encode38(in, currentPos, code, out, tmpoutpos); break; case 39: encode39(in, currentPos, code, out, tmpoutpos); break; case 40: encode40(in, currentPos, code, out, tmpoutpos); break; case 41: encode41(in, currentPos, code, out, tmpoutpos); break; case 42: encode42(in, currentPos, code, out, tmpoutpos); break; case 43: encode43(in, currentPos, code, out, tmpoutpos); break; case 44: encode44(in, currentPos, code, out, tmpoutpos); break; case 45: encode45(in, currentPos, code, out, tmpoutpos); break; case 46: encode46(in, currentPos, code, out, tmpoutpos); break; case 47: encode47(in, currentPos, code, out, tmpoutpos); break; case 48: encode48(in, currentPos, code, out, tmpoutpos); break; case 49: encode49(in, currentPos, code, out, tmpoutpos); break; case 50: encode50(in, currentPos, code, out, tmpoutpos); break; case 51: encode51(in, currentPos, code, out, tmpoutpos); break; case 52: encode52(in, currentPos, code, out, tmpoutpos); break; case 53: encode53(in, currentPos, code, out, tmpoutpos); break; case 54: encode54(in, currentPos, code, out, tmpoutpos); break; case 55: encode55(in, currentPos, code, out, tmpoutpos); break; case 56: encode56(in, currentPos, code, out, tmpoutpos); break; case 57: encode57(in, currentPos, code, out, tmpoutpos); break; case 58: encode58(in, currentPos, code, out, tmpoutpos); break; case 59: encode59(in, currentPos, code, out, tmpoutpos); break; case 60: encode60(in, currentPos, code, out, tmpoutpos); break; case 61: encode61(in, currentPos, code, out, tmpoutpos); break; case 62: encode62(in, currentPos, code, out, tmpoutpos); break; case 63: encode63(in, currentPos, code, out, tmpoutpos); break; case 64: encode64(in, currentPos, code, out, tmpoutpos); break; case 65: encode65(in, currentPos, code, out, tmpoutpos); break; case 66: encode66(in, currentPos, code, out, tmpoutpos); break; case 67: encode67(in, currentPos, code, out, tmpoutpos); break; case 68: encode68(in, currentPos, code, out, tmpoutpos); break; case 69: encode69(in, currentPos, code, out, tmpoutpos); break; case 70: encode70(in, currentPos, code, out, tmpoutpos); break; case 71: encode71(in, currentPos, code, out, tmpoutpos); break; case 72: encode72(in, currentPos, code, out, tmpoutpos); break; case 73: encode73(in, currentPos, code, out, tmpoutpos); break; case 74: encode74(in, currentPos, code, out, tmpoutpos); break; case 75: encode75(in, currentPos, code, out, tmpoutpos); break; case 76: encode76(in, currentPos, code, out, tmpoutpos); break; case 77: encode77(in, currentPos, code, out, tmpoutpos); break; case 78: encode78(in, currentPos, code, out, tmpoutpos); break; case 79: encode79(in, currentPos, code, out, tmpoutpos); break; case 80: encode80(in, currentPos, code, out, tmpoutpos); break; default: throw new RuntimeException("unsupported code"); }// end switch tmpoutpos += 2; currentPos = nextCurrentPos; } 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); } @Override public void headlessUncompress(int[] in, IntWrapper inpos, int inlength, int[] out, IntWrapper outpos, int num) { int currentPos = outpos.get(); int tmpinpos = inpos.get(); final int finalout = currentPos + num; 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); } }