package org.apache.hadoop.hive.mastiffFlexibleEncoding.parquet; /** * Packs from the Least Significant Bit first * * @author automatically generated * @see ByteBasedBitPackingGenerator * */ public abstract class ByteBitPackingLE { private static final BytePacker[] packers = new BytePacker[33]; static { packers[0] = new Packer0(); packers[1] = new Packer1(); packers[2] = new Packer2(); packers[3] = new Packer3(); packers[4] = new Packer4(); packers[5] = new Packer5(); packers[6] = new Packer6(); packers[7] = new Packer7(); packers[8] = new Packer8(); packers[9] = new Packer9(); packers[10] = new Packer10(); packers[11] = new Packer11(); packers[12] = new Packer12(); packers[13] = new Packer13(); packers[14] = new Packer14(); packers[15] = new Packer15(); packers[16] = new Packer16(); packers[17] = new Packer17(); packers[18] = new Packer18(); packers[19] = new Packer19(); packers[20] = new Packer20(); packers[21] = new Packer21(); packers[22] = new Packer22(); packers[23] = new Packer23(); packers[24] = new Packer24(); packers[25] = new Packer25(); packers[26] = new Packer26(); packers[27] = new Packer27(); packers[28] = new Packer28(); packers[29] = new Packer29(); packers[30] = new Packer30(); packers[31] = new Packer31(); packers[32] = new Packer32(); } public static final BytePackerFactory factory = new BytePackerFactory() { public BytePacker newBytePacker(int bitWidth) { return packers[bitWidth]; } }; private static final class Packer0 extends BytePacker { private Packer0() { super(0); } public final void pack8Values(final int[] in, final int inPos, final byte[] out, final int outPos) { } public final void pack32Values(final int[] in, final int inPos, final byte[] out, final int outPos) { } public final void unpack8Values(final byte[] in, final int inPos, final int[] out, final int outPos) { } public final void unpack32Values(final byte[] in, final int inPos, final int[] out, final int outPos) { } } private static final class Packer1 extends BytePacker { private Packer1() { super(1); } public final void pack8Values(final int[] in, final int inPos, final byte[] out, final int outPos) { out[ 0 + outPos] = (byte)(( // [_______0] // [0] ((in[ 0 + inPos] & 1)) | // [______1_] // [0] ((in[ 1 + inPos] & 1) << 1) | // [_____2__] // [0] ((in[ 2 + inPos] & 1) << 2) | // [____3___] // [0] ((in[ 3 + inPos] & 1) << 3) | // [___4____] // [0] ((in[ 4 + inPos] & 1) << 4) | // [__5_____] // [0] ((in[ 5 + inPos] & 1) << 5) | // [_6______] // [0] ((in[ 6 + inPos] & 1) << 6) | // [7_______] // [0] ((in[ 7 + inPos] & 1) << 7)) & 255); } public final void pack32Values(final int[] in, final int inPos, final byte[] out, final int outPos) { out[ 0 + outPos] = (byte)(( // [_______0] // [0] ((in[ 0 + inPos] & 1)) | // [______1_] // [0] ((in[ 1 + inPos] & 1) << 1) | // [_____2__] // [0] ((in[ 2 + inPos] & 1) << 2) | // [____3___] // [0] ((in[ 3 + inPos] & 1) << 3) | // [___4____] // [0] ((in[ 4 + inPos] & 1) << 4) | // [__5_____] // [0] ((in[ 5 + inPos] & 1) << 5) | // [_6______] // [0] ((in[ 6 + inPos] & 1) << 6) | // [7_______] // [0] ((in[ 7 + inPos] & 1) << 7)) & 255); out[ 1 + outPos] = (byte)(( // [_______0] // [0] ((in[ 8 + inPos] & 1)) | // [______1_] // [0] ((in[ 9 + inPos] & 1) << 1) | // [_____2__] // [0] ((in[10 + inPos] & 1) << 2) | // [____3___] // [0] ((in[11 + inPos] & 1) << 3) | // [___4____] // [0] ((in[12 + inPos] & 1) << 4) | // [__5_____] // [0] ((in[13 + inPos] & 1) << 5) | // [_6______] // [0] ((in[14 + inPos] & 1) << 6) | // [7_______] // [0] ((in[15 + inPos] & 1) << 7)) & 255); out[ 2 + outPos] = (byte)(( // [_______0] // [0] ((in[16 + inPos] & 1)) | // [______1_] // [0] ((in[17 + inPos] & 1) << 1) | // [_____2__] // [0] ((in[18 + inPos] & 1) << 2) | // [____3___] // [0] ((in[19 + inPos] & 1) << 3) | // [___4____] // [0] ((in[20 + inPos] & 1) << 4) | // [__5_____] // [0] ((in[21 + inPos] & 1) << 5) | // [_6______] // [0] ((in[22 + inPos] & 1) << 6) | // [7_______] // [0] ((in[23 + inPos] & 1) << 7)) & 255); out[ 3 + outPos] = (byte)(( // [_______0] // [0] ((in[24 + inPos] & 1)) | // [______1_] // [0] ((in[25 + inPos] & 1) << 1) | // [_____2__] // [0] ((in[26 + inPos] & 1) << 2) | // [____3___] // [0] ((in[27 + inPos] & 1) << 3) | // [___4____] // [0] ((in[28 + inPos] & 1) << 4) | // [__5_____] // [0] ((in[29 + inPos] & 1) << 5) | // [_6______] // [0] ((in[30 + inPos] & 1) << 6) | // [7_______] // [0] ((in[31 + inPos] & 1) << 7)) & 255); } public final void unpack8Values(final byte[] in, final int inPos, final int[] out, final int outPos) { out[ 0 + outPos] = // [_______0] // [0] (((((int)in[ 0 + inPos]) & 255) ) & 1); out[ 1 + outPos] = // [______1_] // [0] (((((int)in[ 0 + inPos]) & 255) >>> 1) & 1); out[ 2 + outPos] = // [_____2__] // [0] (((((int)in[ 0 + inPos]) & 255) >>> 2) & 1); out[ 3 + outPos] = // [____3___] // [0] (((((int)in[ 0 + inPos]) & 255) >>> 3) & 1); out[ 4 + outPos] = // [___4____] // [0] (((((int)in[ 0 + inPos]) & 255) >>> 4) & 1); out[ 5 + outPos] = // [__5_____] // [0] (((((int)in[ 0 + inPos]) & 255) >>> 5) & 1); out[ 6 + outPos] = // [_6______] // [0] (((((int)in[ 0 + inPos]) & 255) >>> 6) & 1); out[ 7 + outPos] = // [7_______] // [0] (((((int)in[ 0 + inPos]) & 255) >>> 7) & 1); } public final void unpack32Values(final byte[] in, final int inPos, final int[] out, final int outPos) { out[ 0 + outPos] = // [_______0] // [0] (((((int)in[ 0 + inPos]) & 255) ) & 1); out[ 1 + outPos] = // [______1_] // [0] (((((int)in[ 0 + inPos]) & 255) >>> 1) & 1); out[ 2 + outPos] = // [_____2__] // [0] (((((int)in[ 0 + inPos]) & 255) >>> 2) & 1); out[ 3 + outPos] = // [____3___] // [0] (((((int)in[ 0 + inPos]) & 255) >>> 3) & 1); out[ 4 + outPos] = // [___4____] // [0] (((((int)in[ 0 + inPos]) & 255) >>> 4) & 1); out[ 5 + outPos] = // [__5_____] // [0] (((((int)in[ 0 + inPos]) & 255) >>> 5) & 1); out[ 6 + outPos] = // [_6______] // [0] (((((int)in[ 0 + inPos]) & 255) >>> 6) & 1); out[ 7 + outPos] = // [7_______] // [0] (((((int)in[ 0 + inPos]) & 255) >>> 7) & 1); out[ 8 + outPos] = // [_______0] // [0] (((((int)in[ 1 + inPos]) & 255) ) & 1); out[ 9 + outPos] = // [______1_] // [0] (((((int)in[ 1 + inPos]) & 255) >>> 1) & 1); out[10 + outPos] = // [_____2__] // [0] (((((int)in[ 1 + inPos]) & 255) >>> 2) & 1); out[11 + outPos] = // [____3___] // [0] (((((int)in[ 1 + inPos]) & 255) >>> 3) & 1); out[12 + outPos] = // [___4____] // [0] (((((int)in[ 1 + inPos]) & 255) >>> 4) & 1); out[13 + outPos] = // [__5_____] // [0] (((((int)in[ 1 + inPos]) & 255) >>> 5) & 1); out[14 + outPos] = // [_6______] // [0] (((((int)in[ 1 + inPos]) & 255) >>> 6) & 1); out[15 + outPos] = // [7_______] // [0] (((((int)in[ 1 + inPos]) & 255) >>> 7) & 1); out[16 + outPos] = // [_______0] // [0] (((((int)in[ 2 + inPos]) & 255) ) & 1); out[17 + outPos] = // [______1_] // [0] (((((int)in[ 2 + inPos]) & 255) >>> 1) & 1); out[18 + outPos] = // [_____2__] // [0] (((((int)in[ 2 + inPos]) & 255) >>> 2) & 1); out[19 + outPos] = // [____3___] // [0] (((((int)in[ 2 + inPos]) & 255) >>> 3) & 1); out[20 + outPos] = // [___4____] // [0] (((((int)in[ 2 + inPos]) & 255) >>> 4) & 1); out[21 + outPos] = // [__5_____] // [0] (((((int)in[ 2 + inPos]) & 255) >>> 5) & 1); out[22 + outPos] = // [_6______] // [0] (((((int)in[ 2 + inPos]) & 255) >>> 6) & 1); out[23 + outPos] = // [7_______] // [0] (((((int)in[ 2 + inPos]) & 255) >>> 7) & 1); out[24 + outPos] = // [_______0] // [0] (((((int)in[ 3 + inPos]) & 255) ) & 1); out[25 + outPos] = // [______1_] // [0] (((((int)in[ 3 + inPos]) & 255) >>> 1) & 1); out[26 + outPos] = // [_____2__] // [0] (((((int)in[ 3 + inPos]) & 255) >>> 2) & 1); out[27 + outPos] = // [____3___] // [0] (((((int)in[ 3 + inPos]) & 255) >>> 3) & 1); out[28 + outPos] = // [___4____] // [0] (((((int)in[ 3 + inPos]) & 255) >>> 4) & 1); out[29 + outPos] = // [__5_____] // [0] (((((int)in[ 3 + inPos]) & 255) >>> 5) & 1); out[30 + outPos] = // [_6______] // [0] (((((int)in[ 3 + inPos]) & 255) >>> 6) & 1); out[31 + outPos] = // [7_______] // [0] (((((int)in[ 3 + inPos]) & 255) >>> 7) & 1); } } private static final class Packer2 extends BytePacker { private Packer2() { super(2); } public final void pack8Values(final int[] in, final int inPos, final byte[] out, final int outPos) { out[ 0 + outPos] = (byte)(( // [______10] // [10] ((in[ 0 + inPos] & 3)) | // [____32__] // [10] ((in[ 1 + inPos] & 3) << 2) | // [__54____] // [10] ((in[ 2 + inPos] & 3) << 4) | // [76______] // [10] ((in[ 3 + inPos] & 3) << 6)) & 255); out[ 1 + outPos] = (byte)(( // [______10] // [10] ((in[ 4 + inPos] & 3)) | // [____32__] // [10] ((in[ 5 + inPos] & 3) << 2) | // [__54____] // [10] ((in[ 6 + inPos] & 3) << 4) | // [76______] // [10] ((in[ 7 + inPos] & 3) << 6)) & 255); } public final void pack32Values(final int[] in, final int inPos, final byte[] out, final int outPos) { out[ 0 + outPos] = (byte)(( // [______10] // [10] ((in[ 0 + inPos] & 3)) | // [____32__] // [10] ((in[ 1 + inPos] & 3) << 2) | // [__54____] // [10] ((in[ 2 + inPos] & 3) << 4) | // [76______] // [10] ((in[ 3 + inPos] & 3) << 6)) & 255); out[ 1 + outPos] = (byte)(( // [______10] // [10] ((in[ 4 + inPos] & 3)) | // [____32__] // [10] ((in[ 5 + inPos] & 3) << 2) | // [__54____] // [10] ((in[ 6 + inPos] & 3) << 4) | // [76______] // [10] ((in[ 7 + inPos] & 3) << 6)) & 255); out[ 2 + outPos] = (byte)(( // [______10] // [10] ((in[ 8 + inPos] & 3)) | // [____32__] // [10] ((in[ 9 + inPos] & 3) << 2) | // [__54____] // [10] ((in[10 + inPos] & 3) << 4) | // [76______] // [10] ((in[11 + inPos] & 3) << 6)) & 255); out[ 3 + outPos] = (byte)(( // [______10] // [10] ((in[12 + inPos] & 3)) | // [____32__] // [10] ((in[13 + inPos] & 3) << 2) | // [__54____] // [10] ((in[14 + inPos] & 3) << 4) | // [76______] // [10] ((in[15 + inPos] & 3) << 6)) & 255); out[ 4 + outPos] = (byte)(( // [______10] // [10] ((in[16 + inPos] & 3)) | // [____32__] // [10] ((in[17 + inPos] & 3) << 2) | // [__54____] // [10] ((in[18 + inPos] & 3) << 4) | // [76______] // [10] ((in[19 + inPos] & 3) << 6)) & 255); out[ 5 + outPos] = (byte)(( // [______10] // [10] ((in[20 + inPos] & 3)) | // [____32__] // [10] ((in[21 + inPos] & 3) << 2) | // [__54____] // [10] ((in[22 + inPos] & 3) << 4) | // [76______] // [10] ((in[23 + inPos] & 3) << 6)) & 255); out[ 6 + outPos] = (byte)(( // [______10] // [10] ((in[24 + inPos] & 3)) | // [____32__] // [10] ((in[25 + inPos] & 3) << 2) | // [__54____] // [10] ((in[26 + inPos] & 3) << 4) | // [76______] // [10] ((in[27 + inPos] & 3) << 6)) & 255); out[ 7 + outPos] = (byte)(( // [______10] // [10] ((in[28 + inPos] & 3)) | // [____32__] // [10] ((in[29 + inPos] & 3) << 2) | // [__54____] // [10] ((in[30 + inPos] & 3) << 4) | // [76______] // [10] ((in[31 + inPos] & 3) << 6)) & 255); } public final void unpack8Values(final byte[] in, final int inPos, final int[] out, final int outPos) { out[ 0 + outPos] = // [______10] // [10] (((((int)in[ 0 + inPos]) & 255) ) & 3); out[ 1 + outPos] = // [____32__] // [10] (((((int)in[ 0 + inPos]) & 255) >>> 2) & 3); out[ 2 + outPos] = // [__54____] // [10] (((((int)in[ 0 + inPos]) & 255) >>> 4) & 3); out[ 3 + outPos] = // [76______] // [10] (((((int)in[ 0 + inPos]) & 255) >>> 6) & 3); out[ 4 + outPos] = // [______10] // [10] (((((int)in[ 1 + inPos]) & 255) ) & 3); out[ 5 + outPos] = // [____32__] // [10] (((((int)in[ 1 + inPos]) & 255) >>> 2) & 3); out[ 6 + outPos] = // [__54____] // [10] (((((int)in[ 1 + inPos]) & 255) >>> 4) & 3); out[ 7 + outPos] = // [76______] // [10] (((((int)in[ 1 + inPos]) & 255) >>> 6) & 3); } public final void unpack32Values(final byte[] in, final int inPos, final int[] out, final int outPos) { out[ 0 + outPos] = // [______10] // [10] (((((int)in[ 0 + inPos]) & 255) ) & 3); out[ 1 + outPos] = // [____32__] // [10] (((((int)in[ 0 + inPos]) & 255) >>> 2) & 3); out[ 2 + outPos] = // [__54____] // [10] (((((int)in[ 0 + inPos]) & 255) >>> 4) & 3); out[ 3 + outPos] = // [76______] // [10] (((((int)in[ 0 + inPos]) & 255) >>> 6) & 3); out[ 4 + outPos] = // [______10] // [10] (((((int)in[ 1 + inPos]) & 255) ) & 3); out[ 5 + outPos] = // [____32__] // [10] (((((int)in[ 1 + inPos]) & 255) >>> 2) & 3); out[ 6 + outPos] = // [__54____] // [10] (((((int)in[ 1 + inPos]) & 255) >>> 4) & 3); out[ 7 + outPos] = // [76______] // [10] (((((int)in[ 1 + inPos]) & 255) >>> 6) & 3); out[ 8 + outPos] = // [______10] // [10] (((((int)in[ 2 + inPos]) & 255) ) & 3); out[ 9 + outPos] = // [____32__] // [10] (((((int)in[ 2 + inPos]) & 255) >>> 2) & 3); out[10 + outPos] = // [__54____] // [10] (((((int)in[ 2 + inPos]) & 255) >>> 4) & 3); out[11 + outPos] = // [76______] // [10] (((((int)in[ 2 + inPos]) & 255) >>> 6) & 3); out[12 + outPos] = // [______10] // [10] (((((int)in[ 3 + inPos]) & 255) ) & 3); out[13 + outPos] = // [____32__] // [10] (((((int)in[ 3 + inPos]) & 255) >>> 2) & 3); out[14 + outPos] = // [__54____] // [10] (((((int)in[ 3 + inPos]) & 255) >>> 4) & 3); out[15 + outPos] = // [76______] // [10] (((((int)in[ 3 + inPos]) & 255) >>> 6) & 3); out[16 + outPos] = // [______10] // [10] (((((int)in[ 4 + inPos]) & 255) ) & 3); out[17 + outPos] = // [____32__] // [10] (((((int)in[ 4 + inPos]) & 255) >>> 2) & 3); out[18 + outPos] = // [__54____] // [10] (((((int)in[ 4 + inPos]) & 255) >>> 4) & 3); out[19 + outPos] = // [76______] // [10] (((((int)in[ 4 + inPos]) & 255) >>> 6) & 3); out[20 + outPos] = // [______10] // [10] (((((int)in[ 5 + inPos]) & 255) ) & 3); out[21 + outPos] = // [____32__] // [10] (((((int)in[ 5 + inPos]) & 255) >>> 2) & 3); out[22 + outPos] = // [__54____] // [10] (((((int)in[ 5 + inPos]) & 255) >>> 4) & 3); out[23 + outPos] = // [76______] // [10] (((((int)in[ 5 + inPos]) & 255) >>> 6) & 3); out[24 + outPos] = // [______10] // [10] (((((int)in[ 6 + inPos]) & 255) ) & 3); out[25 + outPos] = // [____32__] // [10] (((((int)in[ 6 + inPos]) & 255) >>> 2) & 3); out[26 + outPos] = // [__54____] // [10] (((((int)in[ 6 + inPos]) & 255) >>> 4) & 3); out[27 + outPos] = // [76______] // [10] (((((int)in[ 6 + inPos]) & 255) >>> 6) & 3); out[28 + outPos] = // [______10] // [10] (((((int)in[ 7 + inPos]) & 255) ) & 3); out[29 + outPos] = // [____32__] // [10] (((((int)in[ 7 + inPos]) & 255) >>> 2) & 3); out[30 + outPos] = // [__54____] // [10] (((((int)in[ 7 + inPos]) & 255) >>> 4) & 3); out[31 + outPos] = // [76______] // [10] (((((int)in[ 7 + inPos]) & 255) >>> 6) & 3); } } private static final class Packer3 extends BytePacker { private Packer3() { super(3); } public final void pack8Values(final int[] in, final int inPos, final byte[] out, final int outPos) { out[ 0 + outPos] = (byte)(( // [_____210] // [210] ((in[ 0 + inPos] & 7)) | // [__543___] // [210] ((in[ 1 + inPos] & 7) << 3) | // [76______] // [_10] ((in[ 2 + inPos] & 7) << 6)) & 255); out[ 1 + outPos] = (byte)(( // [_______0] // [2__] ((in[ 2 + inPos] & 7) >>> 2) | // [____321_] // [210] ((in[ 3 + inPos] & 7) << 1) | // [_654____] // [210] ((in[ 4 + inPos] & 7) << 4) | // [7_______] // [__0] ((in[ 5 + inPos] & 7) << 7)) & 255); out[ 2 + outPos] = (byte)(( // [______10] // [21_] ((in[ 5 + inPos] & 7) >>> 1) | // [___432__] // [210] ((in[ 6 + inPos] & 7) << 2) | // [765_____] // [210] ((in[ 7 + inPos] & 7) << 5)) & 255); } public final void pack32Values(final int[] in, final int inPos, final byte[] out, final int outPos) { out[ 0 + outPos] = (byte)(( // [_____210] // [210] ((in[ 0 + inPos] & 7)) | // [__543___] // [210] ((in[ 1 + inPos] & 7) << 3) | // [76______] // [_10] ((in[ 2 + inPos] & 7) << 6)) & 255); out[ 1 + outPos] = (byte)(( // [_______0] // [2__] ((in[ 2 + inPos] & 7) >>> 2) | // [____321_] // [210] ((in[ 3 + inPos] & 7) << 1) | // [_654____] // [210] ((in[ 4 + inPos] & 7) << 4) | // [7_______] // [__0] ((in[ 5 + inPos] & 7) << 7)) & 255); out[ 2 + outPos] = (byte)(( // [______10] // [21_] ((in[ 5 + inPos] & 7) >>> 1) | // [___432__] // [210] ((in[ 6 + inPos] & 7) << 2) | // [765_____] // [210] ((in[ 7 + inPos] & 7) << 5)) & 255); out[ 3 + outPos] = (byte)(( // [_____210] // [210] ((in[ 8 + inPos] & 7)) | // [__543___] // [210] ((in[ 9 + inPos] & 7) << 3) | // [76______] // [_10] ((in[10 + inPos] & 7) << 6)) & 255); out[ 4 + outPos] = (byte)(( // [_______0] // [2__] ((in[10 + inPos] & 7) >>> 2) | // [____321_] // [210] ((in[11 + inPos] & 7) << 1) | // [_654____] // [210] ((in[12 + inPos] & 7) << 4) | // [7_______] // [__0] ((in[13 + inPos] & 7) << 7)) & 255); out[ 5 + outPos] = (byte)(( // [______10] // [21_] ((in[13 + inPos] & 7) >>> 1) | // [___432__] // [210] ((in[14 + inPos] & 7) << 2) | // [765_____] // [210] ((in[15 + inPos] & 7) << 5)) & 255); out[ 6 + outPos] = (byte)(( // [_____210] // [210] ((in[16 + inPos] & 7)) | // [__543___] // [210] ((in[17 + inPos] & 7) << 3) | // [76______] // [_10] ((in[18 + inPos] & 7) << 6)) & 255); out[ 7 + outPos] = (byte)(( // [_______0] // [2__] ((in[18 + inPos] & 7) >>> 2) | // [____321_] // [210] ((in[19 + inPos] & 7) << 1) | // [_654____] // [210] ((in[20 + inPos] & 7) << 4) | // [7_______] // [__0] ((in[21 + inPos] & 7) << 7)) & 255); out[ 8 + outPos] = (byte)(( // [______10] // [21_] ((in[21 + inPos] & 7) >>> 1) | // [___432__] // [210] ((in[22 + inPos] & 7) << 2) | // [765_____] // [210] ((in[23 + inPos] & 7) << 5)) & 255); out[ 9 + outPos] = (byte)(( // [_____210] // [210] ((in[24 + inPos] & 7)) | // [__543___] // [210] ((in[25 + inPos] & 7) << 3) | // [76______] // [_10] ((in[26 + inPos] & 7) << 6)) & 255); out[10 + outPos] = (byte)(( // [_______0] // [2__] ((in[26 + inPos] & 7) >>> 2) | // [____321_] // [210] ((in[27 + inPos] & 7) << 1) | // [_654____] // [210] ((in[28 + inPos] & 7) << 4) | // [7_______] // [__0] ((in[29 + inPos] & 7) << 7)) & 255); out[11 + outPos] = (byte)(( // [______10] // [21_] ((in[29 + inPos] & 7) >>> 1) | // [___432__] // [210] ((in[30 + inPos] & 7) << 2) | // [765_____] // [210] ((in[31 + inPos] & 7) << 5)) & 255); } public final void unpack8Values(final byte[] in, final int inPos, final int[] out, final int outPos) { out[ 0 + outPos] = // [_____210] // [210] (((((int)in[ 0 + inPos]) & 255) ) & 7); out[ 1 + outPos] = // [__543___] // [210] (((((int)in[ 0 + inPos]) & 255) >>> 3) & 7); out[ 2 + outPos] = // [76______] // [_10] (((((int)in[ 0 + inPos]) & 255) >>> 6) & 7) | // [_______0] // [2__] (((((int)in[ 1 + inPos]) & 255) << 2) & 7); out[ 3 + outPos] = // [____321_] // [210] (((((int)in[ 1 + inPos]) & 255) >>> 1) & 7); out[ 4 + outPos] = // [_654____] // [210] (((((int)in[ 1 + inPos]) & 255) >>> 4) & 7); out[ 5 + outPos] = // [7_______] // [__0] (((((int)in[ 1 + inPos]) & 255) >>> 7) & 7) | // [______10] // [21_] (((((int)in[ 2 + inPos]) & 255) << 1) & 7); out[ 6 + outPos] = // [___432__] // [210] (((((int)in[ 2 + inPos]) & 255) >>> 2) & 7); out[ 7 + outPos] = // [765_____] // [210] (((((int)in[ 2 + inPos]) & 255) >>> 5) & 7); } public final void unpack32Values(final byte[] in, final int inPos, final int[] out, final int outPos) { out[ 0 + outPos] = // [_____210] // [210] (((((int)in[ 0 + inPos]) & 255) ) & 7); out[ 1 + outPos] = // [__543___] // [210] (((((int)in[ 0 + inPos]) & 255) >>> 3) & 7); out[ 2 + outPos] = // [76______] // [_10] (((((int)in[ 0 + inPos]) & 255) >>> 6) & 7) | // [_______0] // [2__] (((((int)in[ 1 + inPos]) & 255) << 2) & 7); out[ 3 + outPos] = // [____321_] // [210] (((((int)in[ 1 + inPos]) & 255) >>> 1) & 7); out[ 4 + outPos] = // [_654____] // [210] (((((int)in[ 1 + inPos]) & 255) >>> 4) & 7); out[ 5 + outPos] = // [7_______] // [__0] (((((int)in[ 1 + inPos]) & 255) >>> 7) & 7) | // [______10] // [21_] (((((int)in[ 2 + inPos]) & 255) << 1) & 7); out[ 6 + outPos] = // [___432__] // [210] (((((int)in[ 2 + inPos]) & 255) >>> 2) & 7); out[ 7 + outPos] = // [765_____] // [210] (((((int)in[ 2 + inPos]) & 255) >>> 5) & 7); out[ 8 + outPos] = // [_____210] // [210] (((((int)in[ 3 + inPos]) & 255) ) & 7); out[ 9 + outPos] = // [__543___] // [210] (((((int)in[ 3 + inPos]) & 255) >>> 3) & 7); out[10 + outPos] = // [76______] // [_10] (((((int)in[ 3 + inPos]) & 255) >>> 6) & 7) | // [_______0] // [2__] (((((int)in[ 4 + inPos]) & 255) << 2) & 7); out[11 + outPos] = // [____321_] // [210] (((((int)in[ 4 + inPos]) & 255) >>> 1) & 7); out[12 + outPos] = // [_654____] // [210] (((((int)in[ 4 + inPos]) & 255) >>> 4) & 7); out[13 + outPos] = // [7_______] // [__0] (((((int)in[ 4 + inPos]) & 255) >>> 7) & 7) | // [______10] // [21_] (((((int)in[ 5 + inPos]) & 255) << 1) & 7); out[14 + outPos] = // [___432__] // [210] (((((int)in[ 5 + inPos]) & 255) >>> 2) & 7); out[15 + outPos] = // [765_____] // [210] (((((int)in[ 5 + inPos]) & 255) >>> 5) & 7); out[16 + outPos] = // [_____210] // [210] (((((int)in[ 6 + inPos]) & 255) ) & 7); out[17 + outPos] = // [__543___] // [210] (((((int)in[ 6 + inPos]) & 255) >>> 3) & 7); out[18 + outPos] = // [76______] // [_10] (((((int)in[ 6 + inPos]) & 255) >>> 6) & 7) | // [_______0] // [2__] (((((int)in[ 7 + inPos]) & 255) << 2) & 7); out[19 + outPos] = // [____321_] // [210] (((((int)in[ 7 + inPos]) & 255) >>> 1) & 7); out[20 + outPos] = // [_654____] // [210] (((((int)in[ 7 + inPos]) & 255) >>> 4) & 7); out[21 + outPos] = // [7_______] // [__0] (((((int)in[ 7 + inPos]) & 255) >>> 7) & 7) | // [______10] // [21_] (((((int)in[ 8 + inPos]) & 255) << 1) & 7); out[22 + outPos] = // [___432__] // [210] (((((int)in[ 8 + inPos]) & 255) >>> 2) & 7); out[23 + outPos] = // [765_____] // [210] (((((int)in[ 8 + inPos]) & 255) >>> 5) & 7); out[24 + outPos] = // [_____210] // [210] (((((int)in[ 9 + inPos]) & 255) ) & 7); out[25 + outPos] = // [__543___] // [210] (((((int)in[ 9 + inPos]) & 255) >>> 3) & 7); out[26 + outPos] = // [76______] // [_10] (((((int)in[ 9 + inPos]) & 255) >>> 6) & 7) | // [_______0] // [2__] (((((int)in[10 + inPos]) & 255) << 2) & 7); out[27 + outPos] = // [____321_] // [210] (((((int)in[10 + inPos]) & 255) >>> 1) & 7); out[28 + outPos] = // [_654____] // [210] (((((int)in[10 + inPos]) & 255) >>> 4) & 7); out[29 + outPos] = // [7_______] // [__0] (((((int)in[10 + inPos]) & 255) >>> 7) & 7) | // [______10] // [21_] (((((int)in[11 + inPos]) & 255) << 1) & 7); out[30 + outPos] = // [___432__] // [210] (((((int)in[11 + inPos]) & 255) >>> 2) & 7); out[31 + outPos] = // [765_____] // [210] (((((int)in[11 + inPos]) & 255) >>> 5) & 7); } } private static final class Packer4 extends BytePacker { private Packer4() { super(4); } public final void pack8Values(final int[] in, final int inPos, final byte[] out, final int outPos) { out[ 0 + outPos] = (byte)(( // [____3210] // [3210] ((in[ 0 + inPos] & 15)) | // [7654____] // [3210] ((in[ 1 + inPos] & 15) << 4)) & 255); out[ 1 + outPos] = (byte)(( // [____3210] // [3210] ((in[ 2 + inPos] & 15)) | // [7654____] // [3210] ((in[ 3 + inPos] & 15) << 4)) & 255); out[ 2 + outPos] = (byte)(( // [____3210] // [3210] ((in[ 4 + inPos] & 15)) | // [7654____] // [3210] ((in[ 5 + inPos] & 15) << 4)) & 255); out[ 3 + outPos] = (byte)(( // [____3210] // [3210] ((in[ 6 + inPos] & 15)) | // [7654____] // [3210] ((in[ 7 + inPos] & 15) << 4)) & 255); } public final void pack32Values(final int[] in, final int inPos, final byte[] out, final int outPos) { out[ 0 + outPos] = (byte)(( // [____3210] // [3210] ((in[ 0 + inPos] & 15)) | // [7654____] // [3210] ((in[ 1 + inPos] & 15) << 4)) & 255); out[ 1 + outPos] = (byte)(( // [____3210] // [3210] ((in[ 2 + inPos] & 15)) | // [7654____] // [3210] ((in[ 3 + inPos] & 15) << 4)) & 255); out[ 2 + outPos] = (byte)(( // [____3210] // [3210] ((in[ 4 + inPos] & 15)) | // [7654____] // [3210] ((in[ 5 + inPos] & 15) << 4)) & 255); out[ 3 + outPos] = (byte)(( // [____3210] // [3210] ((in[ 6 + inPos] & 15)) | // [7654____] // [3210] ((in[ 7 + inPos] & 15) << 4)) & 255); out[ 4 + outPos] = (byte)(( // [____3210] // [3210] ((in[ 8 + inPos] & 15)) | // [7654____] // [3210] ((in[ 9 + inPos] & 15) << 4)) & 255); out[ 5 + outPos] = (byte)(( // [____3210] // [3210] ((in[10 + inPos] & 15)) | // [7654____] // [3210] ((in[11 + inPos] & 15) << 4)) & 255); out[ 6 + outPos] = (byte)(( // [____3210] // [3210] ((in[12 + inPos] & 15)) | // [7654____] // [3210] ((in[13 + inPos] & 15) << 4)) & 255); out[ 7 + outPos] = (byte)(( // [____3210] // [3210] ((in[14 + inPos] & 15)) | // [7654____] // [3210] ((in[15 + inPos] & 15) << 4)) & 255); out[ 8 + outPos] = (byte)(( // [____3210] // [3210] ((in[16 + inPos] & 15)) | // [7654____] // [3210] ((in[17 + inPos] & 15) << 4)) & 255); out[ 9 + outPos] = (byte)(( // [____3210] // [3210] ((in[18 + inPos] & 15)) | // [7654____] // [3210] ((in[19 + inPos] & 15) << 4)) & 255); out[10 + outPos] = (byte)(( // [____3210] // [3210] ((in[20 + inPos] & 15)) | // [7654____] // [3210] ((in[21 + inPos] & 15) << 4)) & 255); out[11 + outPos] = (byte)(( // [____3210] // [3210] ((in[22 + inPos] & 15)) | // [7654____] // [3210] ((in[23 + inPos] & 15) << 4)) & 255); out[12 + outPos] = (byte)(( // [____3210] // [3210] ((in[24 + inPos] & 15)) | // [7654____] // [3210] ((in[25 + inPos] & 15) << 4)) & 255); out[13 + outPos] = (byte)(( // [____3210] // [3210] ((in[26 + inPos] & 15)) | // [7654____] // [3210] ((in[27 + inPos] & 15) << 4)) & 255); out[14 + outPos] = (byte)(( // [____3210] // [3210] ((in[28 + inPos] & 15)) | // [7654____] // [3210] ((in[29 + inPos] & 15) << 4)) & 255); out[15 + outPos] = (byte)(( // [____3210] // [3210] ((in[30 + inPos] & 15)) | // [7654____] // [3210] ((in[31 + inPos] & 15) << 4)) & 255); } public final void unpack8Values(final byte[] in, final int inPos, final int[] out, final int outPos) { out[ 0 + outPos] = // [____3210] // [3210] (((((int)in[ 0 + inPos]) & 255) ) & 15); out[ 1 + outPos] = // [7654____] // [3210] (((((int)in[ 0 + inPos]) & 255) >>> 4) & 15); out[ 2 + outPos] = // [____3210] // [3210] (((((int)in[ 1 + inPos]) & 255) ) & 15); out[ 3 + outPos] = // [7654____] // [3210] (((((int)in[ 1 + inPos]) & 255) >>> 4) & 15); out[ 4 + outPos] = // [____3210] // [3210] (((((int)in[ 2 + inPos]) & 255) ) & 15); out[ 5 + outPos] = // [7654____] // [3210] (((((int)in[ 2 + inPos]) & 255) >>> 4) & 15); out[ 6 + outPos] = // [____3210] // [3210] (((((int)in[ 3 + inPos]) & 255) ) & 15); out[ 7 + outPos] = // [7654____] // [3210] (((((int)in[ 3 + inPos]) & 255) >>> 4) & 15); } public final void unpack32Values(final byte[] in, final int inPos, final int[] out, final int outPos) { out[ 0 + outPos] = // [____3210] // [3210] (((((int)in[ 0 + inPos]) & 255) ) & 15); out[ 1 + outPos] = // [7654____] // [3210] (((((int)in[ 0 + inPos]) & 255) >>> 4) & 15); out[ 2 + outPos] = // [____3210] // [3210] (((((int)in[ 1 + inPos]) & 255) ) & 15); out[ 3 + outPos] = // [7654____] // [3210] (((((int)in[ 1 + inPos]) & 255) >>> 4) & 15); out[ 4 + outPos] = // [____3210] // [3210] (((((int)in[ 2 + inPos]) & 255) ) & 15); out[ 5 + outPos] = // [7654____] // [3210] (((((int)in[ 2 + inPos]) & 255) >>> 4) & 15); out[ 6 + outPos] = // [____3210] // [3210] (((((int)in[ 3 + inPos]) & 255) ) & 15); out[ 7 + outPos] = // [7654____] // [3210] (((((int)in[ 3 + inPos]) & 255) >>> 4) & 15); out[ 8 + outPos] = // [____3210] // [3210] (((((int)in[ 4 + inPos]) & 255) ) & 15); out[ 9 + outPos] = // [7654____] // [3210] (((((int)in[ 4 + inPos]) & 255) >>> 4) & 15); out[10 + outPos] = // [____3210] // [3210] (((((int)in[ 5 + inPos]) & 255) ) & 15); out[11 + outPos] = // [7654____] // [3210] (((((int)in[ 5 + inPos]) & 255) >>> 4) & 15); out[12 + outPos] = // [____3210] // [3210] (((((int)in[ 6 + inPos]) & 255) ) & 15); out[13 + outPos] = // [7654____] // [3210] (((((int)in[ 6 + inPos]) & 255) >>> 4) & 15); out[14 + outPos] = // [____3210] // [3210] (((((int)in[ 7 + inPos]) & 255) ) & 15); out[15 + outPos] = // [7654____] // [3210] (((((int)in[ 7 + inPos]) & 255) >>> 4) & 15); out[16 + outPos] = // [____3210] // [3210] (((((int)in[ 8 + inPos]) & 255) ) & 15); out[17 + outPos] = // [7654____] // [3210] (((((int)in[ 8 + inPos]) & 255) >>> 4) & 15); out[18 + outPos] = // [____3210] // [3210] (((((int)in[ 9 + inPos]) & 255) ) & 15); out[19 + outPos] = // [7654____] // [3210] (((((int)in[ 9 + inPos]) & 255) >>> 4) & 15); out[20 + outPos] = // [____3210] // [3210] (((((int)in[10 + inPos]) & 255) ) & 15); out[21 + outPos] = // [7654____] // [3210] (((((int)in[10 + inPos]) & 255) >>> 4) & 15); out[22 + outPos] = // [____3210] // [3210] (((((int)in[11 + inPos]) & 255) ) & 15); out[23 + outPos] = // [7654____] // [3210] (((((int)in[11 + inPos]) & 255) >>> 4) & 15); out[24 + outPos] = // [____3210] // [3210] (((((int)in[12 + inPos]) & 255) ) & 15); out[25 + outPos] = // [7654____] // [3210] (((((int)in[12 + inPos]) & 255) >>> 4) & 15); out[26 + outPos] = // [____3210] // [3210] (((((int)in[13 + inPos]) & 255) ) & 15); out[27 + outPos] = // [7654____] // [3210] (((((int)in[13 + inPos]) & 255) >>> 4) & 15); out[28 + outPos] = // [____3210] // [3210] (((((int)in[14 + inPos]) & 255) ) & 15); out[29 + outPos] = // [7654____] // [3210] (((((int)in[14 + inPos]) & 255) >>> 4) & 15); out[30 + outPos] = // [____3210] // [3210] (((((int)in[15 + inPos]) & 255) ) & 15); out[31 + outPos] = // [7654____] // [3210] (((((int)in[15 + inPos]) & 255) >>> 4) & 15); } } private static final class Packer5 extends BytePacker { private Packer5() { super(5); } public final void pack8Values(final int[] in, final int inPos, final byte[] out, final int outPos) { out[ 0 + outPos] = (byte)(( // [___43210] // [43210] ((in[ 0 + inPos] & 31)) | // [765_____] // [__210] ((in[ 1 + inPos] & 31) << 5)) & 255); out[ 1 + outPos] = (byte)(( // [______10] // [43___] ((in[ 1 + inPos] & 31) >>> 3) | // [_65432__] // [43210] ((in[ 2 + inPos] & 31) << 2) | // [7_______] // [____0] ((in[ 3 + inPos] & 31) << 7)) & 255); out[ 2 + outPos] = (byte)(( // [____3210] // [4321_] ((in[ 3 + inPos] & 31) >>> 1) | // [7654____] // [_3210] ((in[ 4 + inPos] & 31) << 4)) & 255); out[ 3 + outPos] = (byte)(( // [_______0] // [4____] ((in[ 4 + inPos] & 31) >>> 4) | // [__54321_] // [43210] ((in[ 5 + inPos] & 31) << 1) | // [76______] // [___10] ((in[ 6 + inPos] & 31) << 6)) & 255); out[ 4 + outPos] = (byte)(( // [_____210] // [432__] ((in[ 6 + inPos] & 31) >>> 2) | // [76543___] // [43210] ((in[ 7 + inPos] & 31) << 3)) & 255); } public final void pack32Values(final int[] in, final int inPos, final byte[] out, final int outPos) { out[ 0 + outPos] = (byte)(( // [___43210] // [43210] ((in[ 0 + inPos] & 31)) | // [765_____] // [__210] ((in[ 1 + inPos] & 31) << 5)) & 255); out[ 1 + outPos] = (byte)(( // [______10] // [43___] ((in[ 1 + inPos] & 31) >>> 3) | // [_65432__] // [43210] ((in[ 2 + inPos] & 31) << 2) | // [7_______] // [____0] ((in[ 3 + inPos] & 31) << 7)) & 255); out[ 2 + outPos] = (byte)(( // [____3210] // [4321_] ((in[ 3 + inPos] & 31) >>> 1) | // [7654____] // [_3210] ((in[ 4 + inPos] & 31) << 4)) & 255); out[ 3 + outPos] = (byte)(( // [_______0] // [4____] ((in[ 4 + inPos] & 31) >>> 4) | // [__54321_] // [43210] ((in[ 5 + inPos] & 31) << 1) | // [76______] // [___10] ((in[ 6 + inPos] & 31) << 6)) & 255); out[ 4 + outPos] = (byte)(( // [_____210] // [432__] ((in[ 6 + inPos] & 31) >>> 2) | // [76543___] // [43210] ((in[ 7 + inPos] & 31) << 3)) & 255); out[ 5 + outPos] = (byte)(( // [___43210] // [43210] ((in[ 8 + inPos] & 31)) | // [765_____] // [__210] ((in[ 9 + inPos] & 31) << 5)) & 255); out[ 6 + outPos] = (byte)(( // [______10] // [43___] ((in[ 9 + inPos] & 31) >>> 3) | // [_65432__] // [43210] ((in[10 + inPos] & 31) << 2) | // [7_______] // [____0] ((in[11 + inPos] & 31) << 7)) & 255); out[ 7 + outPos] = (byte)(( // [____3210] // [4321_] ((in[11 + inPos] & 31) >>> 1) | // [7654____] // [_3210] ((in[12 + inPos] & 31) << 4)) & 255); out[ 8 + outPos] = (byte)(( // [_______0] // [4____] ((in[12 + inPos] & 31) >>> 4) | // [__54321_] // [43210] ((in[13 + inPos] & 31) << 1) | // [76______] // [___10] ((in[14 + inPos] & 31) << 6)) & 255); out[ 9 + outPos] = (byte)(( // [_____210] // [432__] ((in[14 + inPos] & 31) >>> 2) | // [76543___] // [43210] ((in[15 + inPos] & 31) << 3)) & 255); out[10 + outPos] = (byte)(( // [___43210] // [43210] ((in[16 + inPos] & 31)) | // [765_____] // [__210] ((in[17 + inPos] & 31) << 5)) & 255); out[11 + outPos] = (byte)(( // [______10] // [43___] ((in[17 + inPos] & 31) >>> 3) | // [_65432__] // [43210] ((in[18 + inPos] & 31) << 2) | // [7_______] // [____0] ((in[19 + inPos] & 31) << 7)) & 255); out[12 + outPos] = (byte)(( // [____3210] // [4321_] ((in[19 + inPos] & 31) >>> 1) | // [7654____] // [_3210] ((in[20 + inPos] & 31) << 4)) & 255); out[13 + outPos] = (byte)(( // [_______0] // [4____] ((in[20 + inPos] & 31) >>> 4) | // [__54321_] // [43210] ((in[21 + inPos] & 31) << 1) | // [76______] // [___10] ((in[22 + inPos] & 31) << 6)) & 255); out[14 + outPos] = (byte)(( // [_____210] // [432__] ((in[22 + inPos] & 31) >>> 2) | // [76543___] // [43210] ((in[23 + inPos] & 31) << 3)) & 255); out[15 + outPos] = (byte)(( // [___43210] // [43210] ((in[24 + inPos] & 31)) | // [765_____] // [__210] ((in[25 + inPos] & 31) << 5)) & 255); out[16 + outPos] = (byte)(( // [______10] // [43___] ((in[25 + inPos] & 31) >>> 3) | // [_65432__] // [43210] ((in[26 + inPos] & 31) << 2) | // [7_______] // [____0] ((in[27 + inPos] & 31) << 7)) & 255); out[17 + outPos] = (byte)(( // [____3210] // [4321_] ((in[27 + inPos] & 31) >>> 1) | // [7654____] // [_3210] ((in[28 + inPos] & 31) << 4)) & 255); out[18 + outPos] = (byte)(( // [_______0] // [4____] ((in[28 + inPos] & 31) >>> 4) | // [__54321_] // [43210] ((in[29 + inPos] & 31) << 1) | // [76______] // [___10] ((in[30 + inPos] & 31) << 6)) & 255); out[19 + outPos] = (byte)(( // [_____210] // [432__] ((in[30 + inPos] & 31) >>> 2) | // [76543___] // [43210] ((in[31 + inPos] & 31) << 3)) & 255); } public final void unpack8Values(final byte[] in, final int inPos, final int[] out, final int outPos) { out[ 0 + outPos] = // [___43210] // [43210] (((((int)in[ 0 + inPos]) & 255) ) & 31); out[ 1 + outPos] = // [765_____] // [__210] (((((int)in[ 0 + inPos]) & 255) >>> 5) & 31) | // [______10] // [43___] (((((int)in[ 1 + inPos]) & 255) << 3) & 31); out[ 2 + outPos] = // [_65432__] // [43210] (((((int)in[ 1 + inPos]) & 255) >>> 2) & 31); out[ 3 + outPos] = // [7_______] // [____0] (((((int)in[ 1 + inPos]) & 255) >>> 7) & 31) | // [____3210] // [4321_] (((((int)in[ 2 + inPos]) & 255) << 1) & 31); out[ 4 + outPos] = // [7654____] // [_3210] (((((int)in[ 2 + inPos]) & 255) >>> 4) & 31) | // [_______0] // [4____] (((((int)in[ 3 + inPos]) & 255) << 4) & 31); out[ 5 + outPos] = // [__54321_] // [43210] (((((int)in[ 3 + inPos]) & 255) >>> 1) & 31); out[ 6 + outPos] = // [76______] // [___10] (((((int)in[ 3 + inPos]) & 255) >>> 6) & 31) | // [_____210] // [432__] (((((int)in[ 4 + inPos]) & 255) << 2) & 31); out[ 7 + outPos] = // [76543___] // [43210] (((((int)in[ 4 + inPos]) & 255) >>> 3) & 31); } public final void unpack32Values(final byte[] in, final int inPos, final int[] out, final int outPos) { out[ 0 + outPos] = // [___43210] // [43210] (((((int)in[ 0 + inPos]) & 255) ) & 31); out[ 1 + outPos] = // [765_____] // [__210] (((((int)in[ 0 + inPos]) & 255) >>> 5) & 31) | // [______10] // [43___] (((((int)in[ 1 + inPos]) & 255) << 3) & 31); out[ 2 + outPos] = // [_65432__] // [43210] (((((int)in[ 1 + inPos]) & 255) >>> 2) & 31); out[ 3 + outPos] = // [7_______] // [____0] (((((int)in[ 1 + inPos]) & 255) >>> 7) & 31) | // [____3210] // [4321_] (((((int)in[ 2 + inPos]) & 255) << 1) & 31); out[ 4 + outPos] = // [7654____] // [_3210] (((((int)in[ 2 + inPos]) & 255) >>> 4) & 31) | // [_______0] // [4____] (((((int)in[ 3 + inPos]) & 255) << 4) & 31); out[ 5 + outPos] = // [__54321_] // [43210] (((((int)in[ 3 + inPos]) & 255) >>> 1) & 31); out[ 6 + outPos] = // [76______] // [___10] (((((int)in[ 3 + inPos]) & 255) >>> 6) & 31) | // [_____210] // [432__] (((((int)in[ 4 + inPos]) & 255) << 2) & 31); out[ 7 + outPos] = // [76543___] // [43210] (((((int)in[ 4 + inPos]) & 255) >>> 3) & 31); out[ 8 + outPos] = // [___43210] // [43210] (((((int)in[ 5 + inPos]) & 255) ) & 31); out[ 9 + outPos] = // [765_____] // [__210] (((((int)in[ 5 + inPos]) & 255) >>> 5) & 31) | // [______10] // [43___] (((((int)in[ 6 + inPos]) & 255) << 3) & 31); out[10 + outPos] = // [_65432__] // [43210] (((((int)in[ 6 + inPos]) & 255) >>> 2) & 31); out[11 + outPos] = // [7_______] // [____0] (((((int)in[ 6 + inPos]) & 255) >>> 7) & 31) | // [____3210] // [4321_] (((((int)in[ 7 + inPos]) & 255) << 1) & 31); out[12 + outPos] = // [7654____] // [_3210] (((((int)in[ 7 + inPos]) & 255) >>> 4) & 31) | // [_______0] // [4____] (((((int)in[ 8 + inPos]) & 255) << 4) & 31); out[13 + outPos] = // [__54321_] // [43210] (((((int)in[ 8 + inPos]) & 255) >>> 1) & 31); out[14 + outPos] = // [76______] // [___10] (((((int)in[ 8 + inPos]) & 255) >>> 6) & 31) | // [_____210] // [432__] (((((int)in[ 9 + inPos]) & 255) << 2) & 31); out[15 + outPos] = // [76543___] // [43210] (((((int)in[ 9 + inPos]) & 255) >>> 3) & 31); out[16 + outPos] = // [___43210] // [43210] (((((int)in[10 + inPos]) & 255) ) & 31); out[17 + outPos] = // [765_____] // [__210] (((((int)in[10 + inPos]) & 255) >>> 5) & 31) | // [______10] // [43___] (((((int)in[11 + inPos]) & 255) << 3) & 31); out[18 + outPos] = // [_65432__] // [43210] (((((int)in[11 + inPos]) & 255) >>> 2) & 31); out[19 + outPos] = // [7_______] // [____0] (((((int)in[11 + inPos]) & 255) >>> 7) & 31) | // [____3210] // [4321_] (((((int)in[12 + inPos]) & 255) << 1) & 31); out[20 + outPos] = // [7654____] // [_3210] (((((int)in[12 + inPos]) & 255) >>> 4) & 31) | // [_______0] // [4____] (((((int)in[13 + inPos]) & 255) << 4) & 31); out[21 + outPos] = // [__54321_] // [43210] (((((int)in[13 + inPos]) & 255) >>> 1) & 31); out[22 + outPos] = // [76______] // [___10] (((((int)in[13 + inPos]) & 255) >>> 6) & 31) | // [_____210] // [432__] (((((int)in[14 + inPos]) & 255) << 2) & 31); out[23 + outPos] = // [76543___] // [43210] (((((int)in[14 + inPos]) & 255) >>> 3) & 31); out[24 + outPos] = // [___43210] // [43210] (((((int)in[15 + inPos]) & 255) ) & 31); out[25 + outPos] = // [765_____] // [__210] (((((int)in[15 + inPos]) & 255) >>> 5) & 31) | // [______10] // [43___] (((((int)in[16 + inPos]) & 255) << 3) & 31); out[26 + outPos] = // [_65432__] // [43210] (((((int)in[16 + inPos]) & 255) >>> 2) & 31); out[27 + outPos] = // [7_______] // [____0] (((((int)in[16 + inPos]) & 255) >>> 7) & 31) | // [____3210] // [4321_] (((((int)in[17 + inPos]) & 255) << 1) & 31); out[28 + outPos] = // [7654____] // [_3210] (((((int)in[17 + inPos]) & 255) >>> 4) & 31) | // [_______0] // [4____] (((((int)in[18 + inPos]) & 255) << 4) & 31); out[29 + outPos] = // [__54321_] // [43210] (((((int)in[18 + inPos]) & 255) >>> 1) & 31); out[30 + outPos] = // [76______] // [___10] (((((int)in[18 + inPos]) & 255) >>> 6) & 31) | // [_____210] // [432__] (((((int)in[19 + inPos]) & 255) << 2) & 31); out[31 + outPos] = // [76543___] // [43210] (((((int)in[19 + inPos]) & 255) >>> 3) & 31); } } private static final class Packer6 extends BytePacker { private Packer6() { super(6); } public final void pack8Values(final int[] in, final int inPos, final byte[] out, final int outPos) { out[ 0 + outPos] = (byte)(( // [__543210] // [543210] ((in[ 0 + inPos] & 63)) | // [76______] // [____10] ((in[ 1 + inPos] & 63) << 6)) & 255); out[ 1 + outPos] = (byte)(( // [____3210] // [5432__] ((in[ 1 + inPos] & 63) >>> 2) | // [7654____] // [__3210] ((in[ 2 + inPos] & 63) << 4)) & 255); out[ 2 + outPos] = (byte)(( // [______10] // [54____] ((in[ 2 + inPos] & 63) >>> 4) | // [765432__] // [543210] ((in[ 3 + inPos] & 63) << 2)) & 255); out[ 3 + outPos] = (byte)(( // [__543210] // [543210] ((in[ 4 + inPos] & 63)) | // [76______] // [____10] ((in[ 5 + inPos] & 63) << 6)) & 255); out[ 4 + outPos] = (byte)(( // [____3210] // [5432__] ((in[ 5 + inPos] & 63) >>> 2) | // [7654____] // [__3210] ((in[ 6 + inPos] & 63) << 4)) & 255); out[ 5 + outPos] = (byte)(( // [______10] // [54____] ((in[ 6 + inPos] & 63) >>> 4) | // [765432__] // [543210] ((in[ 7 + inPos] & 63) << 2)) & 255); } public final void pack32Values(final int[] in, final int inPos, final byte[] out, final int outPos) { out[ 0 + outPos] = (byte)(( // [__543210] // [543210] ((in[ 0 + inPos] & 63)) | // [76______] // [____10] ((in[ 1 + inPos] & 63) << 6)) & 255); out[ 1 + outPos] = (byte)(( // [____3210] // [5432__] ((in[ 1 + inPos] & 63) >>> 2) | // [7654____] // [__3210] ((in[ 2 + inPos] & 63) << 4)) & 255); out[ 2 + outPos] = (byte)(( // [______10] // [54____] ((in[ 2 + inPos] & 63) >>> 4) | // [765432__] // [543210] ((in[ 3 + inPos] & 63) << 2)) & 255); out[ 3 + outPos] = (byte)(( // [__543210] // [543210] ((in[ 4 + inPos] & 63)) | // [76______] // [____10] ((in[ 5 + inPos] & 63) << 6)) & 255); out[ 4 + outPos] = (byte)(( // [____3210] // [5432__] ((in[ 5 + inPos] & 63) >>> 2) | // [7654____] // [__3210] ((in[ 6 + inPos] & 63) << 4)) & 255); out[ 5 + outPos] = (byte)(( // [______10] // [54____] ((in[ 6 + inPos] & 63) >>> 4) | // [765432__] // [543210] ((in[ 7 + inPos] & 63) << 2)) & 255); out[ 6 + outPos] = (byte)(( // [__543210] // [543210] ((in[ 8 + inPos] & 63)) | // [76______] // [____10] ((in[ 9 + inPos] & 63) << 6)) & 255); out[ 7 + outPos] = (byte)(( // [____3210] // [5432__] ((in[ 9 + inPos] & 63) >>> 2) | // [7654____] // [__3210] ((in[10 + inPos] & 63) << 4)) & 255); out[ 8 + outPos] = (byte)(( // [______10] // [54____] ((in[10 + inPos] & 63) >>> 4) | // [765432__] // [543210] ((in[11 + inPos] & 63) << 2)) & 255); out[ 9 + outPos] = (byte)(( // [__543210] // [543210] ((in[12 + inPos] & 63)) | // [76______] // [____10] ((in[13 + inPos] & 63) << 6)) & 255); out[10 + outPos] = (byte)(( // [____3210] // [5432__] ((in[13 + inPos] & 63) >>> 2) | // [7654____] // [__3210] ((in[14 + inPos] & 63) << 4)) & 255); out[11 + outPos] = (byte)(( // [______10] // [54____] ((in[14 + inPos] & 63) >>> 4) | // [765432__] // [543210] ((in[15 + inPos] & 63) << 2)) & 255); out[12 + outPos] = (byte)(( // [__543210] // [543210] ((in[16 + inPos] & 63)) | // [76______] // [____10] ((in[17 + inPos] & 63) << 6)) & 255); out[13 + outPos] = (byte)(( // [____3210] // [5432__] ((in[17 + inPos] & 63) >>> 2) | // [7654____] // [__3210] ((in[18 + inPos] & 63) << 4)) & 255); out[14 + outPos] = (byte)(( // [______10] // [54____] ((in[18 + inPos] & 63) >>> 4) | // [765432__] // [543210] ((in[19 + inPos] & 63) << 2)) & 255); out[15 + outPos] = (byte)(( // [__543210] // [543210] ((in[20 + inPos] & 63)) | // [76______] // [____10] ((in[21 + inPos] & 63) << 6)) & 255); out[16 + outPos] = (byte)(( // [____3210] // [5432__] ((in[21 + inPos] & 63) >>> 2) | // [7654____] // [__3210] ((in[22 + inPos] & 63) << 4)) & 255); out[17 + outPos] = (byte)(( // [______10] // [54____] ((in[22 + inPos] & 63) >>> 4) | // [765432__] // [543210] ((in[23 + inPos] & 63) << 2)) & 255); out[18 + outPos] = (byte)(( // [__543210] // [543210] ((in[24 + inPos] & 63)) | // [76______] // [____10] ((in[25 + inPos] & 63) << 6)) & 255); out[19 + outPos] = (byte)(( // [____3210] // [5432__] ((in[25 + inPos] & 63) >>> 2) | // [7654____] // [__3210] ((in[26 + inPos] & 63) << 4)) & 255); out[20 + outPos] = (byte)(( // [______10] // [54____] ((in[26 + inPos] & 63) >>> 4) | // [765432__] // [543210] ((in[27 + inPos] & 63) << 2)) & 255); out[21 + outPos] = (byte)(( // [__543210] // [543210] ((in[28 + inPos] & 63)) | // [76______] // [____10] ((in[29 + inPos] & 63) << 6)) & 255); out[22 + outPos] = (byte)(( // [____3210] // [5432__] ((in[29 + inPos] & 63) >>> 2) | // [7654____] // [__3210] ((in[30 + inPos] & 63) << 4)) & 255); out[23 + outPos] = (byte)(( // [______10] // [54____] ((in[30 + inPos] & 63) >>> 4) | // [765432__] // [543210] ((in[31 + inPos] & 63) << 2)) & 255); } public final void unpack8Values(final byte[] in, final int inPos, final int[] out, final int outPos) { out[ 0 + outPos] = // [__543210] // [543210] (((((int)in[ 0 + inPos]) & 255) ) & 63); out[ 1 + outPos] = // [76______] // [____10] (((((int)in[ 0 + inPos]) & 255) >>> 6) & 63) | // [____3210] // [5432__] (((((int)in[ 1 + inPos]) & 255) << 2) & 63); out[ 2 + outPos] = // [7654____] // [__3210] (((((int)in[ 1 + inPos]) & 255) >>> 4) & 63) | // [______10] // [54____] (((((int)in[ 2 + inPos]) & 255) << 4) & 63); out[ 3 + outPos] = // [765432__] // [543210] (((((int)in[ 2 + inPos]) & 255) >>> 2) & 63); out[ 4 + outPos] = // [__543210] // [543210] (((((int)in[ 3 + inPos]) & 255) ) & 63); out[ 5 + outPos] = // [76______] // [____10] (((((int)in[ 3 + inPos]) & 255) >>> 6) & 63) | // [____3210] // [5432__] (((((int)in[ 4 + inPos]) & 255) << 2) & 63); out[ 6 + outPos] = // [7654____] // [__3210] (((((int)in[ 4 + inPos]) & 255) >>> 4) & 63) | // [______10] // [54____] (((((int)in[ 5 + inPos]) & 255) << 4) & 63); out[ 7 + outPos] = // [765432__] // [543210] (((((int)in[ 5 + inPos]) & 255) >>> 2) & 63); } public final void unpack32Values(final byte[] in, final int inPos, final int[] out, final int outPos) { out[ 0 + outPos] = // [__543210] // [543210] (((((int)in[ 0 + inPos]) & 255) ) & 63); out[ 1 + outPos] = // [76______] // [____10] (((((int)in[ 0 + inPos]) & 255) >>> 6) & 63) | // [____3210] // [5432__] (((((int)in[ 1 + inPos]) & 255) << 2) & 63); out[ 2 + outPos] = // [7654____] // [__3210] (((((int)in[ 1 + inPos]) & 255) >>> 4) & 63) | // [______10] // [54____] (((((int)in[ 2 + inPos]) & 255) << 4) & 63); out[ 3 + outPos] = // [765432__] // [543210] (((((int)in[ 2 + inPos]) & 255) >>> 2) & 63); out[ 4 + outPos] = // [__543210] // [543210] (((((int)in[ 3 + inPos]) & 255) ) & 63); out[ 5 + outPos] = // [76______] // [____10] (((((int)in[ 3 + inPos]) & 255) >>> 6) & 63) | // [____3210] // [5432__] (((((int)in[ 4 + inPos]) & 255) << 2) & 63); out[ 6 + outPos] = // [7654____] // [__3210] (((((int)in[ 4 + inPos]) & 255) >>> 4) & 63) | // [______10] // [54____] (((((int)in[ 5 + inPos]) & 255) << 4) & 63); out[ 7 + outPos] = // [765432__] // [543210] (((((int)in[ 5 + inPos]) & 255) >>> 2) & 63); out[ 8 + outPos] = // [__543210] // [543210] (((((int)in[ 6 + inPos]) & 255) ) & 63); out[ 9 + outPos] = // [76______] // [____10] (((((int)in[ 6 + inPos]) & 255) >>> 6) & 63) | // [____3210] // [5432__] (((((int)in[ 7 + inPos]) & 255) << 2) & 63); out[10 + outPos] = // [7654____] // [__3210] (((((int)in[ 7 + inPos]) & 255) >>> 4) & 63) | // [______10] // [54____] (((((int)in[ 8 + inPos]) & 255) << 4) & 63); out[11 + outPos] = // [765432__] // [543210] (((((int)in[ 8 + inPos]) & 255) >>> 2) & 63); out[12 + outPos] = // [__543210] // [543210] (((((int)in[ 9 + inPos]) & 255) ) & 63); out[13 + outPos] = // [76______] // [____10] (((((int)in[ 9 + inPos]) & 255) >>> 6) & 63) | // [____3210] // [5432__] (((((int)in[10 + inPos]) & 255) << 2) & 63); out[14 + outPos] = // [7654____] // [__3210] (((((int)in[10 + inPos]) & 255) >>> 4) & 63) | // [______10] // [54____] (((((int)in[11 + inPos]) & 255) << 4) & 63); out[15 + outPos] = // [765432__] // [543210] (((((int)in[11 + inPos]) & 255) >>> 2) & 63); out[16 + outPos] = // [__543210] // [543210] (((((int)in[12 + inPos]) & 255) ) & 63); out[17 + outPos] = // [76______] // [____10] (((((int)in[12 + inPos]) & 255) >>> 6) & 63) | // [____3210] // [5432__] (((((int)in[13 + inPos]) & 255) << 2) & 63); out[18 + outPos] = // [7654____] // [__3210] (((((int)in[13 + inPos]) & 255) >>> 4) & 63) | // [______10] // [54____] (((((int)in[14 + inPos]) & 255) << 4) & 63); out[19 + outPos] = // [765432__] // [543210] (((((int)in[14 + inPos]) & 255) >>> 2) & 63); out[20 + outPos] = // [__543210] // [543210] (((((int)in[15 + inPos]) & 255) ) & 63); out[21 + outPos] = // [76______] // [____10] (((((int)in[15 + inPos]) & 255) >>> 6) & 63) | // [____3210] // [5432__] (((((int)in[16 + inPos]) & 255) << 2) & 63); out[22 + outPos] = // [7654____] // [__3210] (((((int)in[16 + inPos]) & 255) >>> 4) & 63) | // [______10] // [54____] (((((int)in[17 + inPos]) & 255) << 4) & 63); out[23 + outPos] = // [765432__] // [543210] (((((int)in[17 + inPos]) & 255) >>> 2) & 63); out[24 + outPos] = // [__543210] // [543210] (((((int)in[18 + inPos]) & 255) ) & 63); out[25 + outPos] = // [76______] // [____10] (((((int)in[18 + inPos]) & 255) >>> 6) & 63) | // [____3210] // [5432__] (((((int)in[19 + inPos]) & 255) << 2) & 63); out[26 + outPos] = // [7654____] // [__3210] (((((int)in[19 + inPos]) & 255) >>> 4) & 63) | // [______10] // [54____] (((((int)in[20 + inPos]) & 255) << 4) & 63); out[27 + outPos] = // [765432__] // [543210] (((((int)in[20 + inPos]) & 255) >>> 2) & 63); out[28 + outPos] = // [__543210] // [543210] (((((int)in[21 + inPos]) & 255) ) & 63); out[29 + outPos] = // [76______] // [____10] (((((int)in[21 + inPos]) & 255) >>> 6) & 63) | // [____3210] // [5432__] (((((int)in[22 + inPos]) & 255) << 2) & 63); out[30 + outPos] = // [7654____] // [__3210] (((((int)in[22 + inPos]) & 255) >>> 4) & 63) | // [______10] // [54____] (((((int)in[23 + inPos]) & 255) << 4) & 63); out[31 + outPos] = // [765432__] // [543210] (((((int)in[23 + inPos]) & 255) >>> 2) & 63); } } private static final class Packer7 extends BytePacker { private Packer7() { super(7); } public final void pack8Values(final int[] in, final int inPos, final byte[] out, final int outPos) { out[ 0 + outPos] = (byte)(( // [_6543210] // [6543210] ((in[ 0 + inPos] & 127)) | // [7_______] // [______0] ((in[ 1 + inPos] & 127) << 7)) & 255); out[ 1 + outPos] = (byte)(( // [__543210] // [654321_] ((in[ 1 + inPos] & 127) >>> 1) | // [76______] // [_____10] ((in[ 2 + inPos] & 127) << 6)) & 255); out[ 2 + outPos] = (byte)(( // [___43210] // [65432__] ((in[ 2 + inPos] & 127) >>> 2) | // [765_____] // [____210] ((in[ 3 + inPos] & 127) << 5)) & 255); out[ 3 + outPos] = (byte)(( // [____3210] // [6543___] ((in[ 3 + inPos] & 127) >>> 3) | // [7654____] // [___3210] ((in[ 4 + inPos] & 127) << 4)) & 255); out[ 4 + outPos] = (byte)(( // [_____210] // [654____] ((in[ 4 + inPos] & 127) >>> 4) | // [76543___] // [__43210] ((in[ 5 + inPos] & 127) << 3)) & 255); out[ 5 + outPos] = (byte)(( // [______10] // [65_____] ((in[ 5 + inPos] & 127) >>> 5) | // [765432__] // [_543210] ((in[ 6 + inPos] & 127) << 2)) & 255); out[ 6 + outPos] = (byte)(( // [_______0] // [6______] ((in[ 6 + inPos] & 127) >>> 6) | // [7654321_] // [6543210] ((in[ 7 + inPos] & 127) << 1)) & 255); } public final void pack32Values(final int[] in, final int inPos, final byte[] out, final int outPos) { out[ 0 + outPos] = (byte)(( // [_6543210] // [6543210] ((in[ 0 + inPos] & 127)) | // [7_______] // [______0] ((in[ 1 + inPos] & 127) << 7)) & 255); out[ 1 + outPos] = (byte)(( // [__543210] // [654321_] ((in[ 1 + inPos] & 127) >>> 1) | // [76______] // [_____10] ((in[ 2 + inPos] & 127) << 6)) & 255); out[ 2 + outPos] = (byte)(( // [___43210] // [65432__] ((in[ 2 + inPos] & 127) >>> 2) | // [765_____] // [____210] ((in[ 3 + inPos] & 127) << 5)) & 255); out[ 3 + outPos] = (byte)(( // [____3210] // [6543___] ((in[ 3 + inPos] & 127) >>> 3) | // [7654____] // [___3210] ((in[ 4 + inPos] & 127) << 4)) & 255); out[ 4 + outPos] = (byte)(( // [_____210] // [654____] ((in[ 4 + inPos] & 127) >>> 4) | // [76543___] // [__43210] ((in[ 5 + inPos] & 127) << 3)) & 255); out[ 5 + outPos] = (byte)(( // [______10] // [65_____] ((in[ 5 + inPos] & 127) >>> 5) | // [765432__] // [_543210] ((in[ 6 + inPos] & 127) << 2)) & 255); out[ 6 + outPos] = (byte)(( // [_______0] // [6______] ((in[ 6 + inPos] & 127) >>> 6) | // [7654321_] // [6543210] ((in[ 7 + inPos] & 127) << 1)) & 255); out[ 7 + outPos] = (byte)(( // [_6543210] // [6543210] ((in[ 8 + inPos] & 127)) | // [7_______] // [______0] ((in[ 9 + inPos] & 127) << 7)) & 255); out[ 8 + outPos] = (byte)(( // [__543210] // [654321_] ((in[ 9 + inPos] & 127) >>> 1) | // [76______] // [_____10] ((in[10 + inPos] & 127) << 6)) & 255); out[ 9 + outPos] = (byte)(( // [___43210] // [65432__] ((in[10 + inPos] & 127) >>> 2) | // [765_____] // [____210] ((in[11 + inPos] & 127) << 5)) & 255); out[10 + outPos] = (byte)(( // [____3210] // [6543___] ((in[11 + inPos] & 127) >>> 3) | // [7654____] // [___3210] ((in[12 + inPos] & 127) << 4)) & 255); out[11 + outPos] = (byte)(( // [_____210] // [654____] ((in[12 + inPos] & 127) >>> 4) | // [76543___] // [__43210] ((in[13 + inPos] & 127) << 3)) & 255); out[12 + outPos] = (byte)(( // [______10] // [65_____] ((in[13 + inPos] & 127) >>> 5) | // [765432__] // [_543210] ((in[14 + inPos] & 127) << 2)) & 255); out[13 + outPos] = (byte)(( // [_______0] // [6______] ((in[14 + inPos] & 127) >>> 6) | // [7654321_] // [6543210] ((in[15 + inPos] & 127) << 1)) & 255); out[14 + outPos] = (byte)(( // [_6543210] // [6543210] ((in[16 + inPos] & 127)) | // [7_______] // [______0] ((in[17 + inPos] & 127) << 7)) & 255); out[15 + outPos] = (byte)(( // [__543210] // [654321_] ((in[17 + inPos] & 127) >>> 1) | // [76______] // [_____10] ((in[18 + inPos] & 127) << 6)) & 255); out[16 + outPos] = (byte)(( // [___43210] // [65432__] ((in[18 + inPos] & 127) >>> 2) | // [765_____] // [____210] ((in[19 + inPos] & 127) << 5)) & 255); out[17 + outPos] = (byte)(( // [____3210] // [6543___] ((in[19 + inPos] & 127) >>> 3) | // [7654____] // [___3210] ((in[20 + inPos] & 127) << 4)) & 255); out[18 + outPos] = (byte)(( // [_____210] // [654____] ((in[20 + inPos] & 127) >>> 4) | // [76543___] // [__43210] ((in[21 + inPos] & 127) << 3)) & 255); out[19 + outPos] = (byte)(( // [______10] // [65_____] ((in[21 + inPos] & 127) >>> 5) | // [765432__] // [_543210] ((in[22 + inPos] & 127) << 2)) & 255); out[20 + outPos] = (byte)(( // [_______0] // [6______] ((in[22 + inPos] & 127) >>> 6) | // [7654321_] // [6543210] ((in[23 + inPos] & 127) << 1)) & 255); out[21 + outPos] = (byte)(( // [_6543210] // [6543210] ((in[24 + inPos] & 127)) | // [7_______] // [______0] ((in[25 + inPos] & 127) << 7)) & 255); out[22 + outPos] = (byte)(( // [__543210] // [654321_] ((in[25 + inPos] & 127) >>> 1) | // [76______] // [_____10] ((in[26 + inPos] & 127) << 6)) & 255); out[23 + outPos] = (byte)(( // [___43210] // [65432__] ((in[26 + inPos] & 127) >>> 2) | // [765_____] // [____210] ((in[27 + inPos] & 127) << 5)) & 255); out[24 + outPos] = (byte)(( // [____3210] // [6543___] ((in[27 + inPos] & 127) >>> 3) | // [7654____] // [___3210] ((in[28 + inPos] & 127) << 4)) & 255); out[25 + outPos] = (byte)(( // [_____210] // [654____] ((in[28 + inPos] & 127) >>> 4) | // [76543___] // [__43210] ((in[29 + inPos] & 127) << 3)) & 255); out[26 + outPos] = (byte)(( // [______10] // [65_____] ((in[29 + inPos] & 127) >>> 5) | // [765432__] // [_543210] ((in[30 + inPos] & 127) << 2)) & 255); out[27 + outPos] = (byte)(( // [_______0] // [6______] ((in[30 + inPos] & 127) >>> 6) | // [7654321_] // [6543210] ((in[31 + inPos] & 127) << 1)) & 255); } public final void unpack8Values(final byte[] in, final int inPos, final int[] out, final int outPos) { out[ 0 + outPos] = // [_6543210] // [6543210] (((((int)in[ 0 + inPos]) & 255) ) & 127); out[ 1 + outPos] = // [7_______] // [______0] (((((int)in[ 0 + inPos]) & 255) >>> 7) & 127) | // [__543210] // [654321_] (((((int)in[ 1 + inPos]) & 255) << 1) & 127); out[ 2 + outPos] = // [76______] // [_____10] (((((int)in[ 1 + inPos]) & 255) >>> 6) & 127) | // [___43210] // [65432__] (((((int)in[ 2 + inPos]) & 255) << 2) & 127); out[ 3 + outPos] = // [765_____] // [____210] (((((int)in[ 2 + inPos]) & 255) >>> 5) & 127) | // [____3210] // [6543___] (((((int)in[ 3 + inPos]) & 255) << 3) & 127); out[ 4 + outPos] = // [7654____] // [___3210] (((((int)in[ 3 + inPos]) & 255) >>> 4) & 127) | // [_____210] // [654____] (((((int)in[ 4 + inPos]) & 255) << 4) & 127); out[ 5 + outPos] = // [76543___] // [__43210] (((((int)in[ 4 + inPos]) & 255) >>> 3) & 127) | // [______10] // [65_____] (((((int)in[ 5 + inPos]) & 255) << 5) & 127); out[ 6 + outPos] = // [765432__] // [_543210] (((((int)in[ 5 + inPos]) & 255) >>> 2) & 127) | // [_______0] // [6______] (((((int)in[ 6 + inPos]) & 255) << 6) & 127); out[ 7 + outPos] = // [7654321_] // [6543210] (((((int)in[ 6 + inPos]) & 255) >>> 1) & 127); } public final void unpack32Values(final byte[] in, final int inPos, final int[] out, final int outPos) { out[ 0 + outPos] = // [_6543210] // [6543210] (((((int)in[ 0 + inPos]) & 255) ) & 127); out[ 1 + outPos] = // [7_______] // [______0] (((((int)in[ 0 + inPos]) & 255) >>> 7) & 127) | // [__543210] // [654321_] (((((int)in[ 1 + inPos]) & 255) << 1) & 127); out[ 2 + outPos] = // [76______] // [_____10] (((((int)in[ 1 + inPos]) & 255) >>> 6) & 127) | // [___43210] // [65432__] (((((int)in[ 2 + inPos]) & 255) << 2) & 127); out[ 3 + outPos] = // [765_____] // [____210] (((((int)in[ 2 + inPos]) & 255) >>> 5) & 127) | // [____3210] // [6543___] (((((int)in[ 3 + inPos]) & 255) << 3) & 127); out[ 4 + outPos] = // [7654____] // [___3210] (((((int)in[ 3 + inPos]) & 255) >>> 4) & 127) | // [_____210] // [654____] (((((int)in[ 4 + inPos]) & 255) << 4) & 127); out[ 5 + outPos] = // [76543___] // [__43210] (((((int)in[ 4 + inPos]) & 255) >>> 3) & 127) | // [______10] // [65_____] (((((int)in[ 5 + inPos]) & 255) << 5) & 127); out[ 6 + outPos] = // [765432__] // [_543210] (((((int)in[ 5 + inPos]) & 255) >>> 2) & 127) | // [_______0] // [6______] (((((int)in[ 6 + inPos]) & 255) << 6) & 127); out[ 7 + outPos] = // [7654321_] // [6543210] (((((int)in[ 6 + inPos]) & 255) >>> 1) & 127); out[ 8 + outPos] = // [_6543210] // [6543210] (((((int)in[ 7 + inPos]) & 255) ) & 127); out[ 9 + outPos] = // [7_______] // [______0] (((((int)in[ 7 + inPos]) & 255) >>> 7) & 127) | // [__543210] // [654321_] (((((int)in[ 8 + inPos]) & 255) << 1) & 127); out[10 + outPos] = // [76______] // [_____10] (((((int)in[ 8 + inPos]) & 255) >>> 6) & 127) | // [___43210] // [65432__] (((((int)in[ 9 + inPos]) & 255) << 2) & 127); out[11 + outPos] = // [765_____] // [____210] (((((int)in[ 9 + inPos]) & 255) >>> 5) & 127) | // [____3210] // [6543___] (((((int)in[10 + inPos]) & 255) << 3) & 127); out[12 + outPos] = // [7654____] // [___3210] (((((int)in[10 + inPos]) & 255) >>> 4) & 127) | // [_____210] // [654____] (((((int)in[11 + inPos]) & 255) << 4) & 127); out[13 + outPos] = // [76543___] // [__43210] (((((int)in[11 + inPos]) & 255) >>> 3) & 127) | // [______10] // [65_____] (((((int)in[12 + inPos]) & 255) << 5) & 127); out[14 + outPos] = // [765432__] // [_543210] (((((int)in[12 + inPos]) & 255) >>> 2) & 127) | // [_______0] // [6______] (((((int)in[13 + inPos]) & 255) << 6) & 127); out[15 + outPos] = // [7654321_] // [6543210] (((((int)in[13 + inPos]) & 255) >>> 1) & 127); out[16 + outPos] = // [_6543210] // [6543210] (((((int)in[14 + inPos]) & 255) ) & 127); out[17 + outPos] = // [7_______] // [______0] (((((int)in[14 + inPos]) & 255) >>> 7) & 127) | // [__543210] // [654321_] (((((int)in[15 + inPos]) & 255) << 1) & 127); out[18 + outPos] = // [76______] // [_____10] (((((int)in[15 + inPos]) & 255) >>> 6) & 127) | // [___43210] // [65432__] (((((int)in[16 + inPos]) & 255) << 2) & 127); out[19 + outPos] = // [765_____] // [____210] (((((int)in[16 + inPos]) & 255) >>> 5) & 127) | // [____3210] // [6543___] (((((int)in[17 + inPos]) & 255) << 3) & 127); out[20 + outPos] = // [7654____] // [___3210] (((((int)in[17 + inPos]) & 255) >>> 4) & 127) | // [_____210] // [654____] (((((int)in[18 + inPos]) & 255) << 4) & 127); out[21 + outPos] = // [76543___] // [__43210] (((((int)in[18 + inPos]) & 255) >>> 3) & 127) | // [______10] // [65_____] (((((int)in[19 + inPos]) & 255) << 5) & 127); out[22 + outPos] = // [765432__] // [_543210] (((((int)in[19 + inPos]) & 255) >>> 2) & 127) | // [_______0] // [6______] (((((int)in[20 + inPos]) & 255) << 6) & 127); out[23 + outPos] = // [7654321_] // [6543210] (((((int)in[20 + inPos]) & 255) >>> 1) & 127); out[24 + outPos] = // [_6543210] // [6543210] (((((int)in[21 + inPos]) & 255) ) & 127); out[25 + outPos] = // [7_______] // [______0] (((((int)in[21 + inPos]) & 255) >>> 7) & 127) | // [__543210] // [654321_] (((((int)in[22 + inPos]) & 255) << 1) & 127); out[26 + outPos] = // [76______] // [_____10] (((((int)in[22 + inPos]) & 255) >>> 6) & 127) | // [___43210] // [65432__] (((((int)in[23 + inPos]) & 255) << 2) & 127); out[27 + outPos] = // [765_____] // [____210] (((((int)in[23 + inPos]) & 255) >>> 5) & 127) | // [____3210] // [6543___] (((((int)in[24 + inPos]) & 255) << 3) & 127); out[28 + outPos] = // [7654____] // [___3210] (((((int)in[24 + inPos]) & 255) >>> 4) & 127) | // [_____210] // [654____] (((((int)in[25 + inPos]) & 255) << 4) & 127); out[29 + outPos] = // [76543___] // [__43210] (((((int)in[25 + inPos]) & 255) >>> 3) & 127) | // [______10] // [65_____] (((((int)in[26 + inPos]) & 255) << 5) & 127); out[30 + outPos] = // [765432__] // [_543210] (((((int)in[26 + inPos]) & 255) >>> 2) & 127) | // [_______0] // [6______] (((((int)in[27 + inPos]) & 255) << 6) & 127); out[31 + outPos] = // [7654321_] // [6543210] (((((int)in[27 + inPos]) & 255) >>> 1) & 127); } } private static final class Packer8 extends BytePacker { private Packer8() { super(8); } public final void pack8Values(final int[] in, final int inPos, final byte[] out, final int outPos) { out[ 0 + outPos] = (byte)(( // [76543210] // [76543210] ((in[ 0 + inPos] & 255))) & 255); out[ 1 + outPos] = (byte)(( // [76543210] // [76543210] ((in[ 1 + inPos] & 255))) & 255); out[ 2 + outPos] = (byte)(( // [76543210] // [76543210] ((in[ 2 + inPos] & 255))) & 255); out[ 3 + outPos] = (byte)(( // [76543210] // [76543210] ((in[ 3 + inPos] & 255))) & 255); out[ 4 + outPos] = (byte)(( // [76543210] // [76543210] ((in[ 4 + inPos] & 255))) & 255); out[ 5 + outPos] = (byte)(( // [76543210] // [76543210] ((in[ 5 + inPos] & 255))) & 255); out[ 6 + outPos] = (byte)(( // [76543210] // [76543210] ((in[ 6 + inPos] & 255))) & 255); out[ 7 + outPos] = (byte)(( // [76543210] // [76543210] ((in[ 7 + inPos] & 255))) & 255); } public final void pack32Values(final int[] in, final int inPos, final byte[] out, final int outPos) { out[ 0 + outPos] = (byte)(( // [76543210] // [76543210] ((in[ 0 + inPos] & 255))) & 255); out[ 1 + outPos] = (byte)(( // [76543210] // [76543210] ((in[ 1 + inPos] & 255))) & 255); out[ 2 + outPos] = (byte)(( // [76543210] // [76543210] ((in[ 2 + inPos] & 255))) & 255); out[ 3 + outPos] = (byte)(( // [76543210] // [76543210] ((in[ 3 + inPos] & 255))) & 255); out[ 4 + outPos] = (byte)(( // [76543210] // [76543210] ((in[ 4 + inPos] & 255))) & 255); out[ 5 + outPos] = (byte)(( // [76543210] // [76543210] ((in[ 5 + inPos] & 255))) & 255); out[ 6 + outPos] = (byte)(( // [76543210] // [76543210] ((in[ 6 + inPos] & 255))) & 255); out[ 7 + outPos] = (byte)(( // [76543210] // [76543210] ((in[ 7 + inPos] & 255))) & 255); out[ 8 + outPos] = (byte)(( // [76543210] // [76543210] ((in[ 8 + inPos] & 255))) & 255); out[ 9 + outPos] = (byte)(( // [76543210] // [76543210] ((in[ 9 + inPos] & 255))) & 255); out[10 + outPos] = (byte)(( // [76543210] // [76543210] ((in[10 + inPos] & 255))) & 255); out[11 + outPos] = (byte)(( // [76543210] // [76543210] ((in[11 + inPos] & 255))) & 255); out[12 + outPos] = (byte)(( // [76543210] // [76543210] ((in[12 + inPos] & 255))) & 255); out[13 + outPos] = (byte)(( // [76543210] // [76543210] ((in[13 + inPos] & 255))) & 255); out[14 + outPos] = (byte)(( // [76543210] // [76543210] ((in[14 + inPos] & 255))) & 255); out[15 + outPos] = (byte)(( // [76543210] // [76543210] ((in[15 + inPos] & 255))) & 255); out[16 + outPos] = (byte)(( // [76543210] // [76543210] ((in[16 + inPos] & 255))) & 255); out[17 + outPos] = (byte)(( // [76543210] // [76543210] ((in[17 + inPos] & 255))) & 255); out[18 + outPos] = (byte)(( // [76543210] // [76543210] ((in[18 + inPos] & 255))) & 255); out[19 + outPos] = (byte)(( // [76543210] // [76543210] ((in[19 + inPos] & 255))) & 255); out[20 + outPos] = (byte)(( // [76543210] // [76543210] ((in[20 + inPos] & 255))) & 255); out[21 + outPos] = (byte)(( // [76543210] // [76543210] ((in[21 + inPos] & 255))) & 255); out[22 + outPos] = (byte)(( // [76543210] // [76543210] ((in[22 + inPos] & 255))) & 255); out[23 + outPos] = (byte)(( // [76543210] // [76543210] ((in[23 + inPos] & 255))) & 255); out[24 + outPos] = (byte)(( // [76543210] // [76543210] ((in[24 + inPos] & 255))) & 255); out[25 + outPos] = (byte)(( // [76543210] // [76543210] ((in[25 + inPos] & 255))) & 255); out[26 + outPos] = (byte)(( // [76543210] // [76543210] ((in[26 + inPos] & 255))) & 255); out[27 + outPos] = (byte)(( // [76543210] // [76543210] ((in[27 + inPos] & 255))) & 255); out[28 + outPos] = (byte)(( // [76543210] // [76543210] ((in[28 + inPos] & 255))) & 255); out[29 + outPos] = (byte)(( // [76543210] // [76543210] ((in[29 + inPos] & 255))) & 255); out[30 + outPos] = (byte)(( // [76543210] // [76543210] ((in[30 + inPos] & 255))) & 255); out[31 + outPos] = (byte)(( // [76543210] // [76543210] ((in[31 + inPos] & 255))) & 255); } public final void unpack8Values(final byte[] in, final int inPos, final int[] out, final int outPos) { out[ 0 + outPos] = // [76543210] // [76543210] (((((int)in[ 0 + inPos]) & 255) ) & 255); out[ 1 + outPos] = // [76543210] // [76543210] (((((int)in[ 1 + inPos]) & 255) ) & 255); out[ 2 + outPos] = // [76543210] // [76543210] (((((int)in[ 2 + inPos]) & 255) ) & 255); out[ 3 + outPos] = // [76543210] // [76543210] (((((int)in[ 3 + inPos]) & 255) ) & 255); out[ 4 + outPos] = // [76543210] // [76543210] (((((int)in[ 4 + inPos]) & 255) ) & 255); out[ 5 + outPos] = // [76543210] // [76543210] (((((int)in[ 5 + inPos]) & 255) ) & 255); out[ 6 + outPos] = // [76543210] // [76543210] (((((int)in[ 6 + inPos]) & 255) ) & 255); out[ 7 + outPos] = // [76543210] // [76543210] (((((int)in[ 7 + inPos]) & 255) ) & 255); } public final void unpack32Values(final byte[] in, final int inPos, final int[] out, final int outPos) { out[ 0 + outPos] = // [76543210] // [76543210] (((((int)in[ 0 + inPos]) & 255) ) & 255); out[ 1 + outPos] = // [76543210] // [76543210] (((((int)in[ 1 + inPos]) & 255) ) & 255); out[ 2 + outPos] = // [76543210] // [76543210] (((((int)in[ 2 + inPos]) & 255) ) & 255); out[ 3 + outPos] = // [76543210] // [76543210] (((((int)in[ 3 + inPos]) & 255) ) & 255); out[ 4 + outPos] = // [76543210] // [76543210] (((((int)in[ 4 + inPos]) & 255) ) & 255); out[ 5 + outPos] = // [76543210] // [76543210] (((((int)in[ 5 + inPos]) & 255) ) & 255); out[ 6 + outPos] = // [76543210] // [76543210] (((((int)in[ 6 + inPos]) & 255) ) & 255); out[ 7 + outPos] = // [76543210] // [76543210] (((((int)in[ 7 + inPos]) & 255) ) & 255); out[ 8 + outPos] = // [76543210] // [76543210] (((((int)in[ 8 + inPos]) & 255) ) & 255); out[ 9 + outPos] = // [76543210] // [76543210] (((((int)in[ 9 + inPos]) & 255) ) & 255); out[10 + outPos] = // [76543210] // [76543210] (((((int)in[10 + inPos]) & 255) ) & 255); out[11 + outPos] = // [76543210] // [76543210] (((((int)in[11 + inPos]) & 255) ) & 255); out[12 + outPos] = // [76543210] // [76543210] (((((int)in[12 + inPos]) & 255) ) & 255); out[13 + outPos] = // [76543210] // [76543210] (((((int)in[13 + inPos]) & 255) ) & 255); out[14 + outPos] = // [76543210] // [76543210] (((((int)in[14 + inPos]) & 255) ) & 255); out[15 + outPos] = // [76543210] // [76543210] (((((int)in[15 + inPos]) & 255) ) & 255); out[16 + outPos] = // [76543210] // [76543210] (((((int)in[16 + inPos]) & 255) ) & 255); out[17 + outPos] = // [76543210] // [76543210] (((((int)in[17 + inPos]) & 255) ) & 255); out[18 + outPos] = // [76543210] // [76543210] (((((int)in[18 + inPos]) & 255) ) & 255); out[19 + outPos] = // [76543210] // [76543210] (((((int)in[19 + inPos]) & 255) ) & 255); out[20 + outPos] = // [76543210] // [76543210] (((((int)in[20 + inPos]) & 255) ) & 255); out[21 + outPos] = // [76543210] // [76543210] (((((int)in[21 + inPos]) & 255) ) & 255); out[22 + outPos] = // [76543210] // [76543210] (((((int)in[22 + inPos]) & 255) ) & 255); out[23 + outPos] = // [76543210] // [76543210] (((((int)in[23 + inPos]) & 255) ) & 255); out[24 + outPos] = // [76543210] // [76543210] (((((int)in[24 + inPos]) & 255) ) & 255); out[25 + outPos] = // [76543210] // [76543210] (((((int)in[25 + inPos]) & 255) ) & 255); out[26 + outPos] = // [76543210] // [76543210] (((((int)in[26 + inPos]) & 255) ) & 255); out[27 + outPos] = // [76543210] // [76543210] (((((int)in[27 + inPos]) & 255) ) & 255); out[28 + outPos] = // [76543210] // [76543210] (((((int)in[28 + inPos]) & 255) ) & 255); out[29 + outPos] = // [76543210] // [76543210] (((((int)in[29 + inPos]) & 255) ) & 255); out[30 + outPos] = // [76543210] // [76543210] (((((int)in[30 + inPos]) & 255) ) & 255); out[31 + outPos] = // [76543210] // [76543210] (((((int)in[31 + inPos]) & 255) ) & 255); } } private static final class Packer9 extends BytePacker { private Packer9() { super(9); } public final void pack8Values(final int[] in, final int inPos, final byte[] out, final int outPos) { out[ 0 + outPos] = (byte)(( // [76543210] // [_76543210] ((in[ 0 + inPos] & 511))) & 255); out[ 1 + outPos] = (byte)(( // [_______0] // [8________] ((in[ 0 + inPos] & 511) >>> 8) | // [7654321_] // [__6543210] ((in[ 1 + inPos] & 511) << 1)) & 255); out[ 2 + outPos] = (byte)(( // [______10] // [87_______] ((in[ 1 + inPos] & 511) >>> 7) | // [765432__] // [___543210] ((in[ 2 + inPos] & 511) << 2)) & 255); out[ 3 + outPos] = (byte)(( // [_____210] // [876______] ((in[ 2 + inPos] & 511) >>> 6) | // [76543___] // [____43210] ((in[ 3 + inPos] & 511) << 3)) & 255); out[ 4 + outPos] = (byte)(( // [____3210] // [8765_____] ((in[ 3 + inPos] & 511) >>> 5) | // [7654____] // [_____3210] ((in[ 4 + inPos] & 511) << 4)) & 255); out[ 5 + outPos] = (byte)(( // [___43210] // [87654____] ((in[ 4 + inPos] & 511) >>> 4) | // [765_____] // [______210] ((in[ 5 + inPos] & 511) << 5)) & 255); out[ 6 + outPos] = (byte)(( // [__543210] // [876543___] ((in[ 5 + inPos] & 511) >>> 3) | // [76______] // [_______10] ((in[ 6 + inPos] & 511) << 6)) & 255); out[ 7 + outPos] = (byte)(( // [_6543210] // [8765432__] ((in[ 6 + inPos] & 511) >>> 2) | // [7_______] // [________0] ((in[ 7 + inPos] & 511) << 7)) & 255); out[ 8 + outPos] = (byte)(( // [76543210] // [87654321_] ((in[ 7 + inPos] & 511) >>> 1)) & 255); } public final void pack32Values(final int[] in, final int inPos, final byte[] out, final int outPos) { out[ 0 + outPos] = (byte)(( // [76543210] // [_76543210] ((in[ 0 + inPos] & 511))) & 255); out[ 1 + outPos] = (byte)(( // [_______0] // [8________] ((in[ 0 + inPos] & 511) >>> 8) | // [7654321_] // [__6543210] ((in[ 1 + inPos] & 511) << 1)) & 255); out[ 2 + outPos] = (byte)(( // [______10] // [87_______] ((in[ 1 + inPos] & 511) >>> 7) | // [765432__] // [___543210] ((in[ 2 + inPos] & 511) << 2)) & 255); out[ 3 + outPos] = (byte)(( // [_____210] // [876______] ((in[ 2 + inPos] & 511) >>> 6) | // [76543___] // [____43210] ((in[ 3 + inPos] & 511) << 3)) & 255); out[ 4 + outPos] = (byte)(( // [____3210] // [8765_____] ((in[ 3 + inPos] & 511) >>> 5) | // [7654____] // [_____3210] ((in[ 4 + inPos] & 511) << 4)) & 255); out[ 5 + outPos] = (byte)(( // [___43210] // [87654____] ((in[ 4 + inPos] & 511) >>> 4) | // [765_____] // [______210] ((in[ 5 + inPos] & 511) << 5)) & 255); out[ 6 + outPos] = (byte)(( // [__543210] // [876543___] ((in[ 5 + inPos] & 511) >>> 3) | // [76______] // [_______10] ((in[ 6 + inPos] & 511) << 6)) & 255); out[ 7 + outPos] = (byte)(( // [_6543210] // [8765432__] ((in[ 6 + inPos] & 511) >>> 2) | // [7_______] // [________0] ((in[ 7 + inPos] & 511) << 7)) & 255); out[ 8 + outPos] = (byte)(( // [76543210] // [87654321_] ((in[ 7 + inPos] & 511) >>> 1)) & 255); out[ 9 + outPos] = (byte)(( // [76543210] // [_76543210] ((in[ 8 + inPos] & 511))) & 255); out[10 + outPos] = (byte)(( // [_______0] // [8________] ((in[ 8 + inPos] & 511) >>> 8) | // [7654321_] // [__6543210] ((in[ 9 + inPos] & 511) << 1)) & 255); out[11 + outPos] = (byte)(( // [______10] // [87_______] ((in[ 9 + inPos] & 511) >>> 7) | // [765432__] // [___543210] ((in[10 + inPos] & 511) << 2)) & 255); out[12 + outPos] = (byte)(( // [_____210] // [876______] ((in[10 + inPos] & 511) >>> 6) | // [76543___] // [____43210] ((in[11 + inPos] & 511) << 3)) & 255); out[13 + outPos] = (byte)(( // [____3210] // [8765_____] ((in[11 + inPos] & 511) >>> 5) | // [7654____] // [_____3210] ((in[12 + inPos] & 511) << 4)) & 255); out[14 + outPos] = (byte)(( // [___43210] // [87654____] ((in[12 + inPos] & 511) >>> 4) | // [765_____] // [______210] ((in[13 + inPos] & 511) << 5)) & 255); out[15 + outPos] = (byte)(( // [__543210] // [876543___] ((in[13 + inPos] & 511) >>> 3) | // [76______] // [_______10] ((in[14 + inPos] & 511) << 6)) & 255); out[16 + outPos] = (byte)(( // [_6543210] // [8765432__] ((in[14 + inPos] & 511) >>> 2) | // [7_______] // [________0] ((in[15 + inPos] & 511) << 7)) & 255); out[17 + outPos] = (byte)(( // [76543210] // [87654321_] ((in[15 + inPos] & 511) >>> 1)) & 255); out[18 + outPos] = (byte)(( // [76543210] // [_76543210] ((in[16 + inPos] & 511))) & 255); out[19 + outPos] = (byte)(( // [_______0] // [8________] ((in[16 + inPos] & 511) >>> 8) | // [7654321_] // [__6543210] ((in[17 + inPos] & 511) << 1)) & 255); out[20 + outPos] = (byte)(( // [______10] // [87_______] ((in[17 + inPos] & 511) >>> 7) | // [765432__] // [___543210] ((in[18 + inPos] & 511) << 2)) & 255); out[21 + outPos] = (byte)(( // [_____210] // [876______] ((in[18 + inPos] & 511) >>> 6) | // [76543___] // [____43210] ((in[19 + inPos] & 511) << 3)) & 255); out[22 + outPos] = (byte)(( // [____3210] // [8765_____] ((in[19 + inPos] & 511) >>> 5) | // [7654____] // [_____3210] ((in[20 + inPos] & 511) << 4)) & 255); out[23 + outPos] = (byte)(( // [___43210] // [87654____] ((in[20 + inPos] & 511) >>> 4) | // [765_____] // [______210] ((in[21 + inPos] & 511) << 5)) & 255); out[24 + outPos] = (byte)(( // [__543210] // [876543___] ((in[21 + inPos] & 511) >>> 3) | // [76______] // [_______10] ((in[22 + inPos] & 511) << 6)) & 255); out[25 + outPos] = (byte)(( // [_6543210] // [8765432__] ((in[22 + inPos] & 511) >>> 2) | // [7_______] // [________0] ((in[23 + inPos] & 511) << 7)) & 255); out[26 + outPos] = (byte)(( // [76543210] // [87654321_] ((in[23 + inPos] & 511) >>> 1)) & 255); out[27 + outPos] = (byte)(( // [76543210] // [_76543210] ((in[24 + inPos] & 511))) & 255); out[28 + outPos] = (byte)(( // [_______0] // [8________] ((in[24 + inPos] & 511) >>> 8) | // [7654321_] // [__6543210] ((in[25 + inPos] & 511) << 1)) & 255); out[29 + outPos] = (byte)(( // [______10] // [87_______] ((in[25 + inPos] & 511) >>> 7) | // [765432__] // [___543210] ((in[26 + inPos] & 511) << 2)) & 255); out[30 + outPos] = (byte)(( // [_____210] // [876______] ((in[26 + inPos] & 511) >>> 6) | // [76543___] // [____43210] ((in[27 + inPos] & 511) << 3)) & 255); out[31 + outPos] = (byte)(( // [____3210] // [8765_____] ((in[27 + inPos] & 511) >>> 5) | // [7654____] // [_____3210] ((in[28 + inPos] & 511) << 4)) & 255); out[32 + outPos] = (byte)(( // [___43210] // [87654____] ((in[28 + inPos] & 511) >>> 4) | // [765_____] // [______210] ((in[29 + inPos] & 511) << 5)) & 255); out[33 + outPos] = (byte)(( // [__543210] // [876543___] ((in[29 + inPos] & 511) >>> 3) | // [76______] // [_______10] ((in[30 + inPos] & 511) << 6)) & 255); out[34 + outPos] = (byte)(( // [_6543210] // [8765432__] ((in[30 + inPos] & 511) >>> 2) | // [7_______] // [________0] ((in[31 + inPos] & 511) << 7)) & 255); out[35 + outPos] = (byte)(( // [76543210] // [87654321_] ((in[31 + inPos] & 511) >>> 1)) & 255); } public final void unpack8Values(final byte[] in, final int inPos, final int[] out, final int outPos) { out[ 0 + outPos] = // [76543210] // [_76543210] (((((int)in[ 0 + inPos]) & 255) ) & 511) | // [_______0] // [8________] (((((int)in[ 1 + inPos]) & 255) << 8) & 511); out[ 1 + outPos] = // [7654321_] // [__6543210] (((((int)in[ 1 + inPos]) & 255) >>> 1) & 511) | // [______10] // [87_______] (((((int)in[ 2 + inPos]) & 255) << 7) & 511); out[ 2 + outPos] = // [765432__] // [___543210] (((((int)in[ 2 + inPos]) & 255) >>> 2) & 511) | // [_____210] // [876______] (((((int)in[ 3 + inPos]) & 255) << 6) & 511); out[ 3 + outPos] = // [76543___] // [____43210] (((((int)in[ 3 + inPos]) & 255) >>> 3) & 511) | // [____3210] // [8765_____] (((((int)in[ 4 + inPos]) & 255) << 5) & 511); out[ 4 + outPos] = // [7654____] // [_____3210] (((((int)in[ 4 + inPos]) & 255) >>> 4) & 511) | // [___43210] // [87654____] (((((int)in[ 5 + inPos]) & 255) << 4) & 511); out[ 5 + outPos] = // [765_____] // [______210] (((((int)in[ 5 + inPos]) & 255) >>> 5) & 511) | // [__543210] // [876543___] (((((int)in[ 6 + inPos]) & 255) << 3) & 511); out[ 6 + outPos] = // [76______] // [_______10] (((((int)in[ 6 + inPos]) & 255) >>> 6) & 511) | // [_6543210] // [8765432__] (((((int)in[ 7 + inPos]) & 255) << 2) & 511); out[ 7 + outPos] = // [7_______] // [________0] (((((int)in[ 7 + inPos]) & 255) >>> 7) & 511) | // [76543210] // [87654321_] (((((int)in[ 8 + inPos]) & 255) << 1) & 511); } public final void unpack32Values(final byte[] in, final int inPos, final int[] out, final int outPos) { out[ 0 + outPos] = // [76543210] // [_76543210] (((((int)in[ 0 + inPos]) & 255) ) & 511) | // [_______0] // [8________] (((((int)in[ 1 + inPos]) & 255) << 8) & 511); out[ 1 + outPos] = // [7654321_] // [__6543210] (((((int)in[ 1 + inPos]) & 255) >>> 1) & 511) | // [______10] // [87_______] (((((int)in[ 2 + inPos]) & 255) << 7) & 511); out[ 2 + outPos] = // [765432__] // [___543210] (((((int)in[ 2 + inPos]) & 255) >>> 2) & 511) | // [_____210] // [876______] (((((int)in[ 3 + inPos]) & 255) << 6) & 511); out[ 3 + outPos] = // [76543___] // [____43210] (((((int)in[ 3 + inPos]) & 255) >>> 3) & 511) | // [____3210] // [8765_____] (((((int)in[ 4 + inPos]) & 255) << 5) & 511); out[ 4 + outPos] = // [7654____] // [_____3210] (((((int)in[ 4 + inPos]) & 255) >>> 4) & 511) | // [___43210] // [87654____] (((((int)in[ 5 + inPos]) & 255) << 4) & 511); out[ 5 + outPos] = // [765_____] // [______210] (((((int)in[ 5 + inPos]) & 255) >>> 5) & 511) | // [__543210] // [876543___] (((((int)in[ 6 + inPos]) & 255) << 3) & 511); out[ 6 + outPos] = // [76______] // [_______10] (((((int)in[ 6 + inPos]) & 255) >>> 6) & 511) | // [_6543210] // [8765432__] (((((int)in[ 7 + inPos]) & 255) << 2) & 511); out[ 7 + outPos] = // [7_______] // [________0] (((((int)in[ 7 + inPos]) & 255) >>> 7) & 511) | // [76543210] // [87654321_] (((((int)in[ 8 + inPos]) & 255) << 1) & 511); out[ 8 + outPos] = // [76543210] // [_76543210] (((((int)in[ 9 + inPos]) & 255) ) & 511) | // [_______0] // [8________] (((((int)in[10 + inPos]) & 255) << 8) & 511); out[ 9 + outPos] = // [7654321_] // [__6543210] (((((int)in[10 + inPos]) & 255) >>> 1) & 511) | // [______10] // [87_______] (((((int)in[11 + inPos]) & 255) << 7) & 511); out[10 + outPos] = // [765432__] // [___543210] (((((int)in[11 + inPos]) & 255) >>> 2) & 511) | // [_____210] // [876______] (((((int)in[12 + inPos]) & 255) << 6) & 511); out[11 + outPos] = // [76543___] // [____43210] (((((int)in[12 + inPos]) & 255) >>> 3) & 511) | // [____3210] // [8765_____] (((((int)in[13 + inPos]) & 255) << 5) & 511); out[12 + outPos] = // [7654____] // [_____3210] (((((int)in[13 + inPos]) & 255) >>> 4) & 511) | // [___43210] // [87654____] (((((int)in[14 + inPos]) & 255) << 4) & 511); out[13 + outPos] = // [765_____] // [______210] (((((int)in[14 + inPos]) & 255) >>> 5) & 511) | // [__543210] // [876543___] (((((int)in[15 + inPos]) & 255) << 3) & 511); out[14 + outPos] = // [76______] // [_______10] (((((int)in[15 + inPos]) & 255) >>> 6) & 511) | // [_6543210] // [8765432__] (((((int)in[16 + inPos]) & 255) << 2) & 511); out[15 + outPos] = // [7_______] // [________0] (((((int)in[16 + inPos]) & 255) >>> 7) & 511) | // [76543210] // [87654321_] (((((int)in[17 + inPos]) & 255) << 1) & 511); out[16 + outPos] = // [76543210] // [_76543210] (((((int)in[18 + inPos]) & 255) ) & 511) | // [_______0] // [8________] (((((int)in[19 + inPos]) & 255) << 8) & 511); out[17 + outPos] = // [7654321_] // [__6543210] (((((int)in[19 + inPos]) & 255) >>> 1) & 511) | // [______10] // [87_______] (((((int)in[20 + inPos]) & 255) << 7) & 511); out[18 + outPos] = // [765432__] // [___543210] (((((int)in[20 + inPos]) & 255) >>> 2) & 511) | // [_____210] // [876______] (((((int)in[21 + inPos]) & 255) << 6) & 511); out[19 + outPos] = // [76543___] // [____43210] (((((int)in[21 + inPos]) & 255) >>> 3) & 511) | // [____3210] // [8765_____] (((((int)in[22 + inPos]) & 255) << 5) & 511); out[20 + outPos] = // [7654____] // [_____3210] (((((int)in[22 + inPos]) & 255) >>> 4) & 511) | // [___43210] // [87654____] (((((int)in[23 + inPos]) & 255) << 4) & 511); out[21 + outPos] = // [765_____] // [______210] (((((int)in[23 + inPos]) & 255) >>> 5) & 511) | // [__543210] // [876543___] (((((int)in[24 + inPos]) & 255) << 3) & 511); out[22 + outPos] = // [76______] // [_______10] (((((int)in[24 + inPos]) & 255) >>> 6) & 511) | // [_6543210] // [8765432__] (((((int)in[25 + inPos]) & 255) << 2) & 511); out[23 + outPos] = // [7_______] // [________0] (((((int)in[25 + inPos]) & 255) >>> 7) & 511) | // [76543210] // [87654321_] (((((int)in[26 + inPos]) & 255) << 1) & 511); out[24 + outPos] = // [76543210] // [_76543210] (((((int)in[27 + inPos]) & 255) ) & 511) | // [_______0] // [8________] (((((int)in[28 + inPos]) & 255) << 8) & 511); out[25 + outPos] = // [7654321_] // [__6543210] (((((int)in[28 + inPos]) & 255) >>> 1) & 511) | // [______10] // [87_______] (((((int)in[29 + inPos]) & 255) << 7) & 511); out[26 + outPos] = // [765432__] // [___543210] (((((int)in[29 + inPos]) & 255) >>> 2) & 511) | // [_____210] // [876______] (((((int)in[30 + inPos]) & 255) << 6) & 511); out[27 + outPos] = // [76543___] // [____43210] (((((int)in[30 + inPos]) & 255) >>> 3) & 511) | // [____3210] // [8765_____] (((((int)in[31 + inPos]) & 255) << 5) & 511); out[28 + outPos] = // [7654____] // [_____3210] (((((int)in[31 + inPos]) & 255) >>> 4) & 511) | // [___43210] // [87654____] (((((int)in[32 + inPos]) & 255) << 4) & 511); out[29 + outPos] = // [765_____] // [______210] (((((int)in[32 + inPos]) & 255) >>> 5) & 511) | // [__543210] // [876543___] (((((int)in[33 + inPos]) & 255) << 3) & 511); out[30 + outPos] = // [76______] // [_______10] (((((int)in[33 + inPos]) & 255) >>> 6) & 511) | // [_6543210] // [8765432__] (((((int)in[34 + inPos]) & 255) << 2) & 511); out[31 + outPos] = // [7_______] // [________0] (((((int)in[34 + inPos]) & 255) >>> 7) & 511) | // [76543210] // [87654321_] (((((int)in[35 + inPos]) & 255) << 1) & 511); } } private static final class Packer10 extends BytePacker { private Packer10() { super(10); } public final void pack8Values(final int[] in, final int inPos, final byte[] out, final int outPos) { out[ 0 + outPos] = (byte)(( // [76543210] // [__76543210] ((in[ 0 + inPos] & 1023))) & 255); out[ 1 + outPos] = (byte)(( // [______10] // [98________] ((in[ 0 + inPos] & 1023) >>> 8) | // [765432__] // [____543210] ((in[ 1 + inPos] & 1023) << 2)) & 255); out[ 2 + outPos] = (byte)(( // [____3210] // [9876______] ((in[ 1 + inPos] & 1023) >>> 6) | // [7654____] // [______3210] ((in[ 2 + inPos] & 1023) << 4)) & 255); out[ 3 + outPos] = (byte)(( // [__543210] // [987654____] ((in[ 2 + inPos] & 1023) >>> 4) | // [76______] // [________10] ((in[ 3 + inPos] & 1023) << 6)) & 255); out[ 4 + outPos] = (byte)(( // [76543210] // [98765432__] ((in[ 3 + inPos] & 1023) >>> 2)) & 255); out[ 5 + outPos] = (byte)(( // [76543210] // [__76543210] ((in[ 4 + inPos] & 1023))) & 255); out[ 6 + outPos] = (byte)(( // [______10] // [98________] ((in[ 4 + inPos] & 1023) >>> 8) | // [765432__] // [____543210] ((in[ 5 + inPos] & 1023) << 2)) & 255); out[ 7 + outPos] = (byte)(( // [____3210] // [9876______] ((in[ 5 + inPos] & 1023) >>> 6) | // [7654____] // [______3210] ((in[ 6 + inPos] & 1023) << 4)) & 255); out[ 8 + outPos] = (byte)(( // [__543210] // [987654____] ((in[ 6 + inPos] & 1023) >>> 4) | // [76______] // [________10] ((in[ 7 + inPos] & 1023) << 6)) & 255); out[ 9 + outPos] = (byte)(( // [76543210] // [98765432__] ((in[ 7 + inPos] & 1023) >>> 2)) & 255); } public final void pack32Values(final int[] in, final int inPos, final byte[] out, final int outPos) { out[ 0 + outPos] = (byte)(( // [76543210] // [__76543210] ((in[ 0 + inPos] & 1023))) & 255); out[ 1 + outPos] = (byte)(( // [______10] // [98________] ((in[ 0 + inPos] & 1023) >>> 8) | // [765432__] // [____543210] ((in[ 1 + inPos] & 1023) << 2)) & 255); out[ 2 + outPos] = (byte)(( // [____3210] // [9876______] ((in[ 1 + inPos] & 1023) >>> 6) | // [7654____] // [______3210] ((in[ 2 + inPos] & 1023) << 4)) & 255); out[ 3 + outPos] = (byte)(( // [__543210] // [987654____] ((in[ 2 + inPos] & 1023) >>> 4) | // [76______] // [________10] ((in[ 3 + inPos] & 1023) << 6)) & 255); out[ 4 + outPos] = (byte)(( // [76543210] // [98765432__] ((in[ 3 + inPos] & 1023) >>> 2)) & 255); out[ 5 + outPos] = (byte)(( // [76543210] // [__76543210] ((in[ 4 + inPos] & 1023))) & 255); out[ 6 + outPos] = (byte)(( // [______10] // [98________] ((in[ 4 + inPos] & 1023) >>> 8) | // [765432__] // [____543210] ((in[ 5 + inPos] & 1023) << 2)) & 255); out[ 7 + outPos] = (byte)(( // [____3210] // [9876______] ((in[ 5 + inPos] & 1023) >>> 6) | // [7654____] // [______3210] ((in[ 6 + inPos] & 1023) << 4)) & 255); out[ 8 + outPos] = (byte)(( // [__543210] // [987654____] ((in[ 6 + inPos] & 1023) >>> 4) | // [76______] // [________10] ((in[ 7 + inPos] & 1023) << 6)) & 255); out[ 9 + outPos] = (byte)(( // [76543210] // [98765432__] ((in[ 7 + inPos] & 1023) >>> 2)) & 255); out[10 + outPos] = (byte)(( // [76543210] // [__76543210] ((in[ 8 + inPos] & 1023))) & 255); out[11 + outPos] = (byte)(( // [______10] // [98________] ((in[ 8 + inPos] & 1023) >>> 8) | // [765432__] // [____543210] ((in[ 9 + inPos] & 1023) << 2)) & 255); out[12 + outPos] = (byte)(( // [____3210] // [9876______] ((in[ 9 + inPos] & 1023) >>> 6) | // [7654____] // [______3210] ((in[10 + inPos] & 1023) << 4)) & 255); out[13 + outPos] = (byte)(( // [__543210] // [987654____] ((in[10 + inPos] & 1023) >>> 4) | // [76______] // [________10] ((in[11 + inPos] & 1023) << 6)) & 255); out[14 + outPos] = (byte)(( // [76543210] // [98765432__] ((in[11 + inPos] & 1023) >>> 2)) & 255); out[15 + outPos] = (byte)(( // [76543210] // [__76543210] ((in[12 + inPos] & 1023))) & 255); out[16 + outPos] = (byte)(( // [______10] // [98________] ((in[12 + inPos] & 1023) >>> 8) | // [765432__] // [____543210] ((in[13 + inPos] & 1023) << 2)) & 255); out[17 + outPos] = (byte)(( // [____3210] // [9876______] ((in[13 + inPos] & 1023) >>> 6) | // [7654____] // [______3210] ((in[14 + inPos] & 1023) << 4)) & 255); out[18 + outPos] = (byte)(( // [__543210] // [987654____] ((in[14 + inPos] & 1023) >>> 4) | // [76______] // [________10] ((in[15 + inPos] & 1023) << 6)) & 255); out[19 + outPos] = (byte)(( // [76543210] // [98765432__] ((in[15 + inPos] & 1023) >>> 2)) & 255); out[20 + outPos] = (byte)(( // [76543210] // [__76543210] ((in[16 + inPos] & 1023))) & 255); out[21 + outPos] = (byte)(( // [______10] // [98________] ((in[16 + inPos] & 1023) >>> 8) | // [765432__] // [____543210] ((in[17 + inPos] & 1023) << 2)) & 255); out[22 + outPos] = (byte)(( // [____3210] // [9876______] ((in[17 + inPos] & 1023) >>> 6) | // [7654____] // [______3210] ((in[18 + inPos] & 1023) << 4)) & 255); out[23 + outPos] = (byte)(( // [__543210] // [987654____] ((in[18 + inPos] & 1023) >>> 4) | // [76______] // [________10] ((in[19 + inPos] & 1023) << 6)) & 255); out[24 + outPos] = (byte)(( // [76543210] // [98765432__] ((in[19 + inPos] & 1023) >>> 2)) & 255); out[25 + outPos] = (byte)(( // [76543210] // [__76543210] ((in[20 + inPos] & 1023))) & 255); out[26 + outPos] = (byte)(( // [______10] // [98________] ((in[20 + inPos] & 1023) >>> 8) | // [765432__] // [____543210] ((in[21 + inPos] & 1023) << 2)) & 255); out[27 + outPos] = (byte)(( // [____3210] // [9876______] ((in[21 + inPos] & 1023) >>> 6) | // [7654____] // [______3210] ((in[22 + inPos] & 1023) << 4)) & 255); out[28 + outPos] = (byte)(( // [__543210] // [987654____] ((in[22 + inPos] & 1023) >>> 4) | // [76______] // [________10] ((in[23 + inPos] & 1023) << 6)) & 255); out[29 + outPos] = (byte)(( // [76543210] // [98765432__] ((in[23 + inPos] & 1023) >>> 2)) & 255); out[30 + outPos] = (byte)(( // [76543210] // [__76543210] ((in[24 + inPos] & 1023))) & 255); out[31 + outPos] = (byte)(( // [______10] // [98________] ((in[24 + inPos] & 1023) >>> 8) | // [765432__] // [____543210] ((in[25 + inPos] & 1023) << 2)) & 255); out[32 + outPos] = (byte)(( // [____3210] // [9876______] ((in[25 + inPos] & 1023) >>> 6) | // [7654____] // [______3210] ((in[26 + inPos] & 1023) << 4)) & 255); out[33 + outPos] = (byte)(( // [__543210] // [987654____] ((in[26 + inPos] & 1023) >>> 4) | // [76______] // [________10] ((in[27 + inPos] & 1023) << 6)) & 255); out[34 + outPos] = (byte)(( // [76543210] // [98765432__] ((in[27 + inPos] & 1023) >>> 2)) & 255); out[35 + outPos] = (byte)(( // [76543210] // [__76543210] ((in[28 + inPos] & 1023))) & 255); out[36 + outPos] = (byte)(( // [______10] // [98________] ((in[28 + inPos] & 1023) >>> 8) | // [765432__] // [____543210] ((in[29 + inPos] & 1023) << 2)) & 255); out[37 + outPos] = (byte)(( // [____3210] // [9876______] ((in[29 + inPos] & 1023) >>> 6) | // [7654____] // [______3210] ((in[30 + inPos] & 1023) << 4)) & 255); out[38 + outPos] = (byte)(( // [__543210] // [987654____] ((in[30 + inPos] & 1023) >>> 4) | // [76______] // [________10] ((in[31 + inPos] & 1023) << 6)) & 255); out[39 + outPos] = (byte)(( // [76543210] // [98765432__] ((in[31 + inPos] & 1023) >>> 2)) & 255); } public final void unpack8Values(final byte[] in, final int inPos, final int[] out, final int outPos) { out[ 0 + outPos] = // [76543210] // [__76543210] (((((int)in[ 0 + inPos]) & 255) ) & 1023) | // [______10] // [98________] (((((int)in[ 1 + inPos]) & 255) << 8) & 1023); out[ 1 + outPos] = // [765432__] // [____543210] (((((int)in[ 1 + inPos]) & 255) >>> 2) & 1023) | // [____3210] // [9876______] (((((int)in[ 2 + inPos]) & 255) << 6) & 1023); out[ 2 + outPos] = // [7654____] // [______3210] (((((int)in[ 2 + inPos]) & 255) >>> 4) & 1023) | // [__543210] // [987654____] (((((int)in[ 3 + inPos]) & 255) << 4) & 1023); out[ 3 + outPos] = // [76______] // [________10] (((((int)in[ 3 + inPos]) & 255) >>> 6) & 1023) | // [76543210] // [98765432__] (((((int)in[ 4 + inPos]) & 255) << 2) & 1023); out[ 4 + outPos] = // [76543210] // [__76543210] (((((int)in[ 5 + inPos]) & 255) ) & 1023) | // [______10] // [98________] (((((int)in[ 6 + inPos]) & 255) << 8) & 1023); out[ 5 + outPos] = // [765432__] // [____543210] (((((int)in[ 6 + inPos]) & 255) >>> 2) & 1023) | // [____3210] // [9876______] (((((int)in[ 7 + inPos]) & 255) << 6) & 1023); out[ 6 + outPos] = // [7654____] // [______3210] (((((int)in[ 7 + inPos]) & 255) >>> 4) & 1023) | // [__543210] // [987654____] (((((int)in[ 8 + inPos]) & 255) << 4) & 1023); out[ 7 + outPos] = // [76______] // [________10] (((((int)in[ 8 + inPos]) & 255) >>> 6) & 1023) | // [76543210] // [98765432__] (((((int)in[ 9 + inPos]) & 255) << 2) & 1023); } public final void unpack32Values(final byte[] in, final int inPos, final int[] out, final int outPos) { out[ 0 + outPos] = // [76543210] // [__76543210] (((((int)in[ 0 + inPos]) & 255) ) & 1023) | // [______10] // [98________] (((((int)in[ 1 + inPos]) & 255) << 8) & 1023); out[ 1 + outPos] = // [765432__] // [____543210] (((((int)in[ 1 + inPos]) & 255) >>> 2) & 1023) | // [____3210] // [9876______] (((((int)in[ 2 + inPos]) & 255) << 6) & 1023); out[ 2 + outPos] = // [7654____] // [______3210] (((((int)in[ 2 + inPos]) & 255) >>> 4) & 1023) | // [__543210] // [987654____] (((((int)in[ 3 + inPos]) & 255) << 4) & 1023); out[ 3 + outPos] = // [76______] // [________10] (((((int)in[ 3 + inPos]) & 255) >>> 6) & 1023) | // [76543210] // [98765432__] (((((int)in[ 4 + inPos]) & 255) << 2) & 1023); out[ 4 + outPos] = // [76543210] // [__76543210] (((((int)in[ 5 + inPos]) & 255) ) & 1023) | // [______10] // [98________] (((((int)in[ 6 + inPos]) & 255) << 8) & 1023); out[ 5 + outPos] = // [765432__] // [____543210] (((((int)in[ 6 + inPos]) & 255) >>> 2) & 1023) | // [____3210] // [9876______] (((((int)in[ 7 + inPos]) & 255) << 6) & 1023); out[ 6 + outPos] = // [7654____] // [______3210] (((((int)in[ 7 + inPos]) & 255) >>> 4) & 1023) | // [__543210] // [987654____] (((((int)in[ 8 + inPos]) & 255) << 4) & 1023); out[ 7 + outPos] = // [76______] // [________10] (((((int)in[ 8 + inPos]) & 255) >>> 6) & 1023) | // [76543210] // [98765432__] (((((int)in[ 9 + inPos]) & 255) << 2) & 1023); out[ 8 + outPos] = // [76543210] // [__76543210] (((((int)in[10 + inPos]) & 255) ) & 1023) | // [______10] // [98________] (((((int)in[11 + inPos]) & 255) << 8) & 1023); out[ 9 + outPos] = // [765432__] // [____543210] (((((int)in[11 + inPos]) & 255) >>> 2) & 1023) | // [____3210] // [9876______] (((((int)in[12 + inPos]) & 255) << 6) & 1023); out[10 + outPos] = // [7654____] // [______3210] (((((int)in[12 + inPos]) & 255) >>> 4) & 1023) | // [__543210] // [987654____] (((((int)in[13 + inPos]) & 255) << 4) & 1023); out[11 + outPos] = // [76______] // [________10] (((((int)in[13 + inPos]) & 255) >>> 6) & 1023) | // [76543210] // [98765432__] (((((int)in[14 + inPos]) & 255) << 2) & 1023); out[12 + outPos] = // [76543210] // [__76543210] (((((int)in[15 + inPos]) & 255) ) & 1023) | // [______10] // [98________] (((((int)in[16 + inPos]) & 255) << 8) & 1023); out[13 + outPos] = // [765432__] // [____543210] (((((int)in[16 + inPos]) & 255) >>> 2) & 1023) | // [____3210] // [9876______] (((((int)in[17 + inPos]) & 255) << 6) & 1023); out[14 + outPos] = // [7654____] // [______3210] (((((int)in[17 + inPos]) & 255) >>> 4) & 1023) | // [__543210] // [987654____] (((((int)in[18 + inPos]) & 255) << 4) & 1023); out[15 + outPos] = // [76______] // [________10] (((((int)in[18 + inPos]) & 255) >>> 6) & 1023) | // [76543210] // [98765432__] (((((int)in[19 + inPos]) & 255) << 2) & 1023); out[16 + outPos] = // [76543210] // [__76543210] (((((int)in[20 + inPos]) & 255) ) & 1023) | // [______10] // [98________] (((((int)in[21 + inPos]) & 255) << 8) & 1023); out[17 + outPos] = // [765432__] // [____543210] (((((int)in[21 + inPos]) & 255) >>> 2) & 1023) | // [____3210] // [9876______] (((((int)in[22 + inPos]) & 255) << 6) & 1023); out[18 + outPos] = // [7654____] // [______3210] (((((int)in[22 + inPos]) & 255) >>> 4) & 1023) | // [__543210] // [987654____] (((((int)in[23 + inPos]) & 255) << 4) & 1023); out[19 + outPos] = // [76______] // [________10] (((((int)in[23 + inPos]) & 255) >>> 6) & 1023) | // [76543210] // [98765432__] (((((int)in[24 + inPos]) & 255) << 2) & 1023); out[20 + outPos] = // [76543210] // [__76543210] (((((int)in[25 + inPos]) & 255) ) & 1023) | // [______10] // [98________] (((((int)in[26 + inPos]) & 255) << 8) & 1023); out[21 + outPos] = // [765432__] // [____543210] (((((int)in[26 + inPos]) & 255) >>> 2) & 1023) | // [____3210] // [9876______] (((((int)in[27 + inPos]) & 255) << 6) & 1023); out[22 + outPos] = // [7654____] // [______3210] (((((int)in[27 + inPos]) & 255) >>> 4) & 1023) | // [__543210] // [987654____] (((((int)in[28 + inPos]) & 255) << 4) & 1023); out[23 + outPos] = // [76______] // [________10] (((((int)in[28 + inPos]) & 255) >>> 6) & 1023) | // [76543210] // [98765432__] (((((int)in[29 + inPos]) & 255) << 2) & 1023); out[24 + outPos] = // [76543210] // [__76543210] (((((int)in[30 + inPos]) & 255) ) & 1023) | // [______10] // [98________] (((((int)in[31 + inPos]) & 255) << 8) & 1023); out[25 + outPos] = // [765432__] // [____543210] (((((int)in[31 + inPos]) & 255) >>> 2) & 1023) | // [____3210] // [9876______] (((((int)in[32 + inPos]) & 255) << 6) & 1023); out[26 + outPos] = // [7654____] // [______3210] (((((int)in[32 + inPos]) & 255) >>> 4) & 1023) | // [__543210] // [987654____] (((((int)in[33 + inPos]) & 255) << 4) & 1023); out[27 + outPos] = // [76______] // [________10] (((((int)in[33 + inPos]) & 255) >>> 6) & 1023) | // [76543210] // [98765432__] (((((int)in[34 + inPos]) & 255) << 2) & 1023); out[28 + outPos] = // [76543210] // [__76543210] (((((int)in[35 + inPos]) & 255) ) & 1023) | // [______10] // [98________] (((((int)in[36 + inPos]) & 255) << 8) & 1023); out[29 + outPos] = // [765432__] // [____543210] (((((int)in[36 + inPos]) & 255) >>> 2) & 1023) | // [____3210] // [9876______] (((((int)in[37 + inPos]) & 255) << 6) & 1023); out[30 + outPos] = // [7654____] // [______3210] (((((int)in[37 + inPos]) & 255) >>> 4) & 1023) | // [__543210] // [987654____] (((((int)in[38 + inPos]) & 255) << 4) & 1023); out[31 + outPos] = // [76______] // [________10] (((((int)in[38 + inPos]) & 255) >>> 6) & 1023) | // [76543210] // [98765432__] (((((int)in[39 + inPos]) & 255) << 2) & 1023); } } private static final class Packer11 extends BytePacker { private Packer11() { super(11); } public final void pack8Values(final int[] in, final int inPos, final byte[] out, final int outPos) { out[ 0 + outPos] = (byte)(( // [76543210] // [___76543210] ((in[ 0 + inPos] & 2047))) & 255); out[ 1 + outPos] = (byte)(( // [_____210] // [098________] ((in[ 0 + inPos] & 2047) >>> 8) | // [76543___] // [______43210] ((in[ 1 + inPos] & 2047) << 3)) & 255); out[ 2 + outPos] = (byte)(( // [__543210] // [098765_____] ((in[ 1 + inPos] & 2047) >>> 5) | // [76______] // [_________10] ((in[ 2 + inPos] & 2047) << 6)) & 255); out[ 3 + outPos] = (byte)(( // [76543210] // [_98765432__] ((in[ 2 + inPos] & 2047) >>> 2)) & 255); out[ 4 + outPos] = (byte)(( // [_______0] // [0__________] ((in[ 2 + inPos] & 2047) >>> 10) | // [7654321_] // [____6543210] ((in[ 3 + inPos] & 2047) << 1)) & 255); out[ 5 + outPos] = (byte)(( // [____3210] // [0987_______] ((in[ 3 + inPos] & 2047) >>> 7) | // [7654____] // [_______3210] ((in[ 4 + inPos] & 2047) << 4)) & 255); out[ 6 + outPos] = (byte)(( // [_6543210] // [0987654____] ((in[ 4 + inPos] & 2047) >>> 4) | // [7_______] // [__________0] ((in[ 5 + inPos] & 2047) << 7)) & 255); out[ 7 + outPos] = (byte)(( // [76543210] // [__87654321_] ((in[ 5 + inPos] & 2047) >>> 1)) & 255); out[ 8 + outPos] = (byte)(( // [______10] // [09_________] ((in[ 5 + inPos] & 2047) >>> 9) | // [765432__] // [_____543210] ((in[ 6 + inPos] & 2047) << 2)) & 255); out[ 9 + outPos] = (byte)(( // [___43210] // [09876______] ((in[ 6 + inPos] & 2047) >>> 6) | // [765_____] // [________210] ((in[ 7 + inPos] & 2047) << 5)) & 255); out[10 + outPos] = (byte)(( // [76543210] // [09876543___] ((in[ 7 + inPos] & 2047) >>> 3)) & 255); } public final void pack32Values(final int[] in, final int inPos, final byte[] out, final int outPos) { out[ 0 + outPos] = (byte)(( // [76543210] // [___76543210] ((in[ 0 + inPos] & 2047))) & 255); out[ 1 + outPos] = (byte)(( // [_____210] // [098________] ((in[ 0 + inPos] & 2047) >>> 8) | // [76543___] // [______43210] ((in[ 1 + inPos] & 2047) << 3)) & 255); out[ 2 + outPos] = (byte)(( // [__543210] // [098765_____] ((in[ 1 + inPos] & 2047) >>> 5) | // [76______] // [_________10] ((in[ 2 + inPos] & 2047) << 6)) & 255); out[ 3 + outPos] = (byte)(( // [76543210] // [_98765432__] ((in[ 2 + inPos] & 2047) >>> 2)) & 255); out[ 4 + outPos] = (byte)(( // [_______0] // [0__________] ((in[ 2 + inPos] & 2047) >>> 10) | // [7654321_] // [____6543210] ((in[ 3 + inPos] & 2047) << 1)) & 255); out[ 5 + outPos] = (byte)(( // [____3210] // [0987_______] ((in[ 3 + inPos] & 2047) >>> 7) | // [7654____] // [_______3210] ((in[ 4 + inPos] & 2047) << 4)) & 255); out[ 6 + outPos] = (byte)(( // [_6543210] // [0987654____] ((in[ 4 + inPos] & 2047) >>> 4) | // [7_______] // [__________0] ((in[ 5 + inPos] & 2047) << 7)) & 255); out[ 7 + outPos] = (byte)(( // [76543210] // [__87654321_] ((in[ 5 + inPos] & 2047) >>> 1)) & 255); out[ 8 + outPos] = (byte)(( // [______10] // [09_________] ((in[ 5 + inPos] & 2047) >>> 9) | // [765432__] // [_____543210] ((in[ 6 + inPos] & 2047) << 2)) & 255); out[ 9 + outPos] = (byte)(( // [___43210] // [09876______] ((in[ 6 + inPos] & 2047) >>> 6) | // [765_____] // [________210] ((in[ 7 + inPos] & 2047) << 5)) & 255); out[10 + outPos] = (byte)(( // [76543210] // [09876543___] ((in[ 7 + inPos] & 2047) >>> 3)) & 255); out[11 + outPos] = (byte)(( // [76543210] // [___76543210] ((in[ 8 + inPos] & 2047))) & 255); out[12 + outPos] = (byte)(( // [_____210] // [098________] ((in[ 8 + inPos] & 2047) >>> 8) | // [76543___] // [______43210] ((in[ 9 + inPos] & 2047) << 3)) & 255); out[13 + outPos] = (byte)(( // [__543210] // [098765_____] ((in[ 9 + inPos] & 2047) >>> 5) | // [76______] // [_________10] ((in[10 + inPos] & 2047) << 6)) & 255); out[14 + outPos] = (byte)(( // [76543210] // [_98765432__] ((in[10 + inPos] & 2047) >>> 2)) & 255); out[15 + outPos] = (byte)(( // [_______0] // [0__________] ((in[10 + inPos] & 2047) >>> 10) | // [7654321_] // [____6543210] ((in[11 + inPos] & 2047) << 1)) & 255); out[16 + outPos] = (byte)(( // [____3210] // [0987_______] ((in[11 + inPos] & 2047) >>> 7) | // [7654____] // [_______3210] ((in[12 + inPos] & 2047) << 4)) & 255); out[17 + outPos] = (byte)(( // [_6543210] // [0987654____] ((in[12 + inPos] & 2047) >>> 4) | // [7_______] // [__________0] ((in[13 + inPos] & 2047) << 7)) & 255); out[18 + outPos] = (byte)(( // [76543210] // [__87654321_] ((in[13 + inPos] & 2047) >>> 1)) & 255); out[19 + outPos] = (byte)(( // [______10] // [09_________] ((in[13 + inPos] & 2047) >>> 9) | // [765432__] // [_____543210] ((in[14 + inPos] & 2047) << 2)) & 255); out[20 + outPos] = (byte)(( // [___43210] // [09876______] ((in[14 + inPos] & 2047) >>> 6) | // [765_____] // [________210] ((in[15 + inPos] & 2047) << 5)) & 255); out[21 + outPos] = (byte)(( // [76543210] // [09876543___] ((in[15 + inPos] & 2047) >>> 3)) & 255); out[22 + outPos] = (byte)(( // [76543210] // [___76543210] ((in[16 + inPos] & 2047))) & 255); out[23 + outPos] = (byte)(( // [_____210] // [098________] ((in[16 + inPos] & 2047) >>> 8) | // [76543___] // [______43210] ((in[17 + inPos] & 2047) << 3)) & 255); out[24 + outPos] = (byte)(( // [__543210] // [098765_____] ((in[17 + inPos] & 2047) >>> 5) | // [76______] // [_________10] ((in[18 + inPos] & 2047) << 6)) & 255); out[25 + outPos] = (byte)(( // [76543210] // [_98765432__] ((in[18 + inPos] & 2047) >>> 2)) & 255); out[26 + outPos] = (byte)(( // [_______0] // [0__________] ((in[18 + inPos] & 2047) >>> 10) | // [7654321_] // [____6543210] ((in[19 + inPos] & 2047) << 1)) & 255); out[27 + outPos] = (byte)(( // [____3210] // [0987_______] ((in[19 + inPos] & 2047) >>> 7) | // [7654____] // [_______3210] ((in[20 + inPos] & 2047) << 4)) & 255); out[28 + outPos] = (byte)(( // [_6543210] // [0987654____] ((in[20 + inPos] & 2047) >>> 4) | // [7_______] // [__________0] ((in[21 + inPos] & 2047) << 7)) & 255); out[29 + outPos] = (byte)(( // [76543210] // [__87654321_] ((in[21 + inPos] & 2047) >>> 1)) & 255); out[30 + outPos] = (byte)(( // [______10] // [09_________] ((in[21 + inPos] & 2047) >>> 9) | // [765432__] // [_____543210] ((in[22 + inPos] & 2047) << 2)) & 255); out[31 + outPos] = (byte)(( // [___43210] // [09876______] ((in[22 + inPos] & 2047) >>> 6) | // [765_____] // [________210] ((in[23 + inPos] & 2047) << 5)) & 255); out[32 + outPos] = (byte)(( // [76543210] // [09876543___] ((in[23 + inPos] & 2047) >>> 3)) & 255); out[33 + outPos] = (byte)(( // [76543210] // [___76543210] ((in[24 + inPos] & 2047))) & 255); out[34 + outPos] = (byte)(( // [_____210] // [098________] ((in[24 + inPos] & 2047) >>> 8) | // [76543___] // [______43210] ((in[25 + inPos] & 2047) << 3)) & 255); out[35 + outPos] = (byte)(( // [__543210] // [098765_____] ((in[25 + inPos] & 2047) >>> 5) | // [76______] // [_________10] ((in[26 + inPos] & 2047) << 6)) & 255); out[36 + outPos] = (byte)(( // [76543210] // [_98765432__] ((in[26 + inPos] & 2047) >>> 2)) & 255); out[37 + outPos] = (byte)(( // [_______0] // [0__________] ((in[26 + inPos] & 2047) >>> 10) | // [7654321_] // [____6543210] ((in[27 + inPos] & 2047) << 1)) & 255); out[38 + outPos] = (byte)(( // [____3210] // [0987_______] ((in[27 + inPos] & 2047) >>> 7) | // [7654____] // [_______3210] ((in[28 + inPos] & 2047) << 4)) & 255); out[39 + outPos] = (byte)(( // [_6543210] // [0987654____] ((in[28 + inPos] & 2047) >>> 4) | // [7_______] // [__________0] ((in[29 + inPos] & 2047) << 7)) & 255); out[40 + outPos] = (byte)(( // [76543210] // [__87654321_] ((in[29 + inPos] & 2047) >>> 1)) & 255); out[41 + outPos] = (byte)(( // [______10] // [09_________] ((in[29 + inPos] & 2047) >>> 9) | // [765432__] // [_____543210] ((in[30 + inPos] & 2047) << 2)) & 255); out[42 + outPos] = (byte)(( // [___43210] // [09876______] ((in[30 + inPos] & 2047) >>> 6) | // [765_____] // [________210] ((in[31 + inPos] & 2047) << 5)) & 255); out[43 + outPos] = (byte)(( // [76543210] // [09876543___] ((in[31 + inPos] & 2047) >>> 3)) & 255); } public final void unpack8Values(final byte[] in, final int inPos, final int[] out, final int outPos) { out[ 0 + outPos] = // [76543210] // [___76543210] (((((int)in[ 0 + inPos]) & 255) ) & 2047) | // [_____210] // [098________] (((((int)in[ 1 + inPos]) & 255) << 8) & 2047); out[ 1 + outPos] = // [76543___] // [______43210] (((((int)in[ 1 + inPos]) & 255) >>> 3) & 2047) | // [__543210] // [098765_____] (((((int)in[ 2 + inPos]) & 255) << 5) & 2047); out[ 2 + outPos] = // [76______] // [_________10] (((((int)in[ 2 + inPos]) & 255) >>> 6) & 2047) | // [76543210] // [_98765432__] (((((int)in[ 3 + inPos]) & 255) << 2) & 2047) | // [_______0] // [0__________] (((((int)in[ 4 + inPos]) & 255) << 10) & 2047); out[ 3 + outPos] = // [7654321_] // [____6543210] (((((int)in[ 4 + inPos]) & 255) >>> 1) & 2047) | // [____3210] // [0987_______] (((((int)in[ 5 + inPos]) & 255) << 7) & 2047); out[ 4 + outPos] = // [7654____] // [_______3210] (((((int)in[ 5 + inPos]) & 255) >>> 4) & 2047) | // [_6543210] // [0987654____] (((((int)in[ 6 + inPos]) & 255) << 4) & 2047); out[ 5 + outPos] = // [7_______] // [__________0] (((((int)in[ 6 + inPos]) & 255) >>> 7) & 2047) | // [76543210] // [__87654321_] (((((int)in[ 7 + inPos]) & 255) << 1) & 2047) | // [______10] // [09_________] (((((int)in[ 8 + inPos]) & 255) << 9) & 2047); out[ 6 + outPos] = // [765432__] // [_____543210] (((((int)in[ 8 + inPos]) & 255) >>> 2) & 2047) | // [___43210] // [09876______] (((((int)in[ 9 + inPos]) & 255) << 6) & 2047); out[ 7 + outPos] = // [765_____] // [________210] (((((int)in[ 9 + inPos]) & 255) >>> 5) & 2047) | // [76543210] // [09876543___] (((((int)in[10 + inPos]) & 255) << 3) & 2047); } public final void unpack32Values(final byte[] in, final int inPos, final int[] out, final int outPos) { out[ 0 + outPos] = // [76543210] // [___76543210] (((((int)in[ 0 + inPos]) & 255) ) & 2047) | // [_____210] // [098________] (((((int)in[ 1 + inPos]) & 255) << 8) & 2047); out[ 1 + outPos] = // [76543___] // [______43210] (((((int)in[ 1 + inPos]) & 255) >>> 3) & 2047) | // [__543210] // [098765_____] (((((int)in[ 2 + inPos]) & 255) << 5) & 2047); out[ 2 + outPos] = // [76______] // [_________10] (((((int)in[ 2 + inPos]) & 255) >>> 6) & 2047) | // [76543210] // [_98765432__] (((((int)in[ 3 + inPos]) & 255) << 2) & 2047) | // [_______0] // [0__________] (((((int)in[ 4 + inPos]) & 255) << 10) & 2047); out[ 3 + outPos] = // [7654321_] // [____6543210] (((((int)in[ 4 + inPos]) & 255) >>> 1) & 2047) | // [____3210] // [0987_______] (((((int)in[ 5 + inPos]) & 255) << 7) & 2047); out[ 4 + outPos] = // [7654____] // [_______3210] (((((int)in[ 5 + inPos]) & 255) >>> 4) & 2047) | // [_6543210] // [0987654____] (((((int)in[ 6 + inPos]) & 255) << 4) & 2047); out[ 5 + outPos] = // [7_______] // [__________0] (((((int)in[ 6 + inPos]) & 255) >>> 7) & 2047) | // [76543210] // [__87654321_] (((((int)in[ 7 + inPos]) & 255) << 1) & 2047) | // [______10] // [09_________] (((((int)in[ 8 + inPos]) & 255) << 9) & 2047); out[ 6 + outPos] = // [765432__] // [_____543210] (((((int)in[ 8 + inPos]) & 255) >>> 2) & 2047) | // [___43210] // [09876______] (((((int)in[ 9 + inPos]) & 255) << 6) & 2047); out[ 7 + outPos] = // [765_____] // [________210] (((((int)in[ 9 + inPos]) & 255) >>> 5) & 2047) | // [76543210] // [09876543___] (((((int)in[10 + inPos]) & 255) << 3) & 2047); out[ 8 + outPos] = // [76543210] // [___76543210] (((((int)in[11 + inPos]) & 255) ) & 2047) | // [_____210] // [098________] (((((int)in[12 + inPos]) & 255) << 8) & 2047); out[ 9 + outPos] = // [76543___] // [______43210] (((((int)in[12 + inPos]) & 255) >>> 3) & 2047) | // [__543210] // [098765_____] (((((int)in[13 + inPos]) & 255) << 5) & 2047); out[10 + outPos] = // [76______] // [_________10] (((((int)in[13 + inPos]) & 255) >>> 6) & 2047) | // [76543210] // [_98765432__] (((((int)in[14 + inPos]) & 255) << 2) & 2047) | // [_______0] // [0__________] (((((int)in[15 + inPos]) & 255) << 10) & 2047); out[11 + outPos] = // [7654321_] // [____6543210] (((((int)in[15 + inPos]) & 255) >>> 1) & 2047) | // [____3210] // [0987_______] (((((int)in[16 + inPos]) & 255) << 7) & 2047); out[12 + outPos] = // [7654____] // [_______3210] (((((int)in[16 + inPos]) & 255) >>> 4) & 2047) | // [_6543210] // [0987654____] (((((int)in[17 + inPos]) & 255) << 4) & 2047); out[13 + outPos] = // [7_______] // [__________0] (((((int)in[17 + inPos]) & 255) >>> 7) & 2047) | // [76543210] // [__87654321_] (((((int)in[18 + inPos]) & 255) << 1) & 2047) | // [______10] // [09_________] (((((int)in[19 + inPos]) & 255) << 9) & 2047); out[14 + outPos] = // [765432__] // [_____543210] (((((int)in[19 + inPos]) & 255) >>> 2) & 2047) | // [___43210] // [09876______] (((((int)in[20 + inPos]) & 255) << 6) & 2047); out[15 + outPos] = // [765_____] // [________210] (((((int)in[20 + inPos]) & 255) >>> 5) & 2047) | // [76543210] // [09876543___] (((((int)in[21 + inPos]) & 255) << 3) & 2047); out[16 + outPos] = // [76543210] // [___76543210] (((((int)in[22 + inPos]) & 255) ) & 2047) | // [_____210] // [098________] (((((int)in[23 + inPos]) & 255) << 8) & 2047); out[17 + outPos] = // [76543___] // [______43210] (((((int)in[23 + inPos]) & 255) >>> 3) & 2047) | // [__543210] // [098765_____] (((((int)in[24 + inPos]) & 255) << 5) & 2047); out[18 + outPos] = // [76______] // [_________10] (((((int)in[24 + inPos]) & 255) >>> 6) & 2047) | // [76543210] // [_98765432__] (((((int)in[25 + inPos]) & 255) << 2) & 2047) | // [_______0] // [0__________] (((((int)in[26 + inPos]) & 255) << 10) & 2047); out[19 + outPos] = // [7654321_] // [____6543210] (((((int)in[26 + inPos]) & 255) >>> 1) & 2047) | // [____3210] // [0987_______] (((((int)in[27 + inPos]) & 255) << 7) & 2047); out[20 + outPos] = // [7654____] // [_______3210] (((((int)in[27 + inPos]) & 255) >>> 4) & 2047) | // [_6543210] // [0987654____] (((((int)in[28 + inPos]) & 255) << 4) & 2047); out[21 + outPos] = // [7_______] // [__________0] (((((int)in[28 + inPos]) & 255) >>> 7) & 2047) | // [76543210] // [__87654321_] (((((int)in[29 + inPos]) & 255) << 1) & 2047) | // [______10] // [09_________] (((((int)in[30 + inPos]) & 255) << 9) & 2047); out[22 + outPos] = // [765432__] // [_____543210] (((((int)in[30 + inPos]) & 255) >>> 2) & 2047) | // [___43210] // [09876______] (((((int)in[31 + inPos]) & 255) << 6) & 2047); out[23 + outPos] = // [765_____] // [________210] (((((int)in[31 + inPos]) & 255) >>> 5) & 2047) | // [76543210] // [09876543___] (((((int)in[32 + inPos]) & 255) << 3) & 2047); out[24 + outPos] = // [76543210] // [___76543210] (((((int)in[33 + inPos]) & 255) ) & 2047) | // [_____210] // [098________] (((((int)in[34 + inPos]) & 255) << 8) & 2047); out[25 + outPos] = // [76543___] // [______43210] (((((int)in[34 + inPos]) & 255) >>> 3) & 2047) | // [__543210] // [098765_____] (((((int)in[35 + inPos]) & 255) << 5) & 2047); out[26 + outPos] = // [76______] // [_________10] (((((int)in[35 + inPos]) & 255) >>> 6) & 2047) | // [76543210] // [_98765432__] (((((int)in[36 + inPos]) & 255) << 2) & 2047) | // [_______0] // [0__________] (((((int)in[37 + inPos]) & 255) << 10) & 2047); out[27 + outPos] = // [7654321_] // [____6543210] (((((int)in[37 + inPos]) & 255) >>> 1) & 2047) | // [____3210] // [0987_______] (((((int)in[38 + inPos]) & 255) << 7) & 2047); out[28 + outPos] = // [7654____] // [_______3210] (((((int)in[38 + inPos]) & 255) >>> 4) & 2047) | // [_6543210] // [0987654____] (((((int)in[39 + inPos]) & 255) << 4) & 2047); out[29 + outPos] = // [7_______] // [__________0] (((((int)in[39 + inPos]) & 255) >>> 7) & 2047) | // [76543210] // [__87654321_] (((((int)in[40 + inPos]) & 255) << 1) & 2047) | // [______10] // [09_________] (((((int)in[41 + inPos]) & 255) << 9) & 2047); out[30 + outPos] = // [765432__] // [_____543210] (((((int)in[41 + inPos]) & 255) >>> 2) & 2047) | // [___43210] // [09876______] (((((int)in[42 + inPos]) & 255) << 6) & 2047); out[31 + outPos] = // [765_____] // [________210] (((((int)in[42 + inPos]) & 255) >>> 5) & 2047) | // [76543210] // [09876543___] (((((int)in[43 + inPos]) & 255) << 3) & 2047); } } private static final class Packer12 extends BytePacker { private Packer12() { super(12); } public final void pack8Values(final int[] in, final int inPos, final byte[] out, final int outPos) { out[ 0 + outPos] = (byte)(( // [76543210] // [____76543210] ((in[ 0 + inPos] & 4095))) & 255); out[ 1 + outPos] = (byte)(( // [____3210] // [1098________] ((in[ 0 + inPos] & 4095) >>> 8) | // [7654____] // [________3210] ((in[ 1 + inPos] & 4095) << 4)) & 255); out[ 2 + outPos] = (byte)(( // [76543210] // [10987654____] ((in[ 1 + inPos] & 4095) >>> 4)) & 255); out[ 3 + outPos] = (byte)(( // [76543210] // [____76543210] ((in[ 2 + inPos] & 4095))) & 255); out[ 4 + outPos] = (byte)(( // [____3210] // [1098________] ((in[ 2 + inPos] & 4095) >>> 8) | // [7654____] // [________3210] ((in[ 3 + inPos] & 4095) << 4)) & 255); out[ 5 + outPos] = (byte)(( // [76543210] // [10987654____] ((in[ 3 + inPos] & 4095) >>> 4)) & 255); out[ 6 + outPos] = (byte)(( // [76543210] // [____76543210] ((in[ 4 + inPos] & 4095))) & 255); out[ 7 + outPos] = (byte)(( // [____3210] // [1098________] ((in[ 4 + inPos] & 4095) >>> 8) | // [7654____] // [________3210] ((in[ 5 + inPos] & 4095) << 4)) & 255); out[ 8 + outPos] = (byte)(( // [76543210] // [10987654____] ((in[ 5 + inPos] & 4095) >>> 4)) & 255); out[ 9 + outPos] = (byte)(( // [76543210] // [____76543210] ((in[ 6 + inPos] & 4095))) & 255); out[10 + outPos] = (byte)(( // [____3210] // [1098________] ((in[ 6 + inPos] & 4095) >>> 8) | // [7654____] // [________3210] ((in[ 7 + inPos] & 4095) << 4)) & 255); out[11 + outPos] = (byte)(( // [76543210] // [10987654____] ((in[ 7 + inPos] & 4095) >>> 4)) & 255); } public final void pack32Values(final int[] in, final int inPos, final byte[] out, final int outPos) { out[ 0 + outPos] = (byte)(( // [76543210] // [____76543210] ((in[ 0 + inPos] & 4095))) & 255); out[ 1 + outPos] = (byte)(( // [____3210] // [1098________] ((in[ 0 + inPos] & 4095) >>> 8) | // [7654____] // [________3210] ((in[ 1 + inPos] & 4095) << 4)) & 255); out[ 2 + outPos] = (byte)(( // [76543210] // [10987654____] ((in[ 1 + inPos] & 4095) >>> 4)) & 255); out[ 3 + outPos] = (byte)(( // [76543210] // [____76543210] ((in[ 2 + inPos] & 4095))) & 255); out[ 4 + outPos] = (byte)(( // [____3210] // [1098________] ((in[ 2 + inPos] & 4095) >>> 8) | // [7654____] // [________3210] ((in[ 3 + inPos] & 4095) << 4)) & 255); out[ 5 + outPos] = (byte)(( // [76543210] // [10987654____] ((in[ 3 + inPos] & 4095) >>> 4)) & 255); out[ 6 + outPos] = (byte)(( // [76543210] // [____76543210] ((in[ 4 + inPos] & 4095))) & 255); out[ 7 + outPos] = (byte)(( // [____3210] // [1098________] ((in[ 4 + inPos] & 4095) >>> 8) | // [7654____] // [________3210] ((in[ 5 + inPos] & 4095) << 4)) & 255); out[ 8 + outPos] = (byte)(( // [76543210] // [10987654____] ((in[ 5 + inPos] & 4095) >>> 4)) & 255); out[ 9 + outPos] = (byte)(( // [76543210] // [____76543210] ((in[ 6 + inPos] & 4095))) & 255); out[10 + outPos] = (byte)(( // [____3210] // [1098________] ((in[ 6 + inPos] & 4095) >>> 8) | // [7654____] // [________3210] ((in[ 7 + inPos] & 4095) << 4)) & 255); out[11 + outPos] = (byte)(( // [76543210] // [10987654____] ((in[ 7 + inPos] & 4095) >>> 4)) & 255); out[12 + outPos] = (byte)(( // [76543210] // [____76543210] ((in[ 8 + inPos] & 4095))) & 255); out[13 + outPos] = (byte)(( // [____3210] // [1098________] ((in[ 8 + inPos] & 4095) >>> 8) | // [7654____] // [________3210] ((in[ 9 + inPos] & 4095) << 4)) & 255); out[14 + outPos] = (byte)(( // [76543210] // [10987654____] ((in[ 9 + inPos] & 4095) >>> 4)) & 255); out[15 + outPos] = (byte)(( // [76543210] // [____76543210] ((in[10 + inPos] & 4095))) & 255); out[16 + outPos] = (byte)(( // [____3210] // [1098________] ((in[10 + inPos] & 4095) >>> 8) | // [7654____] // [________3210] ((in[11 + inPos] & 4095) << 4)) & 255); out[17 + outPos] = (byte)(( // [76543210] // [10987654____] ((in[11 + inPos] & 4095) >>> 4)) & 255); out[18 + outPos] = (byte)(( // [76543210] // [____76543210] ((in[12 + inPos] & 4095))) & 255); out[19 + outPos] = (byte)(( // [____3210] // [1098________] ((in[12 + inPos] & 4095) >>> 8) | // [7654____] // [________3210] ((in[13 + inPos] & 4095) << 4)) & 255); out[20 + outPos] = (byte)(( // [76543210] // [10987654____] ((in[13 + inPos] & 4095) >>> 4)) & 255); out[21 + outPos] = (byte)(( // [76543210] // [____76543210] ((in[14 + inPos] & 4095))) & 255); out[22 + outPos] = (byte)(( // [____3210] // [1098________] ((in[14 + inPos] & 4095) >>> 8) | // [7654____] // [________3210] ((in[15 + inPos] & 4095) << 4)) & 255); out[23 + outPos] = (byte)(( // [76543210] // [10987654____] ((in[15 + inPos] & 4095) >>> 4)) & 255); out[24 + outPos] = (byte)(( // [76543210] // [____76543210] ((in[16 + inPos] & 4095))) & 255); out[25 + outPos] = (byte)(( // [____3210] // [1098________] ((in[16 + inPos] & 4095) >>> 8) | // [7654____] // [________3210] ((in[17 + inPos] & 4095) << 4)) & 255); out[26 + outPos] = (byte)(( // [76543210] // [10987654____] ((in[17 + inPos] & 4095) >>> 4)) & 255); out[27 + outPos] = (byte)(( // [76543210] // [____76543210] ((in[18 + inPos] & 4095))) & 255); out[28 + outPos] = (byte)(( // [____3210] // [1098________] ((in[18 + inPos] & 4095) >>> 8) | // [7654____] // [________3210] ((in[19 + inPos] & 4095) << 4)) & 255); out[29 + outPos] = (byte)(( // [76543210] // [10987654____] ((in[19 + inPos] & 4095) >>> 4)) & 255); out[30 + outPos] = (byte)(( // [76543210] // [____76543210] ((in[20 + inPos] & 4095))) & 255); out[31 + outPos] = (byte)(( // [____3210] // [1098________] ((in[20 + inPos] & 4095) >>> 8) | // [7654____] // [________3210] ((in[21 + inPos] & 4095) << 4)) & 255); out[32 + outPos] = (byte)(( // [76543210] // [10987654____] ((in[21 + inPos] & 4095) >>> 4)) & 255); out[33 + outPos] = (byte)(( // [76543210] // [____76543210] ((in[22 + inPos] & 4095))) & 255); out[34 + outPos] = (byte)(( // [____3210] // [1098________] ((in[22 + inPos] & 4095) >>> 8) | // [7654____] // [________3210] ((in[23 + inPos] & 4095) << 4)) & 255); out[35 + outPos] = (byte)(( // [76543210] // [10987654____] ((in[23 + inPos] & 4095) >>> 4)) & 255); out[36 + outPos] = (byte)(( // [76543210] // [____76543210] ((in[24 + inPos] & 4095))) & 255); out[37 + outPos] = (byte)(( // [____3210] // [1098________] ((in[24 + inPos] & 4095) >>> 8) | // [7654____] // [________3210] ((in[25 + inPos] & 4095) << 4)) & 255); out[38 + outPos] = (byte)(( // [76543210] // [10987654____] ((in[25 + inPos] & 4095) >>> 4)) & 255); out[39 + outPos] = (byte)(( // [76543210] // [____76543210] ((in[26 + inPos] & 4095))) & 255); out[40 + outPos] = (byte)(( // [____3210] // [1098________] ((in[26 + inPos] & 4095) >>> 8) | // [7654____] // [________3210] ((in[27 + inPos] & 4095) << 4)) & 255); out[41 + outPos] = (byte)(( // [76543210] // [10987654____] ((in[27 + inPos] & 4095) >>> 4)) & 255); out[42 + outPos] = (byte)(( // [76543210] // [____76543210] ((in[28 + inPos] & 4095))) & 255); out[43 + outPos] = (byte)(( // [____3210] // [1098________] ((in[28 + inPos] & 4095) >>> 8) | // [7654____] // [________3210] ((in[29 + inPos] & 4095) << 4)) & 255); out[44 + outPos] = (byte)(( // [76543210] // [10987654____] ((in[29 + inPos] & 4095) >>> 4)) & 255); out[45 + outPos] = (byte)(( // [76543210] // [____76543210] ((in[30 + inPos] & 4095))) & 255); out[46 + outPos] = (byte)(( // [____3210] // [1098________] ((in[30 + inPos] & 4095) >>> 8) | // [7654____] // [________3210] ((in[31 + inPos] & 4095) << 4)) & 255); out[47 + outPos] = (byte)(( // [76543210] // [10987654____] ((in[31 + inPos] & 4095) >>> 4)) & 255); } public final void unpack8Values(final byte[] in, final int inPos, final int[] out, final int outPos) { out[ 0 + outPos] = // [76543210] // [____76543210] (((((int)in[ 0 + inPos]) & 255) ) & 4095) | // [____3210] // [1098________] (((((int)in[ 1 + inPos]) & 255) << 8) & 4095); out[ 1 + outPos] = // [7654____] // [________3210] (((((int)in[ 1 + inPos]) & 255) >>> 4) & 4095) | // [76543210] // [10987654____] (((((int)in[ 2 + inPos]) & 255) << 4) & 4095); out[ 2 + outPos] = // [76543210] // [____76543210] (((((int)in[ 3 + inPos]) & 255) ) & 4095) | // [____3210] // [1098________] (((((int)in[ 4 + inPos]) & 255) << 8) & 4095); out[ 3 + outPos] = // [7654____] // [________3210] (((((int)in[ 4 + inPos]) & 255) >>> 4) & 4095) | // [76543210] // [10987654____] (((((int)in[ 5 + inPos]) & 255) << 4) & 4095); out[ 4 + outPos] = // [76543210] // [____76543210] (((((int)in[ 6 + inPos]) & 255) ) & 4095) | // [____3210] // [1098________] (((((int)in[ 7 + inPos]) & 255) << 8) & 4095); out[ 5 + outPos] = // [7654____] // [________3210] (((((int)in[ 7 + inPos]) & 255) >>> 4) & 4095) | // [76543210] // [10987654____] (((((int)in[ 8 + inPos]) & 255) << 4) & 4095); out[ 6 + outPos] = // [76543210] // [____76543210] (((((int)in[ 9 + inPos]) & 255) ) & 4095) | // [____3210] // [1098________] (((((int)in[10 + inPos]) & 255) << 8) & 4095); out[ 7 + outPos] = // [7654____] // [________3210] (((((int)in[10 + inPos]) & 255) >>> 4) & 4095) | // [76543210] // [10987654____] (((((int)in[11 + inPos]) & 255) << 4) & 4095); } public final void unpack32Values(final byte[] in, final int inPos, final int[] out, final int outPos) { out[ 0 + outPos] = // [76543210] // [____76543210] (((((int)in[ 0 + inPos]) & 255) ) & 4095) | // [____3210] // [1098________] (((((int)in[ 1 + inPos]) & 255) << 8) & 4095); out[ 1 + outPos] = // [7654____] // [________3210] (((((int)in[ 1 + inPos]) & 255) >>> 4) & 4095) | // [76543210] // [10987654____] (((((int)in[ 2 + inPos]) & 255) << 4) & 4095); out[ 2 + outPos] = // [76543210] // [____76543210] (((((int)in[ 3 + inPos]) & 255) ) & 4095) | // [____3210] // [1098________] (((((int)in[ 4 + inPos]) & 255) << 8) & 4095); out[ 3 + outPos] = // [7654____] // [________3210] (((((int)in[ 4 + inPos]) & 255) >>> 4) & 4095) | // [76543210] // [10987654____] (((((int)in[ 5 + inPos]) & 255) << 4) & 4095); out[ 4 + outPos] = // [76543210] // [____76543210] (((((int)in[ 6 + inPos]) & 255) ) & 4095) | // [____3210] // [1098________] (((((int)in[ 7 + inPos]) & 255) << 8) & 4095); out[ 5 + outPos] = // [7654____] // [________3210] (((((int)in[ 7 + inPos]) & 255) >>> 4) & 4095) | // [76543210] // [10987654____] (((((int)in[ 8 + inPos]) & 255) << 4) & 4095); out[ 6 + outPos] = // [76543210] // [____76543210] (((((int)in[ 9 + inPos]) & 255) ) & 4095) | // [____3210] // [1098________] (((((int)in[10 + inPos]) & 255) << 8) & 4095); out[ 7 + outPos] = // [7654____] // [________3210] (((((int)in[10 + inPos]) & 255) >>> 4) & 4095) | // [76543210] // [10987654____] (((((int)in[11 + inPos]) & 255) << 4) & 4095); out[ 8 + outPos] = // [76543210] // [____76543210] (((((int)in[12 + inPos]) & 255) ) & 4095) | // [____3210] // [1098________] (((((int)in[13 + inPos]) & 255) << 8) & 4095); out[ 9 + outPos] = // [7654____] // [________3210] (((((int)in[13 + inPos]) & 255) >>> 4) & 4095) | // [76543210] // [10987654____] (((((int)in[14 + inPos]) & 255) << 4) & 4095); out[10 + outPos] = // [76543210] // [____76543210] (((((int)in[15 + inPos]) & 255) ) & 4095) | // [____3210] // [1098________] (((((int)in[16 + inPos]) & 255) << 8) & 4095); out[11 + outPos] = // [7654____] // [________3210] (((((int)in[16 + inPos]) & 255) >>> 4) & 4095) | // [76543210] // [10987654____] (((((int)in[17 + inPos]) & 255) << 4) & 4095); out[12 + outPos] = // [76543210] // [____76543210] (((((int)in[18 + inPos]) & 255) ) & 4095) | // [____3210] // [1098________] (((((int)in[19 + inPos]) & 255) << 8) & 4095); out[13 + outPos] = // [7654____] // [________3210] (((((int)in[19 + inPos]) & 255) >>> 4) & 4095) | // [76543210] // [10987654____] (((((int)in[20 + inPos]) & 255) << 4) & 4095); out[14 + outPos] = // [76543210] // [____76543210] (((((int)in[21 + inPos]) & 255) ) & 4095) | // [____3210] // [1098________] (((((int)in[22 + inPos]) & 255) << 8) & 4095); out[15 + outPos] = // [7654____] // [________3210] (((((int)in[22 + inPos]) & 255) >>> 4) & 4095) | // [76543210] // [10987654____] (((((int)in[23 + inPos]) & 255) << 4) & 4095); out[16 + outPos] = // [76543210] // [____76543210] (((((int)in[24 + inPos]) & 255) ) & 4095) | // [____3210] // [1098________] (((((int)in[25 + inPos]) & 255) << 8) & 4095); out[17 + outPos] = // [7654____] // [________3210] (((((int)in[25 + inPos]) & 255) >>> 4) & 4095) | // [76543210] // [10987654____] (((((int)in[26 + inPos]) & 255) << 4) & 4095); out[18 + outPos] = // [76543210] // [____76543210] (((((int)in[27 + inPos]) & 255) ) & 4095) | // [____3210] // [1098________] (((((int)in[28 + inPos]) & 255) << 8) & 4095); out[19 + outPos] = // [7654____] // [________3210] (((((int)in[28 + inPos]) & 255) >>> 4) & 4095) | // [76543210] // [10987654____] (((((int)in[29 + inPos]) & 255) << 4) & 4095); out[20 + outPos] = // [76543210] // [____76543210] (((((int)in[30 + inPos]) & 255) ) & 4095) | // [____3210] // [1098________] (((((int)in[31 + inPos]) & 255) << 8) & 4095); out[21 + outPos] = // [7654____] // [________3210] (((((int)in[31 + inPos]) & 255) >>> 4) & 4095) | // [76543210] // [10987654____] (((((int)in[32 + inPos]) & 255) << 4) & 4095); out[22 + outPos] = // [76543210] // [____76543210] (((((int)in[33 + inPos]) & 255) ) & 4095) | // [____3210] // [1098________] (((((int)in[34 + inPos]) & 255) << 8) & 4095); out[23 + outPos] = // [7654____] // [________3210] (((((int)in[34 + inPos]) & 255) >>> 4) & 4095) | // [76543210] // [10987654____] (((((int)in[35 + inPos]) & 255) << 4) & 4095); out[24 + outPos] = // [76543210] // [____76543210] (((((int)in[36 + inPos]) & 255) ) & 4095) | // [____3210] // [1098________] (((((int)in[37 + inPos]) & 255) << 8) & 4095); out[25 + outPos] = // [7654____] // [________3210] (((((int)in[37 + inPos]) & 255) >>> 4) & 4095) | // [76543210] // [10987654____] (((((int)in[38 + inPos]) & 255) << 4) & 4095); out[26 + outPos] = // [76543210] // [____76543210] (((((int)in[39 + inPos]) & 255) ) & 4095) | // [____3210] // [1098________] (((((int)in[40 + inPos]) & 255) << 8) & 4095); out[27 + outPos] = // [7654____] // [________3210] (((((int)in[40 + inPos]) & 255) >>> 4) & 4095) | // [76543210] // [10987654____] (((((int)in[41 + inPos]) & 255) << 4) & 4095); out[28 + outPos] = // [76543210] // [____76543210] (((((int)in[42 + inPos]) & 255) ) & 4095) | // [____3210] // [1098________] (((((int)in[43 + inPos]) & 255) << 8) & 4095); out[29 + outPos] = // [7654____] // [________3210] (((((int)in[43 + inPos]) & 255) >>> 4) & 4095) | // [76543210] // [10987654____] (((((int)in[44 + inPos]) & 255) << 4) & 4095); out[30 + outPos] = // [76543210] // [____76543210] (((((int)in[45 + inPos]) & 255) ) & 4095) | // [____3210] // [1098________] (((((int)in[46 + inPos]) & 255) << 8) & 4095); out[31 + outPos] = // [7654____] // [________3210] (((((int)in[46 + inPos]) & 255) >>> 4) & 4095) | // [76543210] // [10987654____] (((((int)in[47 + inPos]) & 255) << 4) & 4095); } } private static final class Packer13 extends BytePacker { private Packer13() { super(13); } public final void pack8Values(final int[] in, final int inPos, final byte[] out, final int outPos) { out[ 0 + outPos] = (byte)(( // [76543210] // [_____76543210] ((in[ 0 + inPos] & 8191))) & 255); out[ 1 + outPos] = (byte)(( // [___43210] // [21098________] ((in[ 0 + inPos] & 8191) >>> 8) | // [765_____] // [__________210] ((in[ 1 + inPos] & 8191) << 5)) & 255); out[ 2 + outPos] = (byte)(( // [76543210] // [__09876543___] ((in[ 1 + inPos] & 8191) >>> 3)) & 255); out[ 3 + outPos] = (byte)(( // [______10] // [21___________] ((in[ 1 + inPos] & 8191) >>> 11) | // [765432__] // [_______543210] ((in[ 2 + inPos] & 8191) << 2)) & 255); out[ 4 + outPos] = (byte)(( // [_6543210] // [2109876______] ((in[ 2 + inPos] & 8191) >>> 6) | // [7_______] // [____________0] ((in[ 3 + inPos] & 8191) << 7)) & 255); out[ 5 + outPos] = (byte)(( // [76543210] // [____87654321_] ((in[ 3 + inPos] & 8191) >>> 1)) & 255); out[ 6 + outPos] = (byte)(( // [____3210] // [2109_________] ((in[ 3 + inPos] & 8191) >>> 9) | // [7654____] // [_________3210] ((in[ 4 + inPos] & 8191) << 4)) & 255); out[ 7 + outPos] = (byte)(( // [76543210] // [_10987654____] ((in[ 4 + inPos] & 8191) >>> 4)) & 255); out[ 8 + outPos] = (byte)(( // [_______0] // [2____________] ((in[ 4 + inPos] & 8191) >>> 12) | // [7654321_] // [______6543210] ((in[ 5 + inPos] & 8191) << 1)) & 255); out[ 9 + outPos] = (byte)(( // [__543210] // [210987_______] ((in[ 5 + inPos] & 8191) >>> 7) | // [76______] // [___________10] ((in[ 6 + inPos] & 8191) << 6)) & 255); out[10 + outPos] = (byte)(( // [76543210] // [___98765432__] ((in[ 6 + inPos] & 8191) >>> 2)) & 255); out[11 + outPos] = (byte)(( // [_____210] // [210__________] ((in[ 6 + inPos] & 8191) >>> 10) | // [76543___] // [________43210] ((in[ 7 + inPos] & 8191) << 3)) & 255); out[12 + outPos] = (byte)(( // [76543210] // [21098765_____] ((in[ 7 + inPos] & 8191) >>> 5)) & 255); } public final void pack32Values(final int[] in, final int inPos, final byte[] out, final int outPos) { out[ 0 + outPos] = (byte)(( // [76543210] // [_____76543210] ((in[ 0 + inPos] & 8191))) & 255); out[ 1 + outPos] = (byte)(( // [___43210] // [21098________] ((in[ 0 + inPos] & 8191) >>> 8) | // [765_____] // [__________210] ((in[ 1 + inPos] & 8191) << 5)) & 255); out[ 2 + outPos] = (byte)(( // [76543210] // [__09876543___] ((in[ 1 + inPos] & 8191) >>> 3)) & 255); out[ 3 + outPos] = (byte)(( // [______10] // [21___________] ((in[ 1 + inPos] & 8191) >>> 11) | // [765432__] // [_______543210] ((in[ 2 + inPos] & 8191) << 2)) & 255); out[ 4 + outPos] = (byte)(( // [_6543210] // [2109876______] ((in[ 2 + inPos] & 8191) >>> 6) | // [7_______] // [____________0] ((in[ 3 + inPos] & 8191) << 7)) & 255); out[ 5 + outPos] = (byte)(( // [76543210] // [____87654321_] ((in[ 3 + inPos] & 8191) >>> 1)) & 255); out[ 6 + outPos] = (byte)(( // [____3210] // [2109_________] ((in[ 3 + inPos] & 8191) >>> 9) | // [7654____] // [_________3210] ((in[ 4 + inPos] & 8191) << 4)) & 255); out[ 7 + outPos] = (byte)(( // [76543210] // [_10987654____] ((in[ 4 + inPos] & 8191) >>> 4)) & 255); out[ 8 + outPos] = (byte)(( // [_______0] // [2____________] ((in[ 4 + inPos] & 8191) >>> 12) | // [7654321_] // [______6543210] ((in[ 5 + inPos] & 8191) << 1)) & 255); out[ 9 + outPos] = (byte)(( // [__543210] // [210987_______] ((in[ 5 + inPos] & 8191) >>> 7) | // [76______] // [___________10] ((in[ 6 + inPos] & 8191) << 6)) & 255); out[10 + outPos] = (byte)(( // [76543210] // [___98765432__] ((in[ 6 + inPos] & 8191) >>> 2)) & 255); out[11 + outPos] = (byte)(( // [_____210] // [210__________] ((in[ 6 + inPos] & 8191) >>> 10) | // [76543___] // [________43210] ((in[ 7 + inPos] & 8191) << 3)) & 255); out[12 + outPos] = (byte)(( // [76543210] // [21098765_____] ((in[ 7 + inPos] & 8191) >>> 5)) & 255); out[13 + outPos] = (byte)(( // [76543210] // [_____76543210] ((in[ 8 + inPos] & 8191))) & 255); out[14 + outPos] = (byte)(( // [___43210] // [21098________] ((in[ 8 + inPos] & 8191) >>> 8) | // [765_____] // [__________210] ((in[ 9 + inPos] & 8191) << 5)) & 255); out[15 + outPos] = (byte)(( // [76543210] // [__09876543___] ((in[ 9 + inPos] & 8191) >>> 3)) & 255); out[16 + outPos] = (byte)(( // [______10] // [21___________] ((in[ 9 + inPos] & 8191) >>> 11) | // [765432__] // [_______543210] ((in[10 + inPos] & 8191) << 2)) & 255); out[17 + outPos] = (byte)(( // [_6543210] // [2109876______] ((in[10 + inPos] & 8191) >>> 6) | // [7_______] // [____________0] ((in[11 + inPos] & 8191) << 7)) & 255); out[18 + outPos] = (byte)(( // [76543210] // [____87654321_] ((in[11 + inPos] & 8191) >>> 1)) & 255); out[19 + outPos] = (byte)(( // [____3210] // [2109_________] ((in[11 + inPos] & 8191) >>> 9) | // [7654____] // [_________3210] ((in[12 + inPos] & 8191) << 4)) & 255); out[20 + outPos] = (byte)(( // [76543210] // [_10987654____] ((in[12 + inPos] & 8191) >>> 4)) & 255); out[21 + outPos] = (byte)(( // [_______0] // [2____________] ((in[12 + inPos] & 8191) >>> 12) | // [7654321_] // [______6543210] ((in[13 + inPos] & 8191) << 1)) & 255); out[22 + outPos] = (byte)(( // [__543210] // [210987_______] ((in[13 + inPos] & 8191) >>> 7) | // [76______] // [___________10] ((in[14 + inPos] & 8191) << 6)) & 255); out[23 + outPos] = (byte)(( // [76543210] // [___98765432__] ((in[14 + inPos] & 8191) >>> 2)) & 255); out[24 + outPos] = (byte)(( // [_____210] // [210__________] ((in[14 + inPos] & 8191) >>> 10) | // [76543___] // [________43210] ((in[15 + inPos] & 8191) << 3)) & 255); out[25 + outPos] = (byte)(( // [76543210] // [21098765_____] ((in[15 + inPos] & 8191) >>> 5)) & 255); out[26 + outPos] = (byte)(( // [76543210] // [_____76543210] ((in[16 + inPos] & 8191))) & 255); out[27 + outPos] = (byte)(( // [___43210] // [21098________] ((in[16 + inPos] & 8191) >>> 8) | // [765_____] // [__________210] ((in[17 + inPos] & 8191) << 5)) & 255); out[28 + outPos] = (byte)(( // [76543210] // [__09876543___] ((in[17 + inPos] & 8191) >>> 3)) & 255); out[29 + outPos] = (byte)(( // [______10] // [21___________] ((in[17 + inPos] & 8191) >>> 11) | // [765432__] // [_______543210] ((in[18 + inPos] & 8191) << 2)) & 255); out[30 + outPos] = (byte)(( // [_6543210] // [2109876______] ((in[18 + inPos] & 8191) >>> 6) | // [7_______] // [____________0] ((in[19 + inPos] & 8191) << 7)) & 255); out[31 + outPos] = (byte)(( // [76543210] // [____87654321_] ((in[19 + inPos] & 8191) >>> 1)) & 255); out[32 + outPos] = (byte)(( // [____3210] // [2109_________] ((in[19 + inPos] & 8191) >>> 9) | // [7654____] // [_________3210] ((in[20 + inPos] & 8191) << 4)) & 255); out[33 + outPos] = (byte)(( // [76543210] // [_10987654____] ((in[20 + inPos] & 8191) >>> 4)) & 255); out[34 + outPos] = (byte)(( // [_______0] // [2____________] ((in[20 + inPos] & 8191) >>> 12) | // [7654321_] // [______6543210] ((in[21 + inPos] & 8191) << 1)) & 255); out[35 + outPos] = (byte)(( // [__543210] // [210987_______] ((in[21 + inPos] & 8191) >>> 7) | // [76______] // [___________10] ((in[22 + inPos] & 8191) << 6)) & 255); out[36 + outPos] = (byte)(( // [76543210] // [___98765432__] ((in[22 + inPos] & 8191) >>> 2)) & 255); out[37 + outPos] = (byte)(( // [_____210] // [210__________] ((in[22 + inPos] & 8191) >>> 10) | // [76543___] // [________43210] ((in[23 + inPos] & 8191) << 3)) & 255); out[38 + outPos] = (byte)(( // [76543210] // [21098765_____] ((in[23 + inPos] & 8191) >>> 5)) & 255); out[39 + outPos] = (byte)(( // [76543210] // [_____76543210] ((in[24 + inPos] & 8191))) & 255); out[40 + outPos] = (byte)(( // [___43210] // [21098________] ((in[24 + inPos] & 8191) >>> 8) | // [765_____] // [__________210] ((in[25 + inPos] & 8191) << 5)) & 255); out[41 + outPos] = (byte)(( // [76543210] // [__09876543___] ((in[25 + inPos] & 8191) >>> 3)) & 255); out[42 + outPos] = (byte)(( // [______10] // [21___________] ((in[25 + inPos] & 8191) >>> 11) | // [765432__] // [_______543210] ((in[26 + inPos] & 8191) << 2)) & 255); out[43 + outPos] = (byte)(( // [_6543210] // [2109876______] ((in[26 + inPos] & 8191) >>> 6) | // [7_______] // [____________0] ((in[27 + inPos] & 8191) << 7)) & 255); out[44 + outPos] = (byte)(( // [76543210] // [____87654321_] ((in[27 + inPos] & 8191) >>> 1)) & 255); out[45 + outPos] = (byte)(( // [____3210] // [2109_________] ((in[27 + inPos] & 8191) >>> 9) | // [7654____] // [_________3210] ((in[28 + inPos] & 8191) << 4)) & 255); out[46 + outPos] = (byte)(( // [76543210] // [_10987654____] ((in[28 + inPos] & 8191) >>> 4)) & 255); out[47 + outPos] = (byte)(( // [_______0] // [2____________] ((in[28 + inPos] & 8191) >>> 12) | // [7654321_] // [______6543210] ((in[29 + inPos] & 8191) << 1)) & 255); out[48 + outPos] = (byte)(( // [__543210] // [210987_______] ((in[29 + inPos] & 8191) >>> 7) | // [76______] // [___________10] ((in[30 + inPos] & 8191) << 6)) & 255); out[49 + outPos] = (byte)(( // [76543210] // [___98765432__] ((in[30 + inPos] & 8191) >>> 2)) & 255); out[50 + outPos] = (byte)(( // [_____210] // [210__________] ((in[30 + inPos] & 8191) >>> 10) | // [76543___] // [________43210] ((in[31 + inPos] & 8191) << 3)) & 255); out[51 + outPos] = (byte)(( // [76543210] // [21098765_____] ((in[31 + inPos] & 8191) >>> 5)) & 255); } public final void unpack8Values(final byte[] in, final int inPos, final int[] out, final int outPos) { out[ 0 + outPos] = // [76543210] // [_____76543210] (((((int)in[ 0 + inPos]) & 255) ) & 8191) | // [___43210] // [21098________] (((((int)in[ 1 + inPos]) & 255) << 8) & 8191); out[ 1 + outPos] = // [765_____] // [__________210] (((((int)in[ 1 + inPos]) & 255) >>> 5) & 8191) | // [76543210] // [__09876543___] (((((int)in[ 2 + inPos]) & 255) << 3) & 8191) | // [______10] // [21___________] (((((int)in[ 3 + inPos]) & 255) << 11) & 8191); out[ 2 + outPos] = // [765432__] // [_______543210] (((((int)in[ 3 + inPos]) & 255) >>> 2) & 8191) | // [_6543210] // [2109876______] (((((int)in[ 4 + inPos]) & 255) << 6) & 8191); out[ 3 + outPos] = // [7_______] // [____________0] (((((int)in[ 4 + inPos]) & 255) >>> 7) & 8191) | // [76543210] // [____87654321_] (((((int)in[ 5 + inPos]) & 255) << 1) & 8191) | // [____3210] // [2109_________] (((((int)in[ 6 + inPos]) & 255) << 9) & 8191); out[ 4 + outPos] = // [7654____] // [_________3210] (((((int)in[ 6 + inPos]) & 255) >>> 4) & 8191) | // [76543210] // [_10987654____] (((((int)in[ 7 + inPos]) & 255) << 4) & 8191) | // [_______0] // [2____________] (((((int)in[ 8 + inPos]) & 255) << 12) & 8191); out[ 5 + outPos] = // [7654321_] // [______6543210] (((((int)in[ 8 + inPos]) & 255) >>> 1) & 8191) | // [__543210] // [210987_______] (((((int)in[ 9 + inPos]) & 255) << 7) & 8191); out[ 6 + outPos] = // [76______] // [___________10] (((((int)in[ 9 + inPos]) & 255) >>> 6) & 8191) | // [76543210] // [___98765432__] (((((int)in[10 + inPos]) & 255) << 2) & 8191) | // [_____210] // [210__________] (((((int)in[11 + inPos]) & 255) << 10) & 8191); out[ 7 + outPos] = // [76543___] // [________43210] (((((int)in[11 + inPos]) & 255) >>> 3) & 8191) | // [76543210] // [21098765_____] (((((int)in[12 + inPos]) & 255) << 5) & 8191); } public final void unpack32Values(final byte[] in, final int inPos, final int[] out, final int outPos) { out[ 0 + outPos] = // [76543210] // [_____76543210] (((((int)in[ 0 + inPos]) & 255) ) & 8191) | // [___43210] // [21098________] (((((int)in[ 1 + inPos]) & 255) << 8) & 8191); out[ 1 + outPos] = // [765_____] // [__________210] (((((int)in[ 1 + inPos]) & 255) >>> 5) & 8191) | // [76543210] // [__09876543___] (((((int)in[ 2 + inPos]) & 255) << 3) & 8191) | // [______10] // [21___________] (((((int)in[ 3 + inPos]) & 255) << 11) & 8191); out[ 2 + outPos] = // [765432__] // [_______543210] (((((int)in[ 3 + inPos]) & 255) >>> 2) & 8191) | // [_6543210] // [2109876______] (((((int)in[ 4 + inPos]) & 255) << 6) & 8191); out[ 3 + outPos] = // [7_______] // [____________0] (((((int)in[ 4 + inPos]) & 255) >>> 7) & 8191) | // [76543210] // [____87654321_] (((((int)in[ 5 + inPos]) & 255) << 1) & 8191) | // [____3210] // [2109_________] (((((int)in[ 6 + inPos]) & 255) << 9) & 8191); out[ 4 + outPos] = // [7654____] // [_________3210] (((((int)in[ 6 + inPos]) & 255) >>> 4) & 8191) | // [76543210] // [_10987654____] (((((int)in[ 7 + inPos]) & 255) << 4) & 8191) | // [_______0] // [2____________] (((((int)in[ 8 + inPos]) & 255) << 12) & 8191); out[ 5 + outPos] = // [7654321_] // [______6543210] (((((int)in[ 8 + inPos]) & 255) >>> 1) & 8191) | // [__543210] // [210987_______] (((((int)in[ 9 + inPos]) & 255) << 7) & 8191); out[ 6 + outPos] = // [76______] // [___________10] (((((int)in[ 9 + inPos]) & 255) >>> 6) & 8191) | // [76543210] // [___98765432__] (((((int)in[10 + inPos]) & 255) << 2) & 8191) | // [_____210] // [210__________] (((((int)in[11 + inPos]) & 255) << 10) & 8191); out[ 7 + outPos] = // [76543___] // [________43210] (((((int)in[11 + inPos]) & 255) >>> 3) & 8191) | // [76543210] // [21098765_____] (((((int)in[12 + inPos]) & 255) << 5) & 8191); out[ 8 + outPos] = // [76543210] // [_____76543210] (((((int)in[13 + inPos]) & 255) ) & 8191) | // [___43210] // [21098________] (((((int)in[14 + inPos]) & 255) << 8) & 8191); out[ 9 + outPos] = // [765_____] // [__________210] (((((int)in[14 + inPos]) & 255) >>> 5) & 8191) | // [76543210] // [__09876543___] (((((int)in[15 + inPos]) & 255) << 3) & 8191) | // [______10] // [21___________] (((((int)in[16 + inPos]) & 255) << 11) & 8191); out[10 + outPos] = // [765432__] // [_______543210] (((((int)in[16 + inPos]) & 255) >>> 2) & 8191) | // [_6543210] // [2109876______] (((((int)in[17 + inPos]) & 255) << 6) & 8191); out[11 + outPos] = // [7_______] // [____________0] (((((int)in[17 + inPos]) & 255) >>> 7) & 8191) | // [76543210] // [____87654321_] (((((int)in[18 + inPos]) & 255) << 1) & 8191) | // [____3210] // [2109_________] (((((int)in[19 + inPos]) & 255) << 9) & 8191); out[12 + outPos] = // [7654____] // [_________3210] (((((int)in[19 + inPos]) & 255) >>> 4) & 8191) | // [76543210] // [_10987654____] (((((int)in[20 + inPos]) & 255) << 4) & 8191) | // [_______0] // [2____________] (((((int)in[21 + inPos]) & 255) << 12) & 8191); out[13 + outPos] = // [7654321_] // [______6543210] (((((int)in[21 + inPos]) & 255) >>> 1) & 8191) | // [__543210] // [210987_______] (((((int)in[22 + inPos]) & 255) << 7) & 8191); out[14 + outPos] = // [76______] // [___________10] (((((int)in[22 + inPos]) & 255) >>> 6) & 8191) | // [76543210] // [___98765432__] (((((int)in[23 + inPos]) & 255) << 2) & 8191) | // [_____210] // [210__________] (((((int)in[24 + inPos]) & 255) << 10) & 8191); out[15 + outPos] = // [76543___] // [________43210] (((((int)in[24 + inPos]) & 255) >>> 3) & 8191) | // [76543210] // [21098765_____] (((((int)in[25 + inPos]) & 255) << 5) & 8191); out[16 + outPos] = // [76543210] // [_____76543210] (((((int)in[26 + inPos]) & 255) ) & 8191) | // [___43210] // [21098________] (((((int)in[27 + inPos]) & 255) << 8) & 8191); out[17 + outPos] = // [765_____] // [__________210] (((((int)in[27 + inPos]) & 255) >>> 5) & 8191) | // [76543210] // [__09876543___] (((((int)in[28 + inPos]) & 255) << 3) & 8191) | // [______10] // [21___________] (((((int)in[29 + inPos]) & 255) << 11) & 8191); out[18 + outPos] = // [765432__] // [_______543210] (((((int)in[29 + inPos]) & 255) >>> 2) & 8191) | // [_6543210] // [2109876______] (((((int)in[30 + inPos]) & 255) << 6) & 8191); out[19 + outPos] = // [7_______] // [____________0] (((((int)in[30 + inPos]) & 255) >>> 7) & 8191) | // [76543210] // [____87654321_] (((((int)in[31 + inPos]) & 255) << 1) & 8191) | // [____3210] // [2109_________] (((((int)in[32 + inPos]) & 255) << 9) & 8191); out[20 + outPos] = // [7654____] // [_________3210] (((((int)in[32 + inPos]) & 255) >>> 4) & 8191) | // [76543210] // [_10987654____] (((((int)in[33 + inPos]) & 255) << 4) & 8191) | // [_______0] // [2____________] (((((int)in[34 + inPos]) & 255) << 12) & 8191); out[21 + outPos] = // [7654321_] // [______6543210] (((((int)in[34 + inPos]) & 255) >>> 1) & 8191) | // [__543210] // [210987_______] (((((int)in[35 + inPos]) & 255) << 7) & 8191); out[22 + outPos] = // [76______] // [___________10] (((((int)in[35 + inPos]) & 255) >>> 6) & 8191) | // [76543210] // [___98765432__] (((((int)in[36 + inPos]) & 255) << 2) & 8191) | // [_____210] // [210__________] (((((int)in[37 + inPos]) & 255) << 10) & 8191); out[23 + outPos] = // [76543___] // [________43210] (((((int)in[37 + inPos]) & 255) >>> 3) & 8191) | // [76543210] // [21098765_____] (((((int)in[38 + inPos]) & 255) << 5) & 8191); out[24 + outPos] = // [76543210] // [_____76543210] (((((int)in[39 + inPos]) & 255) ) & 8191) | // [___43210] // [21098________] (((((int)in[40 + inPos]) & 255) << 8) & 8191); out[25 + outPos] = // [765_____] // [__________210] (((((int)in[40 + inPos]) & 255) >>> 5) & 8191) | // [76543210] // [__09876543___] (((((int)in[41 + inPos]) & 255) << 3) & 8191) | // [______10] // [21___________] (((((int)in[42 + inPos]) & 255) << 11) & 8191); out[26 + outPos] = // [765432__] // [_______543210] (((((int)in[42 + inPos]) & 255) >>> 2) & 8191) | // [_6543210] // [2109876______] (((((int)in[43 + inPos]) & 255) << 6) & 8191); out[27 + outPos] = // [7_______] // [____________0] (((((int)in[43 + inPos]) & 255) >>> 7) & 8191) | // [76543210] // [____87654321_] (((((int)in[44 + inPos]) & 255) << 1) & 8191) | // [____3210] // [2109_________] (((((int)in[45 + inPos]) & 255) << 9) & 8191); out[28 + outPos] = // [7654____] // [_________3210] (((((int)in[45 + inPos]) & 255) >>> 4) & 8191) | // [76543210] // [_10987654____] (((((int)in[46 + inPos]) & 255) << 4) & 8191) | // [_______0] // [2____________] (((((int)in[47 + inPos]) & 255) << 12) & 8191); out[29 + outPos] = // [7654321_] // [______6543210] (((((int)in[47 + inPos]) & 255) >>> 1) & 8191) | // [__543210] // [210987_______] (((((int)in[48 + inPos]) & 255) << 7) & 8191); out[30 + outPos] = // [76______] // [___________10] (((((int)in[48 + inPos]) & 255) >>> 6) & 8191) | // [76543210] // [___98765432__] (((((int)in[49 + inPos]) & 255) << 2) & 8191) | // [_____210] // [210__________] (((((int)in[50 + inPos]) & 255) << 10) & 8191); out[31 + outPos] = // [76543___] // [________43210] (((((int)in[50 + inPos]) & 255) >>> 3) & 8191) | // [76543210] // [21098765_____] (((((int)in[51 + inPos]) & 255) << 5) & 8191); } } private static final class Packer14 extends BytePacker { private Packer14() { super(14); } public final void pack8Values(final int[] in, final int inPos, final byte[] out, final int outPos) { out[ 0 + outPos] = (byte)(( // [76543210] // [______76543210] ((in[ 0 + inPos] & 16383))) & 255); out[ 1 + outPos] = (byte)(( // [__543210] // [321098________] ((in[ 0 + inPos] & 16383) >>> 8) | // [76______] // [____________10] ((in[ 1 + inPos] & 16383) << 6)) & 255); out[ 2 + outPos] = (byte)(( // [76543210] // [____98765432__] ((in[ 1 + inPos] & 16383) >>> 2)) & 255); out[ 3 + outPos] = (byte)(( // [____3210] // [3210__________] ((in[ 1 + inPos] & 16383) >>> 10) | // [7654____] // [__________3210] ((in[ 2 + inPos] & 16383) << 4)) & 255); out[ 4 + outPos] = (byte)(( // [76543210] // [__10987654____] ((in[ 2 + inPos] & 16383) >>> 4)) & 255); out[ 5 + outPos] = (byte)(( // [______10] // [32____________] ((in[ 2 + inPos] & 16383) >>> 12) | // [765432__] // [________543210] ((in[ 3 + inPos] & 16383) << 2)) & 255); out[ 6 + outPos] = (byte)(( // [76543210] // [32109876______] ((in[ 3 + inPos] & 16383) >>> 6)) & 255); out[ 7 + outPos] = (byte)(( // [76543210] // [______76543210] ((in[ 4 + inPos] & 16383))) & 255); out[ 8 + outPos] = (byte)(( // [__543210] // [321098________] ((in[ 4 + inPos] & 16383) >>> 8) | // [76______] // [____________10] ((in[ 5 + inPos] & 16383) << 6)) & 255); out[ 9 + outPos] = (byte)(( // [76543210] // [____98765432__] ((in[ 5 + inPos] & 16383) >>> 2)) & 255); out[10 + outPos] = (byte)(( // [____3210] // [3210__________] ((in[ 5 + inPos] & 16383) >>> 10) | // [7654____] // [__________3210] ((in[ 6 + inPos] & 16383) << 4)) & 255); out[11 + outPos] = (byte)(( // [76543210] // [__10987654____] ((in[ 6 + inPos] & 16383) >>> 4)) & 255); out[12 + outPos] = (byte)(( // [______10] // [32____________] ((in[ 6 + inPos] & 16383) >>> 12) | // [765432__] // [________543210] ((in[ 7 + inPos] & 16383) << 2)) & 255); out[13 + outPos] = (byte)(( // [76543210] // [32109876______] ((in[ 7 + inPos] & 16383) >>> 6)) & 255); } public final void pack32Values(final int[] in, final int inPos, final byte[] out, final int outPos) { out[ 0 + outPos] = (byte)(( // [76543210] // [______76543210] ((in[ 0 + inPos] & 16383))) & 255); out[ 1 + outPos] = (byte)(( // [__543210] // [321098________] ((in[ 0 + inPos] & 16383) >>> 8) | // [76______] // [____________10] ((in[ 1 + inPos] & 16383) << 6)) & 255); out[ 2 + outPos] = (byte)(( // [76543210] // [____98765432__] ((in[ 1 + inPos] & 16383) >>> 2)) & 255); out[ 3 + outPos] = (byte)(( // [____3210] // [3210__________] ((in[ 1 + inPos] & 16383) >>> 10) | // [7654____] // [__________3210] ((in[ 2 + inPos] & 16383) << 4)) & 255); out[ 4 + outPos] = (byte)(( // [76543210] // [__10987654____] ((in[ 2 + inPos] & 16383) >>> 4)) & 255); out[ 5 + outPos] = (byte)(( // [______10] // [32____________] ((in[ 2 + inPos] & 16383) >>> 12) | // [765432__] // [________543210] ((in[ 3 + inPos] & 16383) << 2)) & 255); out[ 6 + outPos] = (byte)(( // [76543210] // [32109876______] ((in[ 3 + inPos] & 16383) >>> 6)) & 255); out[ 7 + outPos] = (byte)(( // [76543210] // [______76543210] ((in[ 4 + inPos] & 16383))) & 255); out[ 8 + outPos] = (byte)(( // [__543210] // [321098________] ((in[ 4 + inPos] & 16383) >>> 8) | // [76______] // [____________10] ((in[ 5 + inPos] & 16383) << 6)) & 255); out[ 9 + outPos] = (byte)(( // [76543210] // [____98765432__] ((in[ 5 + inPos] & 16383) >>> 2)) & 255); out[10 + outPos] = (byte)(( // [____3210] // [3210__________] ((in[ 5 + inPos] & 16383) >>> 10) | // [7654____] // [__________3210] ((in[ 6 + inPos] & 16383) << 4)) & 255); out[11 + outPos] = (byte)(( // [76543210] // [__10987654____] ((in[ 6 + inPos] & 16383) >>> 4)) & 255); out[12 + outPos] = (byte)(( // [______10] // [32____________] ((in[ 6 + inPos] & 16383) >>> 12) | // [765432__] // [________543210] ((in[ 7 + inPos] & 16383) << 2)) & 255); out[13 + outPos] = (byte)(( // [76543210] // [32109876______] ((in[ 7 + inPos] & 16383) >>> 6)) & 255); out[14 + outPos] = (byte)(( // [76543210] // [______76543210] ((in[ 8 + inPos] & 16383))) & 255); out[15 + outPos] = (byte)(( // [__543210] // [321098________] ((in[ 8 + inPos] & 16383) >>> 8) | // [76______] // [____________10] ((in[ 9 + inPos] & 16383) << 6)) & 255); out[16 + outPos] = (byte)(( // [76543210] // [____98765432__] ((in[ 9 + inPos] & 16383) >>> 2)) & 255); out[17 + outPos] = (byte)(( // [____3210] // [3210__________] ((in[ 9 + inPos] & 16383) >>> 10) | // [7654____] // [__________3210] ((in[10 + inPos] & 16383) << 4)) & 255); out[18 + outPos] = (byte)(( // [76543210] // [__10987654____] ((in[10 + inPos] & 16383) >>> 4)) & 255); out[19 + outPos] = (byte)(( // [______10] // [32____________] ((in[10 + inPos] & 16383) >>> 12) | // [765432__] // [________543210] ((in[11 + inPos] & 16383) << 2)) & 255); out[20 + outPos] = (byte)(( // [76543210] // [32109876______] ((in[11 + inPos] & 16383) >>> 6)) & 255); out[21 + outPos] = (byte)(( // [76543210] // [______76543210] ((in[12 + inPos] & 16383))) & 255); out[22 + outPos] = (byte)(( // [__543210] // [321098________] ((in[12 + inPos] & 16383) >>> 8) | // [76______] // [____________10] ((in[13 + inPos] & 16383) << 6)) & 255); out[23 + outPos] = (byte)(( // [76543210] // [____98765432__] ((in[13 + inPos] & 16383) >>> 2)) & 255); out[24 + outPos] = (byte)(( // [____3210] // [3210__________] ((in[13 + inPos] & 16383) >>> 10) | // [7654____] // [__________3210] ((in[14 + inPos] & 16383) << 4)) & 255); out[25 + outPos] = (byte)(( // [76543210] // [__10987654____] ((in[14 + inPos] & 16383) >>> 4)) & 255); out[26 + outPos] = (byte)(( // [______10] // [32____________] ((in[14 + inPos] & 16383) >>> 12) | // [765432__] // [________543210] ((in[15 + inPos] & 16383) << 2)) & 255); out[27 + outPos] = (byte)(( // [76543210] // [32109876______] ((in[15 + inPos] & 16383) >>> 6)) & 255); out[28 + outPos] = (byte)(( // [76543210] // [______76543210] ((in[16 + inPos] & 16383))) & 255); out[29 + outPos] = (byte)(( // [__543210] // [321098________] ((in[16 + inPos] & 16383) >>> 8) | // [76______] // [____________10] ((in[17 + inPos] & 16383) << 6)) & 255); out[30 + outPos] = (byte)(( // [76543210] // [____98765432__] ((in[17 + inPos] & 16383) >>> 2)) & 255); out[31 + outPos] = (byte)(( // [____3210] // [3210__________] ((in[17 + inPos] & 16383) >>> 10) | // [7654____] // [__________3210] ((in[18 + inPos] & 16383) << 4)) & 255); out[32 + outPos] = (byte)(( // [76543210] // [__10987654____] ((in[18 + inPos] & 16383) >>> 4)) & 255); out[33 + outPos] = (byte)(( // [______10] // [32____________] ((in[18 + inPos] & 16383) >>> 12) | // [765432__] // [________543210] ((in[19 + inPos] & 16383) << 2)) & 255); out[34 + outPos] = (byte)(( // [76543210] // [32109876______] ((in[19 + inPos] & 16383) >>> 6)) & 255); out[35 + outPos] = (byte)(( // [76543210] // [______76543210] ((in[20 + inPos] & 16383))) & 255); out[36 + outPos] = (byte)(( // [__543210] // [321098________] ((in[20 + inPos] & 16383) >>> 8) | // [76______] // [____________10] ((in[21 + inPos] & 16383) << 6)) & 255); out[37 + outPos] = (byte)(( // [76543210] // [____98765432__] ((in[21 + inPos] & 16383) >>> 2)) & 255); out[38 + outPos] = (byte)(( // [____3210] // [3210__________] ((in[21 + inPos] & 16383) >>> 10) | // [7654____] // [__________3210] ((in[22 + inPos] & 16383) << 4)) & 255); out[39 + outPos] = (byte)(( // [76543210] // [__10987654____] ((in[22 + inPos] & 16383) >>> 4)) & 255); out[40 + outPos] = (byte)(( // [______10] // [32____________] ((in[22 + inPos] & 16383) >>> 12) | // [765432__] // [________543210] ((in[23 + inPos] & 16383) << 2)) & 255); out[41 + outPos] = (byte)(( // [76543210] // [32109876______] ((in[23 + inPos] & 16383) >>> 6)) & 255); out[42 + outPos] = (byte)(( // [76543210] // [______76543210] ((in[24 + inPos] & 16383))) & 255); out[43 + outPos] = (byte)(( // [__543210] // [321098________] ((in[24 + inPos] & 16383) >>> 8) | // [76______] // [____________10] ((in[25 + inPos] & 16383) << 6)) & 255); out[44 + outPos] = (byte)(( // [76543210] // [____98765432__] ((in[25 + inPos] & 16383) >>> 2)) & 255); out[45 + outPos] = (byte)(( // [____3210] // [3210__________] ((in[25 + inPos] & 16383) >>> 10) | // [7654____] // [__________3210] ((in[26 + inPos] & 16383) << 4)) & 255); out[46 + outPos] = (byte)(( // [76543210] // [__10987654____] ((in[26 + inPos] & 16383) >>> 4)) & 255); out[47 + outPos] = (byte)(( // [______10] // [32____________] ((in[26 + inPos] & 16383) >>> 12) | // [765432__] // [________543210] ((in[27 + inPos] & 16383) << 2)) & 255); out[48 + outPos] = (byte)(( // [76543210] // [32109876______] ((in[27 + inPos] & 16383) >>> 6)) & 255); out[49 + outPos] = (byte)(( // [76543210] // [______76543210] ((in[28 + inPos] & 16383))) & 255); out[50 + outPos] = (byte)(( // [__543210] // [321098________] ((in[28 + inPos] & 16383) >>> 8) | // [76______] // [____________10] ((in[29 + inPos] & 16383) << 6)) & 255); out[51 + outPos] = (byte)(( // [76543210] // [____98765432__] ((in[29 + inPos] & 16383) >>> 2)) & 255); out[52 + outPos] = (byte)(( // [____3210] // [3210__________] ((in[29 + inPos] & 16383) >>> 10) | // [7654____] // [__________3210] ((in[30 + inPos] & 16383) << 4)) & 255); out[53 + outPos] = (byte)(( // [76543210] // [__10987654____] ((in[30 + inPos] & 16383) >>> 4)) & 255); out[54 + outPos] = (byte)(( // [______10] // [32____________] ((in[30 + inPos] & 16383) >>> 12) | // [765432__] // [________543210] ((in[31 + inPos] & 16383) << 2)) & 255); out[55 + outPos] = (byte)(( // [76543210] // [32109876______] ((in[31 + inPos] & 16383) >>> 6)) & 255); } public final void unpack8Values(final byte[] in, final int inPos, final int[] out, final int outPos) { out[ 0 + outPos] = // [76543210] // [______76543210] (((((int)in[ 0 + inPos]) & 255) ) & 16383) | // [__543210] // [321098________] (((((int)in[ 1 + inPos]) & 255) << 8) & 16383); out[ 1 + outPos] = // [76______] // [____________10] (((((int)in[ 1 + inPos]) & 255) >>> 6) & 16383) | // [76543210] // [____98765432__] (((((int)in[ 2 + inPos]) & 255) << 2) & 16383) | // [____3210] // [3210__________] (((((int)in[ 3 + inPos]) & 255) << 10) & 16383); out[ 2 + outPos] = // [7654____] // [__________3210] (((((int)in[ 3 + inPos]) & 255) >>> 4) & 16383) | // [76543210] // [__10987654____] (((((int)in[ 4 + inPos]) & 255) << 4) & 16383) | // [______10] // [32____________] (((((int)in[ 5 + inPos]) & 255) << 12) & 16383); out[ 3 + outPos] = // [765432__] // [________543210] (((((int)in[ 5 + inPos]) & 255) >>> 2) & 16383) | // [76543210] // [32109876______] (((((int)in[ 6 + inPos]) & 255) << 6) & 16383); out[ 4 + outPos] = // [76543210] // [______76543210] (((((int)in[ 7 + inPos]) & 255) ) & 16383) | // [__543210] // [321098________] (((((int)in[ 8 + inPos]) & 255) << 8) & 16383); out[ 5 + outPos] = // [76______] // [____________10] (((((int)in[ 8 + inPos]) & 255) >>> 6) & 16383) | // [76543210] // [____98765432__] (((((int)in[ 9 + inPos]) & 255) << 2) & 16383) | // [____3210] // [3210__________] (((((int)in[10 + inPos]) & 255) << 10) & 16383); out[ 6 + outPos] = // [7654____] // [__________3210] (((((int)in[10 + inPos]) & 255) >>> 4) & 16383) | // [76543210] // [__10987654____] (((((int)in[11 + inPos]) & 255) << 4) & 16383) | // [______10] // [32____________] (((((int)in[12 + inPos]) & 255) << 12) & 16383); out[ 7 + outPos] = // [765432__] // [________543210] (((((int)in[12 + inPos]) & 255) >>> 2) & 16383) | // [76543210] // [32109876______] (((((int)in[13 + inPos]) & 255) << 6) & 16383); } public final void unpack32Values(final byte[] in, final int inPos, final int[] out, final int outPos) { out[ 0 + outPos] = // [76543210] // [______76543210] (((((int)in[ 0 + inPos]) & 255) ) & 16383) | // [__543210] // [321098________] (((((int)in[ 1 + inPos]) & 255) << 8) & 16383); out[ 1 + outPos] = // [76______] // [____________10] (((((int)in[ 1 + inPos]) & 255) >>> 6) & 16383) | // [76543210] // [____98765432__] (((((int)in[ 2 + inPos]) & 255) << 2) & 16383) | // [____3210] // [3210__________] (((((int)in[ 3 + inPos]) & 255) << 10) & 16383); out[ 2 + outPos] = // [7654____] // [__________3210] (((((int)in[ 3 + inPos]) & 255) >>> 4) & 16383) | // [76543210] // [__10987654____] (((((int)in[ 4 + inPos]) & 255) << 4) & 16383) | // [______10] // [32____________] (((((int)in[ 5 + inPos]) & 255) << 12) & 16383); out[ 3 + outPos] = // [765432__] // [________543210] (((((int)in[ 5 + inPos]) & 255) >>> 2) & 16383) | // [76543210] // [32109876______] (((((int)in[ 6 + inPos]) & 255) << 6) & 16383); out[ 4 + outPos] = // [76543210] // [______76543210] (((((int)in[ 7 + inPos]) & 255) ) & 16383) | // [__543210] // [321098________] (((((int)in[ 8 + inPos]) & 255) << 8) & 16383); out[ 5 + outPos] = // [76______] // [____________10] (((((int)in[ 8 + inPos]) & 255) >>> 6) & 16383) | // [76543210] // [____98765432__] (((((int)in[ 9 + inPos]) & 255) << 2) & 16383) | // [____3210] // [3210__________] (((((int)in[10 + inPos]) & 255) << 10) & 16383); out[ 6 + outPos] = // [7654____] // [__________3210] (((((int)in[10 + inPos]) & 255) >>> 4) & 16383) | // [76543210] // [__10987654____] (((((int)in[11 + inPos]) & 255) << 4) & 16383) | // [______10] // [32____________] (((((int)in[12 + inPos]) & 255) << 12) & 16383); out[ 7 + outPos] = // [765432__] // [________543210] (((((int)in[12 + inPos]) & 255) >>> 2) & 16383) | // [76543210] // [32109876______] (((((int)in[13 + inPos]) & 255) << 6) & 16383); out[ 8 + outPos] = // [76543210] // [______76543210] (((((int)in[14 + inPos]) & 255) ) & 16383) | // [__543210] // [321098________] (((((int)in[15 + inPos]) & 255) << 8) & 16383); out[ 9 + outPos] = // [76______] // [____________10] (((((int)in[15 + inPos]) & 255) >>> 6) & 16383) | // [76543210] // [____98765432__] (((((int)in[16 + inPos]) & 255) << 2) & 16383) | // [____3210] // [3210__________] (((((int)in[17 + inPos]) & 255) << 10) & 16383); out[10 + outPos] = // [7654____] // [__________3210] (((((int)in[17 + inPos]) & 255) >>> 4) & 16383) | // [76543210] // [__10987654____] (((((int)in[18 + inPos]) & 255) << 4) & 16383) | // [______10] // [32____________] (((((int)in[19 + inPos]) & 255) << 12) & 16383); out[11 + outPos] = // [765432__] // [________543210] (((((int)in[19 + inPos]) & 255) >>> 2) & 16383) | // [76543210] // [32109876______] (((((int)in[20 + inPos]) & 255) << 6) & 16383); out[12 + outPos] = // [76543210] // [______76543210] (((((int)in[21 + inPos]) & 255) ) & 16383) | // [__543210] // [321098________] (((((int)in[22 + inPos]) & 255) << 8) & 16383); out[13 + outPos] = // [76______] // [____________10] (((((int)in[22 + inPos]) & 255) >>> 6) & 16383) | // [76543210] // [____98765432__] (((((int)in[23 + inPos]) & 255) << 2) & 16383) | // [____3210] // [3210__________] (((((int)in[24 + inPos]) & 255) << 10) & 16383); out[14 + outPos] = // [7654____] // [__________3210] (((((int)in[24 + inPos]) & 255) >>> 4) & 16383) | // [76543210] // [__10987654____] (((((int)in[25 + inPos]) & 255) << 4) & 16383) | // [______10] // [32____________] (((((int)in[26 + inPos]) & 255) << 12) & 16383); out[15 + outPos] = // [765432__] // [________543210] (((((int)in[26 + inPos]) & 255) >>> 2) & 16383) | // [76543210] // [32109876______] (((((int)in[27 + inPos]) & 255) << 6) & 16383); out[16 + outPos] = // [76543210] // [______76543210] (((((int)in[28 + inPos]) & 255) ) & 16383) | // [__543210] // [321098________] (((((int)in[29 + inPos]) & 255) << 8) & 16383); out[17 + outPos] = // [76______] // [____________10] (((((int)in[29 + inPos]) & 255) >>> 6) & 16383) | // [76543210] // [____98765432__] (((((int)in[30 + inPos]) & 255) << 2) & 16383) | // [____3210] // [3210__________] (((((int)in[31 + inPos]) & 255) << 10) & 16383); out[18 + outPos] = // [7654____] // [__________3210] (((((int)in[31 + inPos]) & 255) >>> 4) & 16383) | // [76543210] // [__10987654____] (((((int)in[32 + inPos]) & 255) << 4) & 16383) | // [______10] // [32____________] (((((int)in[33 + inPos]) & 255) << 12) & 16383); out[19 + outPos] = // [765432__] // [________543210] (((((int)in[33 + inPos]) & 255) >>> 2) & 16383) | // [76543210] // [32109876______] (((((int)in[34 + inPos]) & 255) << 6) & 16383); out[20 + outPos] = // [76543210] // [______76543210] (((((int)in[35 + inPos]) & 255) ) & 16383) | // [__543210] // [321098________] (((((int)in[36 + inPos]) & 255) << 8) & 16383); out[21 + outPos] = // [76______] // [____________10] (((((int)in[36 + inPos]) & 255) >>> 6) & 16383) | // [76543210] // [____98765432__] (((((int)in[37 + inPos]) & 255) << 2) & 16383) | // [____3210] // [3210__________] (((((int)in[38 + inPos]) & 255) << 10) & 16383); out[22 + outPos] = // [7654____] // [__________3210] (((((int)in[38 + inPos]) & 255) >>> 4) & 16383) | // [76543210] // [__10987654____] (((((int)in[39 + inPos]) & 255) << 4) & 16383) | // [______10] // [32____________] (((((int)in[40 + inPos]) & 255) << 12) & 16383); out[23 + outPos] = // [765432__] // [________543210] (((((int)in[40 + inPos]) & 255) >>> 2) & 16383) | // [76543210] // [32109876______] (((((int)in[41 + inPos]) & 255) << 6) & 16383); out[24 + outPos] = // [76543210] // [______76543210] (((((int)in[42 + inPos]) & 255) ) & 16383) | // [__543210] // [321098________] (((((int)in[43 + inPos]) & 255) << 8) & 16383); out[25 + outPos] = // [76______] // [____________10] (((((int)in[43 + inPos]) & 255) >>> 6) & 16383) | // [76543210] // [____98765432__] (((((int)in[44 + inPos]) & 255) << 2) & 16383) | // [____3210] // [3210__________] (((((int)in[45 + inPos]) & 255) << 10) & 16383); out[26 + outPos] = // [7654____] // [__________3210] (((((int)in[45 + inPos]) & 255) >>> 4) & 16383) | // [76543210] // [__10987654____] (((((int)in[46 + inPos]) & 255) << 4) & 16383) | // [______10] // [32____________] (((((int)in[47 + inPos]) & 255) << 12) & 16383); out[27 + outPos] = // [765432__] // [________543210] (((((int)in[47 + inPos]) & 255) >>> 2) & 16383) | // [76543210] // [32109876______] (((((int)in[48 + inPos]) & 255) << 6) & 16383); out[28 + outPos] = // [76543210] // [______76543210] (((((int)in[49 + inPos]) & 255) ) & 16383) | // [__543210] // [321098________] (((((int)in[50 + inPos]) & 255) << 8) & 16383); out[29 + outPos] = // [76______] // [____________10] (((((int)in[50 + inPos]) & 255) >>> 6) & 16383) | // [76543210] // [____98765432__] (((((int)in[51 + inPos]) & 255) << 2) & 16383) | // [____3210] // [3210__________] (((((int)in[52 + inPos]) & 255) << 10) & 16383); out[30 + outPos] = // [7654____] // [__________3210] (((((int)in[52 + inPos]) & 255) >>> 4) & 16383) | // [76543210] // [__10987654____] (((((int)in[53 + inPos]) & 255) << 4) & 16383) | // [______10] // [32____________] (((((int)in[54 + inPos]) & 255) << 12) & 16383); out[31 + outPos] = // [765432__] // [________543210] (((((int)in[54 + inPos]) & 255) >>> 2) & 16383) | // [76543210] // [32109876______] (((((int)in[55 + inPos]) & 255) << 6) & 16383); } } private static final class Packer15 extends BytePacker { private Packer15() { super(15); } public final void pack8Values(final int[] in, final int inPos, final byte[] out, final int outPos) { out[ 0 + outPos] = (byte)(( // [76543210] // [_______76543210] ((in[ 0 + inPos] & 32767))) & 255); out[ 1 + outPos] = (byte)(( // [_6543210] // [4321098________] ((in[ 0 + inPos] & 32767) >>> 8) | // [7_______] // [______________0] ((in[ 1 + inPos] & 32767) << 7)) & 255); out[ 2 + outPos] = (byte)(( // [76543210] // [______87654321_] ((in[ 1 + inPos] & 32767) >>> 1)) & 255); out[ 3 + outPos] = (byte)(( // [__543210] // [432109_________] ((in[ 1 + inPos] & 32767) >>> 9) | // [76______] // [_____________10] ((in[ 2 + inPos] & 32767) << 6)) & 255); out[ 4 + outPos] = (byte)(( // [76543210] // [_____98765432__] ((in[ 2 + inPos] & 32767) >>> 2)) & 255); out[ 5 + outPos] = (byte)(( // [___43210] // [43210__________] ((in[ 2 + inPos] & 32767) >>> 10) | // [765_____] // [____________210] ((in[ 3 + inPos] & 32767) << 5)) & 255); out[ 6 + outPos] = (byte)(( // [76543210] // [____09876543___] ((in[ 3 + inPos] & 32767) >>> 3)) & 255); out[ 7 + outPos] = (byte)(( // [____3210] // [4321___________] ((in[ 3 + inPos] & 32767) >>> 11) | // [7654____] // [___________3210] ((in[ 4 + inPos] & 32767) << 4)) & 255); out[ 8 + outPos] = (byte)(( // [76543210] // [___10987654____] ((in[ 4 + inPos] & 32767) >>> 4)) & 255); out[ 9 + outPos] = (byte)(( // [_____210] // [432____________] ((in[ 4 + inPos] & 32767) >>> 12) | // [76543___] // [__________43210] ((in[ 5 + inPos] & 32767) << 3)) & 255); out[10 + outPos] = (byte)(( // [76543210] // [__21098765_____] ((in[ 5 + inPos] & 32767) >>> 5)) & 255); out[11 + outPos] = (byte)(( // [______10] // [43_____________] ((in[ 5 + inPos] & 32767) >>> 13) | // [765432__] // [_________543210] ((in[ 6 + inPos] & 32767) << 2)) & 255); out[12 + outPos] = (byte)(( // [76543210] // [_32109876______] ((in[ 6 + inPos] & 32767) >>> 6)) & 255); out[13 + outPos] = (byte)(( // [_______0] // [4______________] ((in[ 6 + inPos] & 32767) >>> 14) | // [7654321_] // [________6543210] ((in[ 7 + inPos] & 32767) << 1)) & 255); out[14 + outPos] = (byte)(( // [76543210] // [43210987_______] ((in[ 7 + inPos] & 32767) >>> 7)) & 255); } public final void pack32Values(final int[] in, final int inPos, final byte[] out, final int outPos) { out[ 0 + outPos] = (byte)(( // [76543210] // [_______76543210] ((in[ 0 + inPos] & 32767))) & 255); out[ 1 + outPos] = (byte)(( // [_6543210] // [4321098________] ((in[ 0 + inPos] & 32767) >>> 8) | // [7_______] // [______________0] ((in[ 1 + inPos] & 32767) << 7)) & 255); out[ 2 + outPos] = (byte)(( // [76543210] // [______87654321_] ((in[ 1 + inPos] & 32767) >>> 1)) & 255); out[ 3 + outPos] = (byte)(( // [__543210] // [432109_________] ((in[ 1 + inPos] & 32767) >>> 9) | // [76______] // [_____________10] ((in[ 2 + inPos] & 32767) << 6)) & 255); out[ 4 + outPos] = (byte)(( // [76543210] // [_____98765432__] ((in[ 2 + inPos] & 32767) >>> 2)) & 255); out[ 5 + outPos] = (byte)(( // [___43210] // [43210__________] ((in[ 2 + inPos] & 32767) >>> 10) | // [765_____] // [____________210] ((in[ 3 + inPos] & 32767) << 5)) & 255); out[ 6 + outPos] = (byte)(( // [76543210] // [____09876543___] ((in[ 3 + inPos] & 32767) >>> 3)) & 255); out[ 7 + outPos] = (byte)(( // [____3210] // [4321___________] ((in[ 3 + inPos] & 32767) >>> 11) | // [7654____] // [___________3210] ((in[ 4 + inPos] & 32767) << 4)) & 255); out[ 8 + outPos] = (byte)(( // [76543210] // [___10987654____] ((in[ 4 + inPos] & 32767) >>> 4)) & 255); out[ 9 + outPos] = (byte)(( // [_____210] // [432____________] ((in[ 4 + inPos] & 32767) >>> 12) | // [76543___] // [__________43210] ((in[ 5 + inPos] & 32767) << 3)) & 255); out[10 + outPos] = (byte)(( // [76543210] // [__21098765_____] ((in[ 5 + inPos] & 32767) >>> 5)) & 255); out[11 + outPos] = (byte)(( // [______10] // [43_____________] ((in[ 5 + inPos] & 32767) >>> 13) | // [765432__] // [_________543210] ((in[ 6 + inPos] & 32767) << 2)) & 255); out[12 + outPos] = (byte)(( // [76543210] // [_32109876______] ((in[ 6 + inPos] & 32767) >>> 6)) & 255); out[13 + outPos] = (byte)(( // [_______0] // [4______________] ((in[ 6 + inPos] & 32767) >>> 14) | // [7654321_] // [________6543210] ((in[ 7 + inPos] & 32767) << 1)) & 255); out[14 + outPos] = (byte)(( // [76543210] // [43210987_______] ((in[ 7 + inPos] & 32767) >>> 7)) & 255); out[15 + outPos] = (byte)(( // [76543210] // [_______76543210] ((in[ 8 + inPos] & 32767))) & 255); out[16 + outPos] = (byte)(( // [_6543210] // [4321098________] ((in[ 8 + inPos] & 32767) >>> 8) | // [7_______] // [______________0] ((in[ 9 + inPos] & 32767) << 7)) & 255); out[17 + outPos] = (byte)(( // [76543210] // [______87654321_] ((in[ 9 + inPos] & 32767) >>> 1)) & 255); out[18 + outPos] = (byte)(( // [__543210] // [432109_________] ((in[ 9 + inPos] & 32767) >>> 9) | // [76______] // [_____________10] ((in[10 + inPos] & 32767) << 6)) & 255); out[19 + outPos] = (byte)(( // [76543210] // [_____98765432__] ((in[10 + inPos] & 32767) >>> 2)) & 255); out[20 + outPos] = (byte)(( // [___43210] // [43210__________] ((in[10 + inPos] & 32767) >>> 10) | // [765_____] // [____________210] ((in[11 + inPos] & 32767) << 5)) & 255); out[21 + outPos] = (byte)(( // [76543210] // [____09876543___] ((in[11 + inPos] & 32767) >>> 3)) & 255); out[22 + outPos] = (byte)(( // [____3210] // [4321___________] ((in[11 + inPos] & 32767) >>> 11) | // [7654____] // [___________3210] ((in[12 + inPos] & 32767) << 4)) & 255); out[23 + outPos] = (byte)(( // [76543210] // [___10987654____] ((in[12 + inPos] & 32767) >>> 4)) & 255); out[24 + outPos] = (byte)(( // [_____210] // [432____________] ((in[12 + inPos] & 32767) >>> 12) | // [76543___] // [__________43210] ((in[13 + inPos] & 32767) << 3)) & 255); out[25 + outPos] = (byte)(( // [76543210] // [__21098765_____] ((in[13 + inPos] & 32767) >>> 5)) & 255); out[26 + outPos] = (byte)(( // [______10] // [43_____________] ((in[13 + inPos] & 32767) >>> 13) | // [765432__] // [_________543210] ((in[14 + inPos] & 32767) << 2)) & 255); out[27 + outPos] = (byte)(( // [76543210] // [_32109876______] ((in[14 + inPos] & 32767) >>> 6)) & 255); out[28 + outPos] = (byte)(( // [_______0] // [4______________] ((in[14 + inPos] & 32767) >>> 14) | // [7654321_] // [________6543210] ((in[15 + inPos] & 32767) << 1)) & 255); out[29 + outPos] = (byte)(( // [76543210] // [43210987_______] ((in[15 + inPos] & 32767) >>> 7)) & 255); out[30 + outPos] = (byte)(( // [76543210] // [_______76543210] ((in[16 + inPos] & 32767))) & 255); out[31 + outPos] = (byte)(( // [_6543210] // [4321098________] ((in[16 + inPos] & 32767) >>> 8) | // [7_______] // [______________0] ((in[17 + inPos] & 32767) << 7)) & 255); out[32 + outPos] = (byte)(( // [76543210] // [______87654321_] ((in[17 + inPos] & 32767) >>> 1)) & 255); out[33 + outPos] = (byte)(( // [__543210] // [432109_________] ((in[17 + inPos] & 32767) >>> 9) | // [76______] // [_____________10] ((in[18 + inPos] & 32767) << 6)) & 255); out[34 + outPos] = (byte)(( // [76543210] // [_____98765432__] ((in[18 + inPos] & 32767) >>> 2)) & 255); out[35 + outPos] = (byte)(( // [___43210] // [43210__________] ((in[18 + inPos] & 32767) >>> 10) | // [765_____] // [____________210] ((in[19 + inPos] & 32767) << 5)) & 255); out[36 + outPos] = (byte)(( // [76543210] // [____09876543___] ((in[19 + inPos] & 32767) >>> 3)) & 255); out[37 + outPos] = (byte)(( // [____3210] // [4321___________] ((in[19 + inPos] & 32767) >>> 11) | // [7654____] // [___________3210] ((in[20 + inPos] & 32767) << 4)) & 255); out[38 + outPos] = (byte)(( // [76543210] // [___10987654____] ((in[20 + inPos] & 32767) >>> 4)) & 255); out[39 + outPos] = (byte)(( // [_____210] // [432____________] ((in[20 + inPos] & 32767) >>> 12) | // [76543___] // [__________43210] ((in[21 + inPos] & 32767) << 3)) & 255); out[40 + outPos] = (byte)(( // [76543210] // [__21098765_____] ((in[21 + inPos] & 32767) >>> 5)) & 255); out[41 + outPos] = (byte)(( // [______10] // [43_____________] ((in[21 + inPos] & 32767) >>> 13) | // [765432__] // [_________543210] ((in[22 + inPos] & 32767) << 2)) & 255); out[42 + outPos] = (byte)(( // [76543210] // [_32109876______] ((in[22 + inPos] & 32767) >>> 6)) & 255); out[43 + outPos] = (byte)(( // [_______0] // [4______________] ((in[22 + inPos] & 32767) >>> 14) | // [7654321_] // [________6543210] ((in[23 + inPos] & 32767) << 1)) & 255); out[44 + outPos] = (byte)(( // [76543210] // [43210987_______] ((in[23 + inPos] & 32767) >>> 7)) & 255); out[45 + outPos] = (byte)(( // [76543210] // [_______76543210] ((in[24 + inPos] & 32767))) & 255); out[46 + outPos] = (byte)(( // [_6543210] // [4321098________] ((in[24 + inPos] & 32767) >>> 8) | // [7_______] // [______________0] ((in[25 + inPos] & 32767) << 7)) & 255); out[47 + outPos] = (byte)(( // [76543210] // [______87654321_] ((in[25 + inPos] & 32767) >>> 1)) & 255); out[48 + outPos] = (byte)(( // [__543210] // [432109_________] ((in[25 + inPos] & 32767) >>> 9) | // [76______] // [_____________10] ((in[26 + inPos] & 32767) << 6)) & 255); out[49 + outPos] = (byte)(( // [76543210] // [_____98765432__] ((in[26 + inPos] & 32767) >>> 2)) & 255); out[50 + outPos] = (byte)(( // [___43210] // [43210__________] ((in[26 + inPos] & 32767) >>> 10) | // [765_____] // [____________210] ((in[27 + inPos] & 32767) << 5)) & 255); out[51 + outPos] = (byte)(( // [76543210] // [____09876543___] ((in[27 + inPos] & 32767) >>> 3)) & 255); out[52 + outPos] = (byte)(( // [____3210] // [4321___________] ((in[27 + inPos] & 32767) >>> 11) | // [7654____] // [___________3210] ((in[28 + inPos] & 32767) << 4)) & 255); out[53 + outPos] = (byte)(( // [76543210] // [___10987654____] ((in[28 + inPos] & 32767) >>> 4)) & 255); out[54 + outPos] = (byte)(( // [_____210] // [432____________] ((in[28 + inPos] & 32767) >>> 12) | // [76543___] // [__________43210] ((in[29 + inPos] & 32767) << 3)) & 255); out[55 + outPos] = (byte)(( // [76543210] // [__21098765_____] ((in[29 + inPos] & 32767) >>> 5)) & 255); out[56 + outPos] = (byte)(( // [______10] // [43_____________] ((in[29 + inPos] & 32767) >>> 13) | // [765432__] // [_________543210] ((in[30 + inPos] & 32767) << 2)) & 255); out[57 + outPos] = (byte)(( // [76543210] // [_32109876______] ((in[30 + inPos] & 32767) >>> 6)) & 255); out[58 + outPos] = (byte)(( // [_______0] // [4______________] ((in[30 + inPos] & 32767) >>> 14) | // [7654321_] // [________6543210] ((in[31 + inPos] & 32767) << 1)) & 255); out[59 + outPos] = (byte)(( // [76543210] // [43210987_______] ((in[31 + inPos] & 32767) >>> 7)) & 255); } public final void unpack8Values(final byte[] in, final int inPos, final int[] out, final int outPos) { out[ 0 + outPos] = // [76543210] // [_______76543210] (((((int)in[ 0 + inPos]) & 255) ) & 32767) | // [_6543210] // [4321098________] (((((int)in[ 1 + inPos]) & 255) << 8) & 32767); out[ 1 + outPos] = // [7_______] // [______________0] (((((int)in[ 1 + inPos]) & 255) >>> 7) & 32767) | // [76543210] // [______87654321_] (((((int)in[ 2 + inPos]) & 255) << 1) & 32767) | // [__543210] // [432109_________] (((((int)in[ 3 + inPos]) & 255) << 9) & 32767); out[ 2 + outPos] = // [76______] // [_____________10] (((((int)in[ 3 + inPos]) & 255) >>> 6) & 32767) | // [76543210] // [_____98765432__] (((((int)in[ 4 + inPos]) & 255) << 2) & 32767) | // [___43210] // [43210__________] (((((int)in[ 5 + inPos]) & 255) << 10) & 32767); out[ 3 + outPos] = // [765_____] // [____________210] (((((int)in[ 5 + inPos]) & 255) >>> 5) & 32767) | // [76543210] // [____09876543___] (((((int)in[ 6 + inPos]) & 255) << 3) & 32767) | // [____3210] // [4321___________] (((((int)in[ 7 + inPos]) & 255) << 11) & 32767); out[ 4 + outPos] = // [7654____] // [___________3210] (((((int)in[ 7 + inPos]) & 255) >>> 4) & 32767) | // [76543210] // [___10987654____] (((((int)in[ 8 + inPos]) & 255) << 4) & 32767) | // [_____210] // [432____________] (((((int)in[ 9 + inPos]) & 255) << 12) & 32767); out[ 5 + outPos] = // [76543___] // [__________43210] (((((int)in[ 9 + inPos]) & 255) >>> 3) & 32767) | // [76543210] // [__21098765_____] (((((int)in[10 + inPos]) & 255) << 5) & 32767) | // [______10] // [43_____________] (((((int)in[11 + inPos]) & 255) << 13) & 32767); out[ 6 + outPos] = // [765432__] // [_________543210] (((((int)in[11 + inPos]) & 255) >>> 2) & 32767) | // [76543210] // [_32109876______] (((((int)in[12 + inPos]) & 255) << 6) & 32767) | // [_______0] // [4______________] (((((int)in[13 + inPos]) & 255) << 14) & 32767); out[ 7 + outPos] = // [7654321_] // [________6543210] (((((int)in[13 + inPos]) & 255) >>> 1) & 32767) | // [76543210] // [43210987_______] (((((int)in[14 + inPos]) & 255) << 7) & 32767); } public final void unpack32Values(final byte[] in, final int inPos, final int[] out, final int outPos) { out[ 0 + outPos] = // [76543210] // [_______76543210] (((((int)in[ 0 + inPos]) & 255) ) & 32767) | // [_6543210] // [4321098________] (((((int)in[ 1 + inPos]) & 255) << 8) & 32767); out[ 1 + outPos] = // [7_______] // [______________0] (((((int)in[ 1 + inPos]) & 255) >>> 7) & 32767) | // [76543210] // [______87654321_] (((((int)in[ 2 + inPos]) & 255) << 1) & 32767) | // [__543210] // [432109_________] (((((int)in[ 3 + inPos]) & 255) << 9) & 32767); out[ 2 + outPos] = // [76______] // [_____________10] (((((int)in[ 3 + inPos]) & 255) >>> 6) & 32767) | // [76543210] // [_____98765432__] (((((int)in[ 4 + inPos]) & 255) << 2) & 32767) | // [___43210] // [43210__________] (((((int)in[ 5 + inPos]) & 255) << 10) & 32767); out[ 3 + outPos] = // [765_____] // [____________210] (((((int)in[ 5 + inPos]) & 255) >>> 5) & 32767) | // [76543210] // [____09876543___] (((((int)in[ 6 + inPos]) & 255) << 3) & 32767) | // [____3210] // [4321___________] (((((int)in[ 7 + inPos]) & 255) << 11) & 32767); out[ 4 + outPos] = // [7654____] // [___________3210] (((((int)in[ 7 + inPos]) & 255) >>> 4) & 32767) | // [76543210] // [___10987654____] (((((int)in[ 8 + inPos]) & 255) << 4) & 32767) | // [_____210] // [432____________] (((((int)in[ 9 + inPos]) & 255) << 12) & 32767); out[ 5 + outPos] = // [76543___] // [__________43210] (((((int)in[ 9 + inPos]) & 255) >>> 3) & 32767) | // [76543210] // [__21098765_____] (((((int)in[10 + inPos]) & 255) << 5) & 32767) | // [______10] // [43_____________] (((((int)in[11 + inPos]) & 255) << 13) & 32767); out[ 6 + outPos] = // [765432__] // [_________543210] (((((int)in[11 + inPos]) & 255) >>> 2) & 32767) | // [76543210] // [_32109876______] (((((int)in[12 + inPos]) & 255) << 6) & 32767) | // [_______0] // [4______________] (((((int)in[13 + inPos]) & 255) << 14) & 32767); out[ 7 + outPos] = // [7654321_] // [________6543210] (((((int)in[13 + inPos]) & 255) >>> 1) & 32767) | // [76543210] // [43210987_______] (((((int)in[14 + inPos]) & 255) << 7) & 32767); out[ 8 + outPos] = // [76543210] // [_______76543210] (((((int)in[15 + inPos]) & 255) ) & 32767) | // [_6543210] // [4321098________] (((((int)in[16 + inPos]) & 255) << 8) & 32767); out[ 9 + outPos] = // [7_______] // [______________0] (((((int)in[16 + inPos]) & 255) >>> 7) & 32767) | // [76543210] // [______87654321_] (((((int)in[17 + inPos]) & 255) << 1) & 32767) | // [__543210] // [432109_________] (((((int)in[18 + inPos]) & 255) << 9) & 32767); out[10 + outPos] = // [76______] // [_____________10] (((((int)in[18 + inPos]) & 255) >>> 6) & 32767) | // [76543210] // [_____98765432__] (((((int)in[19 + inPos]) & 255) << 2) & 32767) | // [___43210] // [43210__________] (((((int)in[20 + inPos]) & 255) << 10) & 32767); out[11 + outPos] = // [765_____] // [____________210] (((((int)in[20 + inPos]) & 255) >>> 5) & 32767) | // [76543210] // [____09876543___] (((((int)in[21 + inPos]) & 255) << 3) & 32767) | // [____3210] // [4321___________] (((((int)in[22 + inPos]) & 255) << 11) & 32767); out[12 + outPos] = // [7654____] // [___________3210] (((((int)in[22 + inPos]) & 255) >>> 4) & 32767) | // [76543210] // [___10987654____] (((((int)in[23 + inPos]) & 255) << 4) & 32767) | // [_____210] // [432____________] (((((int)in[24 + inPos]) & 255) << 12) & 32767); out[13 + outPos] = // [76543___] // [__________43210] (((((int)in[24 + inPos]) & 255) >>> 3) & 32767) | // [76543210] // [__21098765_____] (((((int)in[25 + inPos]) & 255) << 5) & 32767) | // [______10] // [43_____________] (((((int)in[26 + inPos]) & 255) << 13) & 32767); out[14 + outPos] = // [765432__] // [_________543210] (((((int)in[26 + inPos]) & 255) >>> 2) & 32767) | // [76543210] // [_32109876______] (((((int)in[27 + inPos]) & 255) << 6) & 32767) | // [_______0] // [4______________] (((((int)in[28 + inPos]) & 255) << 14) & 32767); out[15 + outPos] = // [7654321_] // [________6543210] (((((int)in[28 + inPos]) & 255) >>> 1) & 32767) | // [76543210] // [43210987_______] (((((int)in[29 + inPos]) & 255) << 7) & 32767); out[16 + outPos] = // [76543210] // [_______76543210] (((((int)in[30 + inPos]) & 255) ) & 32767) | // [_6543210] // [4321098________] (((((int)in[31 + inPos]) & 255) << 8) & 32767); out[17 + outPos] = // [7_______] // [______________0] (((((int)in[31 + inPos]) & 255) >>> 7) & 32767) | // [76543210] // [______87654321_] (((((int)in[32 + inPos]) & 255) << 1) & 32767) | // [__543210] // [432109_________] (((((int)in[33 + inPos]) & 255) << 9) & 32767); out[18 + outPos] = // [76______] // [_____________10] (((((int)in[33 + inPos]) & 255) >>> 6) & 32767) | // [76543210] // [_____98765432__] (((((int)in[34 + inPos]) & 255) << 2) & 32767) | // [___43210] // [43210__________] (((((int)in[35 + inPos]) & 255) << 10) & 32767); out[19 + outPos] = // [765_____] // [____________210] (((((int)in[35 + inPos]) & 255) >>> 5) & 32767) | // [76543210] // [____09876543___] (((((int)in[36 + inPos]) & 255) << 3) & 32767) | // [____3210] // [4321___________] (((((int)in[37 + inPos]) & 255) << 11) & 32767); out[20 + outPos] = // [7654____] // [___________3210] (((((int)in[37 + inPos]) & 255) >>> 4) & 32767) | // [76543210] // [___10987654____] (((((int)in[38 + inPos]) & 255) << 4) & 32767) | // [_____210] // [432____________] (((((int)in[39 + inPos]) & 255) << 12) & 32767); out[21 + outPos] = // [76543___] // [__________43210] (((((int)in[39 + inPos]) & 255) >>> 3) & 32767) | // [76543210] // [__21098765_____] (((((int)in[40 + inPos]) & 255) << 5) & 32767) | // [______10] // [43_____________] (((((int)in[41 + inPos]) & 255) << 13) & 32767); out[22 + outPos] = // [765432__] // [_________543210] (((((int)in[41 + inPos]) & 255) >>> 2) & 32767) | // [76543210] // [_32109876______] (((((int)in[42 + inPos]) & 255) << 6) & 32767) | // [_______0] // [4______________] (((((int)in[43 + inPos]) & 255) << 14) & 32767); out[23 + outPos] = // [7654321_] // [________6543210] (((((int)in[43 + inPos]) & 255) >>> 1) & 32767) | // [76543210] // [43210987_______] (((((int)in[44 + inPos]) & 255) << 7) & 32767); out[24 + outPos] = // [76543210] // [_______76543210] (((((int)in[45 + inPos]) & 255) ) & 32767) | // [_6543210] // [4321098________] (((((int)in[46 + inPos]) & 255) << 8) & 32767); out[25 + outPos] = // [7_______] // [______________0] (((((int)in[46 + inPos]) & 255) >>> 7) & 32767) | // [76543210] // [______87654321_] (((((int)in[47 + inPos]) & 255) << 1) & 32767) | // [__543210] // [432109_________] (((((int)in[48 + inPos]) & 255) << 9) & 32767); out[26 + outPos] = // [76______] // [_____________10] (((((int)in[48 + inPos]) & 255) >>> 6) & 32767) | // [76543210] // [_____98765432__] (((((int)in[49 + inPos]) & 255) << 2) & 32767) | // [___43210] // [43210__________] (((((int)in[50 + inPos]) & 255) << 10) & 32767); out[27 + outPos] = // [765_____] // [____________210] (((((int)in[50 + inPos]) & 255) >>> 5) & 32767) | // [76543210] // [____09876543___] (((((int)in[51 + inPos]) & 255) << 3) & 32767) | // [____3210] // [4321___________] (((((int)in[52 + inPos]) & 255) << 11) & 32767); out[28 + outPos] = // [7654____] // [___________3210] (((((int)in[52 + inPos]) & 255) >>> 4) & 32767) | // [76543210] // [___10987654____] (((((int)in[53 + inPos]) & 255) << 4) & 32767) | // [_____210] // [432____________] (((((int)in[54 + inPos]) & 255) << 12) & 32767); out[29 + outPos] = // [76543___] // [__________43210] (((((int)in[54 + inPos]) & 255) >>> 3) & 32767) | // [76543210] // [__21098765_____] (((((int)in[55 + inPos]) & 255) << 5) & 32767) | // [______10] // [43_____________] (((((int)in[56 + inPos]) & 255) << 13) & 32767); out[30 + outPos] = // [765432__] // [_________543210] (((((int)in[56 + inPos]) & 255) >>> 2) & 32767) | // [76543210] // [_32109876______] (((((int)in[57 + inPos]) & 255) << 6) & 32767) | // [_______0] // [4______________] (((((int)in[58 + inPos]) & 255) << 14) & 32767); out[31 + outPos] = // [7654321_] // [________6543210] (((((int)in[58 + inPos]) & 255) >>> 1) & 32767) | // [76543210] // [43210987_______] (((((int)in[59 + inPos]) & 255) << 7) & 32767); } } private static final class Packer16 extends BytePacker { private Packer16() { super(16); } public final void pack8Values(final int[] in, final int inPos, final byte[] out, final int outPos) { out[ 0 + outPos] = (byte)(( // [76543210] // [________76543210] ((in[ 0 + inPos] & 65535))) & 255); out[ 1 + outPos] = (byte)(( // [76543210] // [54321098________] ((in[ 0 + inPos] & 65535) >>> 8)) & 255); out[ 2 + outPos] = (byte)(( // [76543210] // [________76543210] ((in[ 1 + inPos] & 65535))) & 255); out[ 3 + outPos] = (byte)(( // [76543210] // [54321098________] ((in[ 1 + inPos] & 65535) >>> 8)) & 255); out[ 4 + outPos] = (byte)(( // [76543210] // [________76543210] ((in[ 2 + inPos] & 65535))) & 255); out[ 5 + outPos] = (byte)(( // [76543210] // [54321098________] ((in[ 2 + inPos] & 65535) >>> 8)) & 255); out[ 6 + outPos] = (byte)(( // [76543210] // [________76543210] ((in[ 3 + inPos] & 65535))) & 255); out[ 7 + outPos] = (byte)(( // [76543210] // [54321098________] ((in[ 3 + inPos] & 65535) >>> 8)) & 255); out[ 8 + outPos] = (byte)(( // [76543210] // [________76543210] ((in[ 4 + inPos] & 65535))) & 255); out[ 9 + outPos] = (byte)(( // [76543210] // [54321098________] ((in[ 4 + inPos] & 65535) >>> 8)) & 255); out[10 + outPos] = (byte)(( // [76543210] // [________76543210] ((in[ 5 + inPos] & 65535))) & 255); out[11 + outPos] = (byte)(( // [76543210] // [54321098________] ((in[ 5 + inPos] & 65535) >>> 8)) & 255); out[12 + outPos] = (byte)(( // [76543210] // [________76543210] ((in[ 6 + inPos] & 65535))) & 255); out[13 + outPos] = (byte)(( // [76543210] // [54321098________] ((in[ 6 + inPos] & 65535) >>> 8)) & 255); out[14 + outPos] = (byte)(( // [76543210] // [________76543210] ((in[ 7 + inPos] & 65535))) & 255); out[15 + outPos] = (byte)(( // [76543210] // [54321098________] ((in[ 7 + inPos] & 65535) >>> 8)) & 255); } public final void pack32Values(final int[] in, final int inPos, final byte[] out, final int outPos) { out[ 0 + outPos] = (byte)(( // [76543210] // [________76543210] ((in[ 0 + inPos] & 65535))) & 255); out[ 1 + outPos] = (byte)(( // [76543210] // [54321098________] ((in[ 0 + inPos] & 65535) >>> 8)) & 255); out[ 2 + outPos] = (byte)(( // [76543210] // [________76543210] ((in[ 1 + inPos] & 65535))) & 255); out[ 3 + outPos] = (byte)(( // [76543210] // [54321098________] ((in[ 1 + inPos] & 65535) >>> 8)) & 255); out[ 4 + outPos] = (byte)(( // [76543210] // [________76543210] ((in[ 2 + inPos] & 65535))) & 255); out[ 5 + outPos] = (byte)(( // [76543210] // [54321098________] ((in[ 2 + inPos] & 65535) >>> 8)) & 255); out[ 6 + outPos] = (byte)(( // [76543210] // [________76543210] ((in[ 3 + inPos] & 65535))) & 255); out[ 7 + outPos] = (byte)(( // [76543210] // [54321098________] ((in[ 3 + inPos] & 65535) >>> 8)) & 255); out[ 8 + outPos] = (byte)(( // [76543210] // [________76543210] ((in[ 4 + inPos] & 65535))) & 255); out[ 9 + outPos] = (byte)(( // [76543210] // [54321098________] ((in[ 4 + inPos] & 65535) >>> 8)) & 255); out[10 + outPos] = (byte)(( // [76543210] // [________76543210] ((in[ 5 + inPos] & 65535))) & 255); out[11 + outPos] = (byte)(( // [76543210] // [54321098________] ((in[ 5 + inPos] & 65535) >>> 8)) & 255); out[12 + outPos] = (byte)(( // [76543210] // [________76543210] ((in[ 6 + inPos] & 65535))) & 255); out[13 + outPos] = (byte)(( // [76543210] // [54321098________] ((in[ 6 + inPos] & 65535) >>> 8)) & 255); out[14 + outPos] = (byte)(( // [76543210] // [________76543210] ((in[ 7 + inPos] & 65535))) & 255); out[15 + outPos] = (byte)(( // [76543210] // [54321098________] ((in[ 7 + inPos] & 65535) >>> 8)) & 255); out[16 + outPos] = (byte)(( // [76543210] // [________76543210] ((in[ 8 + inPos] & 65535))) & 255); out[17 + outPos] = (byte)(( // [76543210] // [54321098________] ((in[ 8 + inPos] & 65535) >>> 8)) & 255); out[18 + outPos] = (byte)(( // [76543210] // [________76543210] ((in[ 9 + inPos] & 65535))) & 255); out[19 + outPos] = (byte)(( // [76543210] // [54321098________] ((in[ 9 + inPos] & 65535) >>> 8)) & 255); out[20 + outPos] = (byte)(( // [76543210] // [________76543210] ((in[10 + inPos] & 65535))) & 255); out[21 + outPos] = (byte)(( // [76543210] // [54321098________] ((in[10 + inPos] & 65535) >>> 8)) & 255); out[22 + outPos] = (byte)(( // [76543210] // [________76543210] ((in[11 + inPos] & 65535))) & 255); out[23 + outPos] = (byte)(( // [76543210] // [54321098________] ((in[11 + inPos] & 65535) >>> 8)) & 255); out[24 + outPos] = (byte)(( // [76543210] // [________76543210] ((in[12 + inPos] & 65535))) & 255); out[25 + outPos] = (byte)(( // [76543210] // [54321098________] ((in[12 + inPos] & 65535) >>> 8)) & 255); out[26 + outPos] = (byte)(( // [76543210] // [________76543210] ((in[13 + inPos] & 65535))) & 255); out[27 + outPos] = (byte)(( // [76543210] // [54321098________] ((in[13 + inPos] & 65535) >>> 8)) & 255); out[28 + outPos] = (byte)(( // [76543210] // [________76543210] ((in[14 + inPos] & 65535))) & 255); out[29 + outPos] = (byte)(( // [76543210] // [54321098________] ((in[14 + inPos] & 65535) >>> 8)) & 255); out[30 + outPos] = (byte)(( // [76543210] // [________76543210] ((in[15 + inPos] & 65535))) & 255); out[31 + outPos] = (byte)(( // [76543210] // [54321098________] ((in[15 + inPos] & 65535) >>> 8)) & 255); out[32 + outPos] = (byte)(( // [76543210] // [________76543210] ((in[16 + inPos] & 65535))) & 255); out[33 + outPos] = (byte)(( // [76543210] // [54321098________] ((in[16 + inPos] & 65535) >>> 8)) & 255); out[34 + outPos] = (byte)(( // [76543210] // [________76543210] ((in[17 + inPos] & 65535))) & 255); out[35 + outPos] = (byte)(( // [76543210] // [54321098________] ((in[17 + inPos] & 65535) >>> 8)) & 255); out[36 + outPos] = (byte)(( // [76543210] // [________76543210] ((in[18 + inPos] & 65535))) & 255); out[37 + outPos] = (byte)(( // [76543210] // [54321098________] ((in[18 + inPos] & 65535) >>> 8)) & 255); out[38 + outPos] = (byte)(( // [76543210] // [________76543210] ((in[19 + inPos] & 65535))) & 255); out[39 + outPos] = (byte)(( // [76543210] // [54321098________] ((in[19 + inPos] & 65535) >>> 8)) & 255); out[40 + outPos] = (byte)(( // [76543210] // [________76543210] ((in[20 + inPos] & 65535))) & 255); out[41 + outPos] = (byte)(( // [76543210] // [54321098________] ((in[20 + inPos] & 65535) >>> 8)) & 255); out[42 + outPos] = (byte)(( // [76543210] // [________76543210] ((in[21 + inPos] & 65535))) & 255); out[43 + outPos] = (byte)(( // [76543210] // [54321098________] ((in[21 + inPos] & 65535) >>> 8)) & 255); out[44 + outPos] = (byte)(( // [76543210] // [________76543210] ((in[22 + inPos] & 65535))) & 255); out[45 + outPos] = (byte)(( // [76543210] // [54321098________] ((in[22 + inPos] & 65535) >>> 8)) & 255); out[46 + outPos] = (byte)(( // [76543210] // [________76543210] ((in[23 + inPos] & 65535))) & 255); out[47 + outPos] = (byte)(( // [76543210] // [54321098________] ((in[23 + inPos] & 65535) >>> 8)) & 255); out[48 + outPos] = (byte)(( // [76543210] // [________76543210] ((in[24 + inPos] & 65535))) & 255); out[49 + outPos] = (byte)(( // [76543210] // [54321098________] ((in[24 + inPos] & 65535) >>> 8)) & 255); out[50 + outPos] = (byte)(( // [76543210] // [________76543210] ((in[25 + inPos] & 65535))) & 255); out[51 + outPos] = (byte)(( // [76543210] // [54321098________] ((in[25 + inPos] & 65535) >>> 8)) & 255); out[52 + outPos] = (byte)(( // [76543210] // [________76543210] ((in[26 + inPos] & 65535))) & 255); out[53 + outPos] = (byte)(( // [76543210] // [54321098________] ((in[26 + inPos] & 65535) >>> 8)) & 255); out[54 + outPos] = (byte)(( // [76543210] // [________76543210] ((in[27 + inPos] & 65535))) & 255); out[55 + outPos] = (byte)(( // [76543210] // [54321098________] ((in[27 + inPos] & 65535) >>> 8)) & 255); out[56 + outPos] = (byte)(( // [76543210] // [________76543210] ((in[28 + inPos] & 65535))) & 255); out[57 + outPos] = (byte)(( // [76543210] // [54321098________] ((in[28 + inPos] & 65535) >>> 8)) & 255); out[58 + outPos] = (byte)(( // [76543210] // [________76543210] ((in[29 + inPos] & 65535))) & 255); out[59 + outPos] = (byte)(( // [76543210] // [54321098________] ((in[29 + inPos] & 65535) >>> 8)) & 255); out[60 + outPos] = (byte)(( // [76543210] // [________76543210] ((in[30 + inPos] & 65535))) & 255); out[61 + outPos] = (byte)(( // [76543210] // [54321098________] ((in[30 + inPos] & 65535) >>> 8)) & 255); out[62 + outPos] = (byte)(( // [76543210] // [________76543210] ((in[31 + inPos] & 65535))) & 255); out[63 + outPos] = (byte)(( // [76543210] // [54321098________] ((in[31 + inPos] & 65535) >>> 8)) & 255); } public final void unpack8Values(final byte[] in, final int inPos, final int[] out, final int outPos) { out[ 0 + outPos] = // [76543210] // [________76543210] (((((int)in[ 0 + inPos]) & 255) ) & 65535) | // [76543210] // [54321098________] (((((int)in[ 1 + inPos]) & 255) << 8) & 65535); out[ 1 + outPos] = // [76543210] // [________76543210] (((((int)in[ 2 + inPos]) & 255) ) & 65535) | // [76543210] // [54321098________] (((((int)in[ 3 + inPos]) & 255) << 8) & 65535); out[ 2 + outPos] = // [76543210] // [________76543210] (((((int)in[ 4 + inPos]) & 255) ) & 65535) | // [76543210] // [54321098________] (((((int)in[ 5 + inPos]) & 255) << 8) & 65535); out[ 3 + outPos] = // [76543210] // [________76543210] (((((int)in[ 6 + inPos]) & 255) ) & 65535) | // [76543210] // [54321098________] (((((int)in[ 7 + inPos]) & 255) << 8) & 65535); out[ 4 + outPos] = // [76543210] // [________76543210] (((((int)in[ 8 + inPos]) & 255) ) & 65535) | // [76543210] // [54321098________] (((((int)in[ 9 + inPos]) & 255) << 8) & 65535); out[ 5 + outPos] = // [76543210] // [________76543210] (((((int)in[10 + inPos]) & 255) ) & 65535) | // [76543210] // [54321098________] (((((int)in[11 + inPos]) & 255) << 8) & 65535); out[ 6 + outPos] = // [76543210] // [________76543210] (((((int)in[12 + inPos]) & 255) ) & 65535) | // [76543210] // [54321098________] (((((int)in[13 + inPos]) & 255) << 8) & 65535); out[ 7 + outPos] = // [76543210] // [________76543210] (((((int)in[14 + inPos]) & 255) ) & 65535) | // [76543210] // [54321098________] (((((int)in[15 + inPos]) & 255) << 8) & 65535); } public final void unpack32Values(final byte[] in, final int inPos, final int[] out, final int outPos) { out[ 0 + outPos] = // [76543210] // [________76543210] (((((int)in[ 0 + inPos]) & 255) ) & 65535) | // [76543210] // [54321098________] (((((int)in[ 1 + inPos]) & 255) << 8) & 65535); out[ 1 + outPos] = // [76543210] // [________76543210] (((((int)in[ 2 + inPos]) & 255) ) & 65535) | // [76543210] // [54321098________] (((((int)in[ 3 + inPos]) & 255) << 8) & 65535); out[ 2 + outPos] = // [76543210] // [________76543210] (((((int)in[ 4 + inPos]) & 255) ) & 65535) | // [76543210] // [54321098________] (((((int)in[ 5 + inPos]) & 255) << 8) & 65535); out[ 3 + outPos] = // [76543210] // [________76543210] (((((int)in[ 6 + inPos]) & 255) ) & 65535) | // [76543210] // [54321098________] (((((int)in[ 7 + inPos]) & 255) << 8) & 65535); out[ 4 + outPos] = // [76543210] // [________76543210] (((((int)in[ 8 + inPos]) & 255) ) & 65535) | // [76543210] // [54321098________] (((((int)in[ 9 + inPos]) & 255) << 8) & 65535); out[ 5 + outPos] = // [76543210] // [________76543210] (((((int)in[10 + inPos]) & 255) ) & 65535) | // [76543210] // [54321098________] (((((int)in[11 + inPos]) & 255) << 8) & 65535); out[ 6 + outPos] = // [76543210] // [________76543210] (((((int)in[12 + inPos]) & 255) ) & 65535) | // [76543210] // [54321098________] (((((int)in[13 + inPos]) & 255) << 8) & 65535); out[ 7 + outPos] = // [76543210] // [________76543210] (((((int)in[14 + inPos]) & 255) ) & 65535) | // [76543210] // [54321098________] (((((int)in[15 + inPos]) & 255) << 8) & 65535); out[ 8 + outPos] = // [76543210] // [________76543210] (((((int)in[16 + inPos]) & 255) ) & 65535) | // [76543210] // [54321098________] (((((int)in[17 + inPos]) & 255) << 8) & 65535); out[ 9 + outPos] = // [76543210] // [________76543210] (((((int)in[18 + inPos]) & 255) ) & 65535) | // [76543210] // [54321098________] (((((int)in[19 + inPos]) & 255) << 8) & 65535); out[10 + outPos] = // [76543210] // [________76543210] (((((int)in[20 + inPos]) & 255) ) & 65535) | // [76543210] // [54321098________] (((((int)in[21 + inPos]) & 255) << 8) & 65535); out[11 + outPos] = // [76543210] // [________76543210] (((((int)in[22 + inPos]) & 255) ) & 65535) | // [76543210] // [54321098________] (((((int)in[23 + inPos]) & 255) << 8) & 65535); out[12 + outPos] = // [76543210] // [________76543210] (((((int)in[24 + inPos]) & 255) ) & 65535) | // [76543210] // [54321098________] (((((int)in[25 + inPos]) & 255) << 8) & 65535); out[13 + outPos] = // [76543210] // [________76543210] (((((int)in[26 + inPos]) & 255) ) & 65535) | // [76543210] // [54321098________] (((((int)in[27 + inPos]) & 255) << 8) & 65535); out[14 + outPos] = // [76543210] // [________76543210] (((((int)in[28 + inPos]) & 255) ) & 65535) | // [76543210] // [54321098________] (((((int)in[29 + inPos]) & 255) << 8) & 65535); out[15 + outPos] = // [76543210] // [________76543210] (((((int)in[30 + inPos]) & 255) ) & 65535) | // [76543210] // [54321098________] (((((int)in[31 + inPos]) & 255) << 8) & 65535); out[16 + outPos] = // [76543210] // [________76543210] (((((int)in[32 + inPos]) & 255) ) & 65535) | // [76543210] // [54321098________] (((((int)in[33 + inPos]) & 255) << 8) & 65535); out[17 + outPos] = // [76543210] // [________76543210] (((((int)in[34 + inPos]) & 255) ) & 65535) | // [76543210] // [54321098________] (((((int)in[35 + inPos]) & 255) << 8) & 65535); out[18 + outPos] = // [76543210] // [________76543210] (((((int)in[36 + inPos]) & 255) ) & 65535) | // [76543210] // [54321098________] (((((int)in[37 + inPos]) & 255) << 8) & 65535); out[19 + outPos] = // [76543210] // [________76543210] (((((int)in[38 + inPos]) & 255) ) & 65535) | // [76543210] // [54321098________] (((((int)in[39 + inPos]) & 255) << 8) & 65535); out[20 + outPos] = // [76543210] // [________76543210] (((((int)in[40 + inPos]) & 255) ) & 65535) | // [76543210] // [54321098________] (((((int)in[41 + inPos]) & 255) << 8) & 65535); out[21 + outPos] = // [76543210] // [________76543210] (((((int)in[42 + inPos]) & 255) ) & 65535) | // [76543210] // [54321098________] (((((int)in[43 + inPos]) & 255) << 8) & 65535); out[22 + outPos] = // [76543210] // [________76543210] (((((int)in[44 + inPos]) & 255) ) & 65535) | // [76543210] // [54321098________] (((((int)in[45 + inPos]) & 255) << 8) & 65535); out[23 + outPos] = // [76543210] // [________76543210] (((((int)in[46 + inPos]) & 255) ) & 65535) | // [76543210] // [54321098________] (((((int)in[47 + inPos]) & 255) << 8) & 65535); out[24 + outPos] = // [76543210] // [________76543210] (((((int)in[48 + inPos]) & 255) ) & 65535) | // [76543210] // [54321098________] (((((int)in[49 + inPos]) & 255) << 8) & 65535); out[25 + outPos] = // [76543210] // [________76543210] (((((int)in[50 + inPos]) & 255) ) & 65535) | // [76543210] // [54321098________] (((((int)in[51 + inPos]) & 255) << 8) & 65535); out[26 + outPos] = // [76543210] // [________76543210] (((((int)in[52 + inPos]) & 255) ) & 65535) | // [76543210] // [54321098________] (((((int)in[53 + inPos]) & 255) << 8) & 65535); out[27 + outPos] = // [76543210] // [________76543210] (((((int)in[54 + inPos]) & 255) ) & 65535) | // [76543210] // [54321098________] (((((int)in[55 + inPos]) & 255) << 8) & 65535); out[28 + outPos] = // [76543210] // [________76543210] (((((int)in[56 + inPos]) & 255) ) & 65535) | // [76543210] // [54321098________] (((((int)in[57 + inPos]) & 255) << 8) & 65535); out[29 + outPos] = // [76543210] // [________76543210] (((((int)in[58 + inPos]) & 255) ) & 65535) | // [76543210] // [54321098________] (((((int)in[59 + inPos]) & 255) << 8) & 65535); out[30 + outPos] = // [76543210] // [________76543210] (((((int)in[60 + inPos]) & 255) ) & 65535) | // [76543210] // [54321098________] (((((int)in[61 + inPos]) & 255) << 8) & 65535); out[31 + outPos] = // [76543210] // [________76543210] (((((int)in[62 + inPos]) & 255) ) & 65535) | // [76543210] // [54321098________] (((((int)in[63 + inPos]) & 255) << 8) & 65535); } } private static final class Packer17 extends BytePacker { private Packer17() { super(17); } public final void pack8Values(final int[] in, final int inPos, final byte[] out, final int outPos) { out[ 0 + outPos] = (byte)(( // [76543210] // [_________76543210] ((in[ 0 + inPos] & 131071))) & 255); out[ 1 + outPos] = (byte)(( // [76543210] // [_54321098________] ((in[ 0 + inPos] & 131071) >>> 8)) & 255); out[ 2 + outPos] = (byte)(( // [_______0] // [6________________] ((in[ 0 + inPos] & 131071) >>> 16) | // [7654321_] // [__________6543210] ((in[ 1 + inPos] & 131071) << 1)) & 255); out[ 3 + outPos] = (byte)(( // [76543210] // [__43210987_______] ((in[ 1 + inPos] & 131071) >>> 7)) & 255); out[ 4 + outPos] = (byte)(( // [______10] // [65_______________] ((in[ 1 + inPos] & 131071) >>> 15) | // [765432__] // [___________543210] ((in[ 2 + inPos] & 131071) << 2)) & 255); out[ 5 + outPos] = (byte)(( // [76543210] // [___32109876______] ((in[ 2 + inPos] & 131071) >>> 6)) & 255); out[ 6 + outPos] = (byte)(( // [_____210] // [654______________] ((in[ 2 + inPos] & 131071) >>> 14) | // [76543___] // [____________43210] ((in[ 3 + inPos] & 131071) << 3)) & 255); out[ 7 + outPos] = (byte)(( // [76543210] // [____21098765_____] ((in[ 3 + inPos] & 131071) >>> 5)) & 255); out[ 8 + outPos] = (byte)(( // [____3210] // [6543_____________] ((in[ 3 + inPos] & 131071) >>> 13) | // [7654____] // [_____________3210] ((in[ 4 + inPos] & 131071) << 4)) & 255); out[ 9 + outPos] = (byte)(( // [76543210] // [_____10987654____] ((in[ 4 + inPos] & 131071) >>> 4)) & 255); out[10 + outPos] = (byte)(( // [___43210] // [65432____________] ((in[ 4 + inPos] & 131071) >>> 12) | // [765_____] // [______________210] ((in[ 5 + inPos] & 131071) << 5)) & 255); out[11 + outPos] = (byte)(( // [76543210] // [______09876543___] ((in[ 5 + inPos] & 131071) >>> 3)) & 255); out[12 + outPos] = (byte)(( // [__543210] // [654321___________] ((in[ 5 + inPos] & 131071) >>> 11) | // [76______] // [_______________10] ((in[ 6 + inPos] & 131071) << 6)) & 255); out[13 + outPos] = (byte)(( // [76543210] // [_______98765432__] ((in[ 6 + inPos] & 131071) >>> 2)) & 255); out[14 + outPos] = (byte)(( // [_6543210] // [6543210__________] ((in[ 6 + inPos] & 131071) >>> 10) | // [7_______] // [________________0] ((in[ 7 + inPos] & 131071) << 7)) & 255); out[15 + outPos] = (byte)(( // [76543210] // [________87654321_] ((in[ 7 + inPos] & 131071) >>> 1)) & 255); out[16 + outPos] = (byte)(( // [76543210] // [65432109_________] ((in[ 7 + inPos] & 131071) >>> 9)) & 255); } public final void pack32Values(final int[] in, final int inPos, final byte[] out, final int outPos) { out[ 0 + outPos] = (byte)(( // [76543210] // [_________76543210] ((in[ 0 + inPos] & 131071))) & 255); out[ 1 + outPos] = (byte)(( // [76543210] // [_54321098________] ((in[ 0 + inPos] & 131071) >>> 8)) & 255); out[ 2 + outPos] = (byte)(( // [_______0] // [6________________] ((in[ 0 + inPos] & 131071) >>> 16) | // [7654321_] // [__________6543210] ((in[ 1 + inPos] & 131071) << 1)) & 255); out[ 3 + outPos] = (byte)(( // [76543210] // [__43210987_______] ((in[ 1 + inPos] & 131071) >>> 7)) & 255); out[ 4 + outPos] = (byte)(( // [______10] // [65_______________] ((in[ 1 + inPos] & 131071) >>> 15) | // [765432__] // [___________543210] ((in[ 2 + inPos] & 131071) << 2)) & 255); out[ 5 + outPos] = (byte)(( // [76543210] // [___32109876______] ((in[ 2 + inPos] & 131071) >>> 6)) & 255); out[ 6 + outPos] = (byte)(( // [_____210] // [654______________] ((in[ 2 + inPos] & 131071) >>> 14) | // [76543___] // [____________43210] ((in[ 3 + inPos] & 131071) << 3)) & 255); out[ 7 + outPos] = (byte)(( // [76543210] // [____21098765_____] ((in[ 3 + inPos] & 131071) >>> 5)) & 255); out[ 8 + outPos] = (byte)(( // [____3210] // [6543_____________] ((in[ 3 + inPos] & 131071) >>> 13) | // [7654____] // [_____________3210] ((in[ 4 + inPos] & 131071) << 4)) & 255); out[ 9 + outPos] = (byte)(( // [76543210] // [_____10987654____] ((in[ 4 + inPos] & 131071) >>> 4)) & 255); out[10 + outPos] = (byte)(( // [___43210] // [65432____________] ((in[ 4 + inPos] & 131071) >>> 12) | // [765_____] // [______________210] ((in[ 5 + inPos] & 131071) << 5)) & 255); out[11 + outPos] = (byte)(( // [76543210] // [______09876543___] ((in[ 5 + inPos] & 131071) >>> 3)) & 255); out[12 + outPos] = (byte)(( // [__543210] // [654321___________] ((in[ 5 + inPos] & 131071) >>> 11) | // [76______] // [_______________10] ((in[ 6 + inPos] & 131071) << 6)) & 255); out[13 + outPos] = (byte)(( // [76543210] // [_______98765432__] ((in[ 6 + inPos] & 131071) >>> 2)) & 255); out[14 + outPos] = (byte)(( // [_6543210] // [6543210__________] ((in[ 6 + inPos] & 131071) >>> 10) | // [7_______] // [________________0] ((in[ 7 + inPos] & 131071) << 7)) & 255); out[15 + outPos] = (byte)(( // [76543210] // [________87654321_] ((in[ 7 + inPos] & 131071) >>> 1)) & 255); out[16 + outPos] = (byte)(( // [76543210] // [65432109_________] ((in[ 7 + inPos] & 131071) >>> 9)) & 255); out[17 + outPos] = (byte)(( // [76543210] // [_________76543210] ((in[ 8 + inPos] & 131071))) & 255); out[18 + outPos] = (byte)(( // [76543210] // [_54321098________] ((in[ 8 + inPos] & 131071) >>> 8)) & 255); out[19 + outPos] = (byte)(( // [_______0] // [6________________] ((in[ 8 + inPos] & 131071) >>> 16) | // [7654321_] // [__________6543210] ((in[ 9 + inPos] & 131071) << 1)) & 255); out[20 + outPos] = (byte)(( // [76543210] // [__43210987_______] ((in[ 9 + inPos] & 131071) >>> 7)) & 255); out[21 + outPos] = (byte)(( // [______10] // [65_______________] ((in[ 9 + inPos] & 131071) >>> 15) | // [765432__] // [___________543210] ((in[10 + inPos] & 131071) << 2)) & 255); out[22 + outPos] = (byte)(( // [76543210] // [___32109876______] ((in[10 + inPos] & 131071) >>> 6)) & 255); out[23 + outPos] = (byte)(( // [_____210] // [654______________] ((in[10 + inPos] & 131071) >>> 14) | // [76543___] // [____________43210] ((in[11 + inPos] & 131071) << 3)) & 255); out[24 + outPos] = (byte)(( // [76543210] // [____21098765_____] ((in[11 + inPos] & 131071) >>> 5)) & 255); out[25 + outPos] = (byte)(( // [____3210] // [6543_____________] ((in[11 + inPos] & 131071) >>> 13) | // [7654____] // [_____________3210] ((in[12 + inPos] & 131071) << 4)) & 255); out[26 + outPos] = (byte)(( // [76543210] // [_____10987654____] ((in[12 + inPos] & 131071) >>> 4)) & 255); out[27 + outPos] = (byte)(( // [___43210] // [65432____________] ((in[12 + inPos] & 131071) >>> 12) | // [765_____] // [______________210] ((in[13 + inPos] & 131071) << 5)) & 255); out[28 + outPos] = (byte)(( // [76543210] // [______09876543___] ((in[13 + inPos] & 131071) >>> 3)) & 255); out[29 + outPos] = (byte)(( // [__543210] // [654321___________] ((in[13 + inPos] & 131071) >>> 11) | // [76______] // [_______________10] ((in[14 + inPos] & 131071) << 6)) & 255); out[30 + outPos] = (byte)(( // [76543210] // [_______98765432__] ((in[14 + inPos] & 131071) >>> 2)) & 255); out[31 + outPos] = (byte)(( // [_6543210] // [6543210__________] ((in[14 + inPos] & 131071) >>> 10) | // [7_______] // [________________0] ((in[15 + inPos] & 131071) << 7)) & 255); out[32 + outPos] = (byte)(( // [76543210] // [________87654321_] ((in[15 + inPos] & 131071) >>> 1)) & 255); out[33 + outPos] = (byte)(( // [76543210] // [65432109_________] ((in[15 + inPos] & 131071) >>> 9)) & 255); out[34 + outPos] = (byte)(( // [76543210] // [_________76543210] ((in[16 + inPos] & 131071))) & 255); out[35 + outPos] = (byte)(( // [76543210] // [_54321098________] ((in[16 + inPos] & 131071) >>> 8)) & 255); out[36 + outPos] = (byte)(( // [_______0] // [6________________] ((in[16 + inPos] & 131071) >>> 16) | // [7654321_] // [__________6543210] ((in[17 + inPos] & 131071) << 1)) & 255); out[37 + outPos] = (byte)(( // [76543210] // [__43210987_______] ((in[17 + inPos] & 131071) >>> 7)) & 255); out[38 + outPos] = (byte)(( // [______10] // [65_______________] ((in[17 + inPos] & 131071) >>> 15) | // [765432__] // [___________543210] ((in[18 + inPos] & 131071) << 2)) & 255); out[39 + outPos] = (byte)(( // [76543210] // [___32109876______] ((in[18 + inPos] & 131071) >>> 6)) & 255); out[40 + outPos] = (byte)(( // [_____210] // [654______________] ((in[18 + inPos] & 131071) >>> 14) | // [76543___] // [____________43210] ((in[19 + inPos] & 131071) << 3)) & 255); out[41 + outPos] = (byte)(( // [76543210] // [____21098765_____] ((in[19 + inPos] & 131071) >>> 5)) & 255); out[42 + outPos] = (byte)(( // [____3210] // [6543_____________] ((in[19 + inPos] & 131071) >>> 13) | // [7654____] // [_____________3210] ((in[20 + inPos] & 131071) << 4)) & 255); out[43 + outPos] = (byte)(( // [76543210] // [_____10987654____] ((in[20 + inPos] & 131071) >>> 4)) & 255); out[44 + outPos] = (byte)(( // [___43210] // [65432____________] ((in[20 + inPos] & 131071) >>> 12) | // [765_____] // [______________210] ((in[21 + inPos] & 131071) << 5)) & 255); out[45 + outPos] = (byte)(( // [76543210] // [______09876543___] ((in[21 + inPos] & 131071) >>> 3)) & 255); out[46 + outPos] = (byte)(( // [__543210] // [654321___________] ((in[21 + inPos] & 131071) >>> 11) | // [76______] // [_______________10] ((in[22 + inPos] & 131071) << 6)) & 255); out[47 + outPos] = (byte)(( // [76543210] // [_______98765432__] ((in[22 + inPos] & 131071) >>> 2)) & 255); out[48 + outPos] = (byte)(( // [_6543210] // [6543210__________] ((in[22 + inPos] & 131071) >>> 10) | // [7_______] // [________________0] ((in[23 + inPos] & 131071) << 7)) & 255); out[49 + outPos] = (byte)(( // [76543210] // [________87654321_] ((in[23 + inPos] & 131071) >>> 1)) & 255); out[50 + outPos] = (byte)(( // [76543210] // [65432109_________] ((in[23 + inPos] & 131071) >>> 9)) & 255); out[51 + outPos] = (byte)(( // [76543210] // [_________76543210] ((in[24 + inPos] & 131071))) & 255); out[52 + outPos] = (byte)(( // [76543210] // [_54321098________] ((in[24 + inPos] & 131071) >>> 8)) & 255); out[53 + outPos] = (byte)(( // [_______0] // [6________________] ((in[24 + inPos] & 131071) >>> 16) | // [7654321_] // [__________6543210] ((in[25 + inPos] & 131071) << 1)) & 255); out[54 + outPos] = (byte)(( // [76543210] // [__43210987_______] ((in[25 + inPos] & 131071) >>> 7)) & 255); out[55 + outPos] = (byte)(( // [______10] // [65_______________] ((in[25 + inPos] & 131071) >>> 15) | // [765432__] // [___________543210] ((in[26 + inPos] & 131071) << 2)) & 255); out[56 + outPos] = (byte)(( // [76543210] // [___32109876______] ((in[26 + inPos] & 131071) >>> 6)) & 255); out[57 + outPos] = (byte)(( // [_____210] // [654______________] ((in[26 + inPos] & 131071) >>> 14) | // [76543___] // [____________43210] ((in[27 + inPos] & 131071) << 3)) & 255); out[58 + outPos] = (byte)(( // [76543210] // [____21098765_____] ((in[27 + inPos] & 131071) >>> 5)) & 255); out[59 + outPos] = (byte)(( // [____3210] // [6543_____________] ((in[27 + inPos] & 131071) >>> 13) | // [7654____] // [_____________3210] ((in[28 + inPos] & 131071) << 4)) & 255); out[60 + outPos] = (byte)(( // [76543210] // [_____10987654____] ((in[28 + inPos] & 131071) >>> 4)) & 255); out[61 + outPos] = (byte)(( // [___43210] // [65432____________] ((in[28 + inPos] & 131071) >>> 12) | // [765_____] // [______________210] ((in[29 + inPos] & 131071) << 5)) & 255); out[62 + outPos] = (byte)(( // [76543210] // [______09876543___] ((in[29 + inPos] & 131071) >>> 3)) & 255); out[63 + outPos] = (byte)(( // [__543210] // [654321___________] ((in[29 + inPos] & 131071) >>> 11) | // [76______] // [_______________10] ((in[30 + inPos] & 131071) << 6)) & 255); out[64 + outPos] = (byte)(( // [76543210] // [_______98765432__] ((in[30 + inPos] & 131071) >>> 2)) & 255); out[65 + outPos] = (byte)(( // [_6543210] // [6543210__________] ((in[30 + inPos] & 131071) >>> 10) | // [7_______] // [________________0] ((in[31 + inPos] & 131071) << 7)) & 255); out[66 + outPos] = (byte)(( // [76543210] // [________87654321_] ((in[31 + inPos] & 131071) >>> 1)) & 255); out[67 + outPos] = (byte)(( // [76543210] // [65432109_________] ((in[31 + inPos] & 131071) >>> 9)) & 255); } public final void unpack8Values(final byte[] in, final int inPos, final int[] out, final int outPos) { out[ 0 + outPos] = // [76543210] // [_________76543210] (((((int)in[ 0 + inPos]) & 255) ) & 131071) | // [76543210] // [_54321098________] (((((int)in[ 1 + inPos]) & 255) << 8) & 131071) | // [_______0] // [6________________] (((((int)in[ 2 + inPos]) & 255) << 16) & 131071); out[ 1 + outPos] = // [7654321_] // [__________6543210] (((((int)in[ 2 + inPos]) & 255) >>> 1) & 131071) | // [76543210] // [__43210987_______] (((((int)in[ 3 + inPos]) & 255) << 7) & 131071) | // [______10] // [65_______________] (((((int)in[ 4 + inPos]) & 255) << 15) & 131071); out[ 2 + outPos] = // [765432__] // [___________543210] (((((int)in[ 4 + inPos]) & 255) >>> 2) & 131071) | // [76543210] // [___32109876______] (((((int)in[ 5 + inPos]) & 255) << 6) & 131071) | // [_____210] // [654______________] (((((int)in[ 6 + inPos]) & 255) << 14) & 131071); out[ 3 + outPos] = // [76543___] // [____________43210] (((((int)in[ 6 + inPos]) & 255) >>> 3) & 131071) | // [76543210] // [____21098765_____] (((((int)in[ 7 + inPos]) & 255) << 5) & 131071) | // [____3210] // [6543_____________] (((((int)in[ 8 + inPos]) & 255) << 13) & 131071); out[ 4 + outPos] = // [7654____] // [_____________3210] (((((int)in[ 8 + inPos]) & 255) >>> 4) & 131071) | // [76543210] // [_____10987654____] (((((int)in[ 9 + inPos]) & 255) << 4) & 131071) | // [___43210] // [65432____________] (((((int)in[10 + inPos]) & 255) << 12) & 131071); out[ 5 + outPos] = // [765_____] // [______________210] (((((int)in[10 + inPos]) & 255) >>> 5) & 131071) | // [76543210] // [______09876543___] (((((int)in[11 + inPos]) & 255) << 3) & 131071) | // [__543210] // [654321___________] (((((int)in[12 + inPos]) & 255) << 11) & 131071); out[ 6 + outPos] = // [76______] // [_______________10] (((((int)in[12 + inPos]) & 255) >>> 6) & 131071) | // [76543210] // [_______98765432__] (((((int)in[13 + inPos]) & 255) << 2) & 131071) | // [_6543210] // [6543210__________] (((((int)in[14 + inPos]) & 255) << 10) & 131071); out[ 7 + outPos] = // [7_______] // [________________0] (((((int)in[14 + inPos]) & 255) >>> 7) & 131071) | // [76543210] // [________87654321_] (((((int)in[15 + inPos]) & 255) << 1) & 131071) | // [76543210] // [65432109_________] (((((int)in[16 + inPos]) & 255) << 9) & 131071); } public final void unpack32Values(final byte[] in, final int inPos, final int[] out, final int outPos) { out[ 0 + outPos] = // [76543210] // [_________76543210] (((((int)in[ 0 + inPos]) & 255) ) & 131071) | // [76543210] // [_54321098________] (((((int)in[ 1 + inPos]) & 255) << 8) & 131071) | // [_______0] // [6________________] (((((int)in[ 2 + inPos]) & 255) << 16) & 131071); out[ 1 + outPos] = // [7654321_] // [__________6543210] (((((int)in[ 2 + inPos]) & 255) >>> 1) & 131071) | // [76543210] // [__43210987_______] (((((int)in[ 3 + inPos]) & 255) << 7) & 131071) | // [______10] // [65_______________] (((((int)in[ 4 + inPos]) & 255) << 15) & 131071); out[ 2 + outPos] = // [765432__] // [___________543210] (((((int)in[ 4 + inPos]) & 255) >>> 2) & 131071) | // [76543210] // [___32109876______] (((((int)in[ 5 + inPos]) & 255) << 6) & 131071) | // [_____210] // [654______________] (((((int)in[ 6 + inPos]) & 255) << 14) & 131071); out[ 3 + outPos] = // [76543___] // [____________43210] (((((int)in[ 6 + inPos]) & 255) >>> 3) & 131071) | // [76543210] // [____21098765_____] (((((int)in[ 7 + inPos]) & 255) << 5) & 131071) | // [____3210] // [6543_____________] (((((int)in[ 8 + inPos]) & 255) << 13) & 131071); out[ 4 + outPos] = // [7654____] // [_____________3210] (((((int)in[ 8 + inPos]) & 255) >>> 4) & 131071) | // [76543210] // [_____10987654____] (((((int)in[ 9 + inPos]) & 255) << 4) & 131071) | // [___43210] // [65432____________] (((((int)in[10 + inPos]) & 255) << 12) & 131071); out[ 5 + outPos] = // [765_____] // [______________210] (((((int)in[10 + inPos]) & 255) >>> 5) & 131071) | // [76543210] // [______09876543___] (((((int)in[11 + inPos]) & 255) << 3) & 131071) | // [__543210] // [654321___________] (((((int)in[12 + inPos]) & 255) << 11) & 131071); out[ 6 + outPos] = // [76______] // [_______________10] (((((int)in[12 + inPos]) & 255) >>> 6) & 131071) | // [76543210] // [_______98765432__] (((((int)in[13 + inPos]) & 255) << 2) & 131071) | // [_6543210] // [6543210__________] (((((int)in[14 + inPos]) & 255) << 10) & 131071); out[ 7 + outPos] = // [7_______] // [________________0] (((((int)in[14 + inPos]) & 255) >>> 7) & 131071) | // [76543210] // [________87654321_] (((((int)in[15 + inPos]) & 255) << 1) & 131071) | // [76543210] // [65432109_________] (((((int)in[16 + inPos]) & 255) << 9) & 131071); out[ 8 + outPos] = // [76543210] // [_________76543210] (((((int)in[17 + inPos]) & 255) ) & 131071) | // [76543210] // [_54321098________] (((((int)in[18 + inPos]) & 255) << 8) & 131071) | // [_______0] // [6________________] (((((int)in[19 + inPos]) & 255) << 16) & 131071); out[ 9 + outPos] = // [7654321_] // [__________6543210] (((((int)in[19 + inPos]) & 255) >>> 1) & 131071) | // [76543210] // [__43210987_______] (((((int)in[20 + inPos]) & 255) << 7) & 131071) | // [______10] // [65_______________] (((((int)in[21 + inPos]) & 255) << 15) & 131071); out[10 + outPos] = // [765432__] // [___________543210] (((((int)in[21 + inPos]) & 255) >>> 2) & 131071) | // [76543210] // [___32109876______] (((((int)in[22 + inPos]) & 255) << 6) & 131071) | // [_____210] // [654______________] (((((int)in[23 + inPos]) & 255) << 14) & 131071); out[11 + outPos] = // [76543___] // [____________43210] (((((int)in[23 + inPos]) & 255) >>> 3) & 131071) | // [76543210] // [____21098765_____] (((((int)in[24 + inPos]) & 255) << 5) & 131071) | // [____3210] // [6543_____________] (((((int)in[25 + inPos]) & 255) << 13) & 131071); out[12 + outPos] = // [7654____] // [_____________3210] (((((int)in[25 + inPos]) & 255) >>> 4) & 131071) | // [76543210] // [_____10987654____] (((((int)in[26 + inPos]) & 255) << 4) & 131071) | // [___43210] // [65432____________] (((((int)in[27 + inPos]) & 255) << 12) & 131071); out[13 + outPos] = // [765_____] // [______________210] (((((int)in[27 + inPos]) & 255) >>> 5) & 131071) | // [76543210] // [______09876543___] (((((int)in[28 + inPos]) & 255) << 3) & 131071) | // [__543210] // [654321___________] (((((int)in[29 + inPos]) & 255) << 11) & 131071); out[14 + outPos] = // [76______] // [_______________10] (((((int)in[29 + inPos]) & 255) >>> 6) & 131071) | // [76543210] // [_______98765432__] (((((int)in[30 + inPos]) & 255) << 2) & 131071) | // [_6543210] // [6543210__________] (((((int)in[31 + inPos]) & 255) << 10) & 131071); out[15 + outPos] = // [7_______] // [________________0] (((((int)in[31 + inPos]) & 255) >>> 7) & 131071) | // [76543210] // [________87654321_] (((((int)in[32 + inPos]) & 255) << 1) & 131071) | // [76543210] // [65432109_________] (((((int)in[33 + inPos]) & 255) << 9) & 131071); out[16 + outPos] = // [76543210] // [_________76543210] (((((int)in[34 + inPos]) & 255) ) & 131071) | // [76543210] // [_54321098________] (((((int)in[35 + inPos]) & 255) << 8) & 131071) | // [_______0] // [6________________] (((((int)in[36 + inPos]) & 255) << 16) & 131071); out[17 + outPos] = // [7654321_] // [__________6543210] (((((int)in[36 + inPos]) & 255) >>> 1) & 131071) | // [76543210] // [__43210987_______] (((((int)in[37 + inPos]) & 255) << 7) & 131071) | // [______10] // [65_______________] (((((int)in[38 + inPos]) & 255) << 15) & 131071); out[18 + outPos] = // [765432__] // [___________543210] (((((int)in[38 + inPos]) & 255) >>> 2) & 131071) | // [76543210] // [___32109876______] (((((int)in[39 + inPos]) & 255) << 6) & 131071) | // [_____210] // [654______________] (((((int)in[40 + inPos]) & 255) << 14) & 131071); out[19 + outPos] = // [76543___] // [____________43210] (((((int)in[40 + inPos]) & 255) >>> 3) & 131071) | // [76543210] // [____21098765_____] (((((int)in[41 + inPos]) & 255) << 5) & 131071) | // [____3210] // [6543_____________] (((((int)in[42 + inPos]) & 255) << 13) & 131071); out[20 + outPos] = // [7654____] // [_____________3210] (((((int)in[42 + inPos]) & 255) >>> 4) & 131071) | // [76543210] // [_____10987654____] (((((int)in[43 + inPos]) & 255) << 4) & 131071) | // [___43210] // [65432____________] (((((int)in[44 + inPos]) & 255) << 12) & 131071); out[21 + outPos] = // [765_____] // [______________210] (((((int)in[44 + inPos]) & 255) >>> 5) & 131071) | // [76543210] // [______09876543___] (((((int)in[45 + inPos]) & 255) << 3) & 131071) | // [__543210] // [654321___________] (((((int)in[46 + inPos]) & 255) << 11) & 131071); out[22 + outPos] = // [76______] // [_______________10] (((((int)in[46 + inPos]) & 255) >>> 6) & 131071) | // [76543210] // [_______98765432__] (((((int)in[47 + inPos]) & 255) << 2) & 131071) | // [_6543210] // [6543210__________] (((((int)in[48 + inPos]) & 255) << 10) & 131071); out[23 + outPos] = // [7_______] // [________________0] (((((int)in[48 + inPos]) & 255) >>> 7) & 131071) | // [76543210] // [________87654321_] (((((int)in[49 + inPos]) & 255) << 1) & 131071) | // [76543210] // [65432109_________] (((((int)in[50 + inPos]) & 255) << 9) & 131071); out[24 + outPos] = // [76543210] // [_________76543210] (((((int)in[51 + inPos]) & 255) ) & 131071) | // [76543210] // [_54321098________] (((((int)in[52 + inPos]) & 255) << 8) & 131071) | // [_______0] // [6________________] (((((int)in[53 + inPos]) & 255) << 16) & 131071); out[25 + outPos] = // [7654321_] // [__________6543210] (((((int)in[53 + inPos]) & 255) >>> 1) & 131071) | // [76543210] // [__43210987_______] (((((int)in[54 + inPos]) & 255) << 7) & 131071) | // [______10] // [65_______________] (((((int)in[55 + inPos]) & 255) << 15) & 131071); out[26 + outPos] = // [765432__] // [___________543210] (((((int)in[55 + inPos]) & 255) >>> 2) & 131071) | // [76543210] // [___32109876______] (((((int)in[56 + inPos]) & 255) << 6) & 131071) | // [_____210] // [654______________] (((((int)in[57 + inPos]) & 255) << 14) & 131071); out[27 + outPos] = // [76543___] // [____________43210] (((((int)in[57 + inPos]) & 255) >>> 3) & 131071) | // [76543210] // [____21098765_____] (((((int)in[58 + inPos]) & 255) << 5) & 131071) | // [____3210] // [6543_____________] (((((int)in[59 + inPos]) & 255) << 13) & 131071); out[28 + outPos] = // [7654____] // [_____________3210] (((((int)in[59 + inPos]) & 255) >>> 4) & 131071) | // [76543210] // [_____10987654____] (((((int)in[60 + inPos]) & 255) << 4) & 131071) | // [___43210] // [65432____________] (((((int)in[61 + inPos]) & 255) << 12) & 131071); out[29 + outPos] = // [765_____] // [______________210] (((((int)in[61 + inPos]) & 255) >>> 5) & 131071) | // [76543210] // [______09876543___] (((((int)in[62 + inPos]) & 255) << 3) & 131071) | // [__543210] // [654321___________] (((((int)in[63 + inPos]) & 255) << 11) & 131071); out[30 + outPos] = // [76______] // [_______________10] (((((int)in[63 + inPos]) & 255) >>> 6) & 131071) | // [76543210] // [_______98765432__] (((((int)in[64 + inPos]) & 255) << 2) & 131071) | // [_6543210] // [6543210__________] (((((int)in[65 + inPos]) & 255) << 10) & 131071); out[31 + outPos] = // [7_______] // [________________0] (((((int)in[65 + inPos]) & 255) >>> 7) & 131071) | // [76543210] // [________87654321_] (((((int)in[66 + inPos]) & 255) << 1) & 131071) | // [76543210] // [65432109_________] (((((int)in[67 + inPos]) & 255) << 9) & 131071); } } private static final class Packer18 extends BytePacker { private Packer18() { super(18); } public final void pack8Values(final int[] in, final int inPos, final byte[] out, final int outPos) { out[ 0 + outPos] = (byte)(( // [76543210] // [__________76543210] ((in[ 0 + inPos] & 262143))) & 255); out[ 1 + outPos] = (byte)(( // [76543210] // [__54321098________] ((in[ 0 + inPos] & 262143) >>> 8)) & 255); out[ 2 + outPos] = (byte)(( // [______10] // [76________________] ((in[ 0 + inPos] & 262143) >>> 16) | // [765432__] // [____________543210] ((in[ 1 + inPos] & 262143) << 2)) & 255); out[ 3 + outPos] = (byte)(( // [76543210] // [____32109876______] ((in[ 1 + inPos] & 262143) >>> 6)) & 255); out[ 4 + outPos] = (byte)(( // [____3210] // [7654______________] ((in[ 1 + inPos] & 262143) >>> 14) | // [7654____] // [______________3210] ((in[ 2 + inPos] & 262143) << 4)) & 255); out[ 5 + outPos] = (byte)(( // [76543210] // [______10987654____] ((in[ 2 + inPos] & 262143) >>> 4)) & 255); out[ 6 + outPos] = (byte)(( // [__543210] // [765432____________] ((in[ 2 + inPos] & 262143) >>> 12) | // [76______] // [________________10] ((in[ 3 + inPos] & 262143) << 6)) & 255); out[ 7 + outPos] = (byte)(( // [76543210] // [________98765432__] ((in[ 3 + inPos] & 262143) >>> 2)) & 255); out[ 8 + outPos] = (byte)(( // [76543210] // [76543210__________] ((in[ 3 + inPos] & 262143) >>> 10)) & 255); out[ 9 + outPos] = (byte)(( // [76543210] // [__________76543210] ((in[ 4 + inPos] & 262143))) & 255); out[10 + outPos] = (byte)(( // [76543210] // [__54321098________] ((in[ 4 + inPos] & 262143) >>> 8)) & 255); out[11 + outPos] = (byte)(( // [______10] // [76________________] ((in[ 4 + inPos] & 262143) >>> 16) | // [765432__] // [____________543210] ((in[ 5 + inPos] & 262143) << 2)) & 255); out[12 + outPos] = (byte)(( // [76543210] // [____32109876______] ((in[ 5 + inPos] & 262143) >>> 6)) & 255); out[13 + outPos] = (byte)(( // [____3210] // [7654______________] ((in[ 5 + inPos] & 262143) >>> 14) | // [7654____] // [______________3210] ((in[ 6 + inPos] & 262143) << 4)) & 255); out[14 + outPos] = (byte)(( // [76543210] // [______10987654____] ((in[ 6 + inPos] & 262143) >>> 4)) & 255); out[15 + outPos] = (byte)(( // [__543210] // [765432____________] ((in[ 6 + inPos] & 262143) >>> 12) | // [76______] // [________________10] ((in[ 7 + inPos] & 262143) << 6)) & 255); out[16 + outPos] = (byte)(( // [76543210] // [________98765432__] ((in[ 7 + inPos] & 262143) >>> 2)) & 255); out[17 + outPos] = (byte)(( // [76543210] // [76543210__________] ((in[ 7 + inPos] & 262143) >>> 10)) & 255); } public final void pack32Values(final int[] in, final int inPos, final byte[] out, final int outPos) { out[ 0 + outPos] = (byte)(( // [76543210] // [__________76543210] ((in[ 0 + inPos] & 262143))) & 255); out[ 1 + outPos] = (byte)(( // [76543210] // [__54321098________] ((in[ 0 + inPos] & 262143) >>> 8)) & 255); out[ 2 + outPos] = (byte)(( // [______10] // [76________________] ((in[ 0 + inPos] & 262143) >>> 16) | // [765432__] // [____________543210] ((in[ 1 + inPos] & 262143) << 2)) & 255); out[ 3 + outPos] = (byte)(( // [76543210] // [____32109876______] ((in[ 1 + inPos] & 262143) >>> 6)) & 255); out[ 4 + outPos] = (byte)(( // [____3210] // [7654______________] ((in[ 1 + inPos] & 262143) >>> 14) | // [7654____] // [______________3210] ((in[ 2 + inPos] & 262143) << 4)) & 255); out[ 5 + outPos] = (byte)(( // [76543210] // [______10987654____] ((in[ 2 + inPos] & 262143) >>> 4)) & 255); out[ 6 + outPos] = (byte)(( // [__543210] // [765432____________] ((in[ 2 + inPos] & 262143) >>> 12) | // [76______] // [________________10] ((in[ 3 + inPos] & 262143) << 6)) & 255); out[ 7 + outPos] = (byte)(( // [76543210] // [________98765432__] ((in[ 3 + inPos] & 262143) >>> 2)) & 255); out[ 8 + outPos] = (byte)(( // [76543210] // [76543210__________] ((in[ 3 + inPos] & 262143) >>> 10)) & 255); out[ 9 + outPos] = (byte)(( // [76543210] // [__________76543210] ((in[ 4 + inPos] & 262143))) & 255); out[10 + outPos] = (byte)(( // [76543210] // [__54321098________] ((in[ 4 + inPos] & 262143) >>> 8)) & 255); out[11 + outPos] = (byte)(( // [______10] // [76________________] ((in[ 4 + inPos] & 262143) >>> 16) | // [765432__] // [____________543210] ((in[ 5 + inPos] & 262143) << 2)) & 255); out[12 + outPos] = (byte)(( // [76543210] // [____32109876______] ((in[ 5 + inPos] & 262143) >>> 6)) & 255); out[13 + outPos] = (byte)(( // [____3210] // [7654______________] ((in[ 5 + inPos] & 262143) >>> 14) | // [7654____] // [______________3210] ((in[ 6 + inPos] & 262143) << 4)) & 255); out[14 + outPos] = (byte)(( // [76543210] // [______10987654____] ((in[ 6 + inPos] & 262143) >>> 4)) & 255); out[15 + outPos] = (byte)(( // [__543210] // [765432____________] ((in[ 6 + inPos] & 262143) >>> 12) | // [76______] // [________________10] ((in[ 7 + inPos] & 262143) << 6)) & 255); out[16 + outPos] = (byte)(( // [76543210] // [________98765432__] ((in[ 7 + inPos] & 262143) >>> 2)) & 255); out[17 + outPos] = (byte)(( // [76543210] // [76543210__________] ((in[ 7 + inPos] & 262143) >>> 10)) & 255); out[18 + outPos] = (byte)(( // [76543210] // [__________76543210] ((in[ 8 + inPos] & 262143))) & 255); out[19 + outPos] = (byte)(( // [76543210] // [__54321098________] ((in[ 8 + inPos] & 262143) >>> 8)) & 255); out[20 + outPos] = (byte)(( // [______10] // [76________________] ((in[ 8 + inPos] & 262143) >>> 16) | // [765432__] // [____________543210] ((in[ 9 + inPos] & 262143) << 2)) & 255); out[21 + outPos] = (byte)(( // [76543210] // [____32109876______] ((in[ 9 + inPos] & 262143) >>> 6)) & 255); out[22 + outPos] = (byte)(( // [____3210] // [7654______________] ((in[ 9 + inPos] & 262143) >>> 14) | // [7654____] // [______________3210] ((in[10 + inPos] & 262143) << 4)) & 255); out[23 + outPos] = (byte)(( // [76543210] // [______10987654____] ((in[10 + inPos] & 262143) >>> 4)) & 255); out[24 + outPos] = (byte)(( // [__543210] // [765432____________] ((in[10 + inPos] & 262143) >>> 12) | // [76______] // [________________10] ((in[11 + inPos] & 262143) << 6)) & 255); out[25 + outPos] = (byte)(( // [76543210] // [________98765432__] ((in[11 + inPos] & 262143) >>> 2)) & 255); out[26 + outPos] = (byte)(( // [76543210] // [76543210__________] ((in[11 + inPos] & 262143) >>> 10)) & 255); out[27 + outPos] = (byte)(( // [76543210] // [__________76543210] ((in[12 + inPos] & 262143))) & 255); out[28 + outPos] = (byte)(( // [76543210] // [__54321098________] ((in[12 + inPos] & 262143) >>> 8)) & 255); out[29 + outPos] = (byte)(( // [______10] // [76________________] ((in[12 + inPos] & 262143) >>> 16) | // [765432__] // [____________543210] ((in[13 + inPos] & 262143) << 2)) & 255); out[30 + outPos] = (byte)(( // [76543210] // [____32109876______] ((in[13 + inPos] & 262143) >>> 6)) & 255); out[31 + outPos] = (byte)(( // [____3210] // [7654______________] ((in[13 + inPos] & 262143) >>> 14) | // [7654____] // [______________3210] ((in[14 + inPos] & 262143) << 4)) & 255); out[32 + outPos] = (byte)(( // [76543210] // [______10987654____] ((in[14 + inPos] & 262143) >>> 4)) & 255); out[33 + outPos] = (byte)(( // [__543210] // [765432____________] ((in[14 + inPos] & 262143) >>> 12) | // [76______] // [________________10] ((in[15 + inPos] & 262143) << 6)) & 255); out[34 + outPos] = (byte)(( // [76543210] // [________98765432__] ((in[15 + inPos] & 262143) >>> 2)) & 255); out[35 + outPos] = (byte)(( // [76543210] // [76543210__________] ((in[15 + inPos] & 262143) >>> 10)) & 255); out[36 + outPos] = (byte)(( // [76543210] // [__________76543210] ((in[16 + inPos] & 262143))) & 255); out[37 + outPos] = (byte)(( // [76543210] // [__54321098________] ((in[16 + inPos] & 262143) >>> 8)) & 255); out[38 + outPos] = (byte)(( // [______10] // [76________________] ((in[16 + inPos] & 262143) >>> 16) | // [765432__] // [____________543210] ((in[17 + inPos] & 262143) << 2)) & 255); out[39 + outPos] = (byte)(( // [76543210] // [____32109876______] ((in[17 + inPos] & 262143) >>> 6)) & 255); out[40 + outPos] = (byte)(( // [____3210] // [7654______________] ((in[17 + inPos] & 262143) >>> 14) | // [7654____] // [______________3210] ((in[18 + inPos] & 262143) << 4)) & 255); out[41 + outPos] = (byte)(( // [76543210] // [______10987654____] ((in[18 + inPos] & 262143) >>> 4)) & 255); out[42 + outPos] = (byte)(( // [__543210] // [765432____________] ((in[18 + inPos] & 262143) >>> 12) | // [76______] // [________________10] ((in[19 + inPos] & 262143) << 6)) & 255); out[43 + outPos] = (byte)(( // [76543210] // [________98765432__] ((in[19 + inPos] & 262143) >>> 2)) & 255); out[44 + outPos] = (byte)(( // [76543210] // [76543210__________] ((in[19 + inPos] & 262143) >>> 10)) & 255); out[45 + outPos] = (byte)(( // [76543210] // [__________76543210] ((in[20 + inPos] & 262143))) & 255); out[46 + outPos] = (byte)(( // [76543210] // [__54321098________] ((in[20 + inPos] & 262143) >>> 8)) & 255); out[47 + outPos] = (byte)(( // [______10] // [76________________] ((in[20 + inPos] & 262143) >>> 16) | // [765432__] // [____________543210] ((in[21 + inPos] & 262143) << 2)) & 255); out[48 + outPos] = (byte)(( // [76543210] // [____32109876______] ((in[21 + inPos] & 262143) >>> 6)) & 255); out[49 + outPos] = (byte)(( // [____3210] // [7654______________] ((in[21 + inPos] & 262143) >>> 14) | // [7654____] // [______________3210] ((in[22 + inPos] & 262143) << 4)) & 255); out[50 + outPos] = (byte)(( // [76543210] // [______10987654____] ((in[22 + inPos] & 262143) >>> 4)) & 255); out[51 + outPos] = (byte)(( // [__543210] // [765432____________] ((in[22 + inPos] & 262143) >>> 12) | // [76______] // [________________10] ((in[23 + inPos] & 262143) << 6)) & 255); out[52 + outPos] = (byte)(( // [76543210] // [________98765432__] ((in[23 + inPos] & 262143) >>> 2)) & 255); out[53 + outPos] = (byte)(( // [76543210] // [76543210__________] ((in[23 + inPos] & 262143) >>> 10)) & 255); out[54 + outPos] = (byte)(( // [76543210] // [__________76543210] ((in[24 + inPos] & 262143))) & 255); out[55 + outPos] = (byte)(( // [76543210] // [__54321098________] ((in[24 + inPos] & 262143) >>> 8)) & 255); out[56 + outPos] = (byte)(( // [______10] // [76________________] ((in[24 + inPos] & 262143) >>> 16) | // [765432__] // [____________543210] ((in[25 + inPos] & 262143) << 2)) & 255); out[57 + outPos] = (byte)(( // [76543210] // [____32109876______] ((in[25 + inPos] & 262143) >>> 6)) & 255); out[58 + outPos] = (byte)(( // [____3210] // [7654______________] ((in[25 + inPos] & 262143) >>> 14) | // [7654____] // [______________3210] ((in[26 + inPos] & 262143) << 4)) & 255); out[59 + outPos] = (byte)(( // [76543210] // [______10987654____] ((in[26 + inPos] & 262143) >>> 4)) & 255); out[60 + outPos] = (byte)(( // [__543210] // [765432____________] ((in[26 + inPos] & 262143) >>> 12) | // [76______] // [________________10] ((in[27 + inPos] & 262143) << 6)) & 255); out[61 + outPos] = (byte)(( // [76543210] // [________98765432__] ((in[27 + inPos] & 262143) >>> 2)) & 255); out[62 + outPos] = (byte)(( // [76543210] // [76543210__________] ((in[27 + inPos] & 262143) >>> 10)) & 255); out[63 + outPos] = (byte)(( // [76543210] // [__________76543210] ((in[28 + inPos] & 262143))) & 255); out[64 + outPos] = (byte)(( // [76543210] // [__54321098________] ((in[28 + inPos] & 262143) >>> 8)) & 255); out[65 + outPos] = (byte)(( // [______10] // [76________________] ((in[28 + inPos] & 262143) >>> 16) | // [765432__] // [____________543210] ((in[29 + inPos] & 262143) << 2)) & 255); out[66 + outPos] = (byte)(( // [76543210] // [____32109876______] ((in[29 + inPos] & 262143) >>> 6)) & 255); out[67 + outPos] = (byte)(( // [____3210] // [7654______________] ((in[29 + inPos] & 262143) >>> 14) | // [7654____] // [______________3210] ((in[30 + inPos] & 262143) << 4)) & 255); out[68 + outPos] = (byte)(( // [76543210] // [______10987654____] ((in[30 + inPos] & 262143) >>> 4)) & 255); out[69 + outPos] = (byte)(( // [__543210] // [765432____________] ((in[30 + inPos] & 262143) >>> 12) | // [76______] // [________________10] ((in[31 + inPos] & 262143) << 6)) & 255); out[70 + outPos] = (byte)(( // [76543210] // [________98765432__] ((in[31 + inPos] & 262143) >>> 2)) & 255); out[71 + outPos] = (byte)(( // [76543210] // [76543210__________] ((in[31 + inPos] & 262143) >>> 10)) & 255); } public final void unpack8Values(final byte[] in, final int inPos, final int[] out, final int outPos) { out[ 0 + outPos] = // [76543210] // [__________76543210] (((((int)in[ 0 + inPos]) & 255) ) & 262143) | // [76543210] // [__54321098________] (((((int)in[ 1 + inPos]) & 255) << 8) & 262143) | // [______10] // [76________________] (((((int)in[ 2 + inPos]) & 255) << 16) & 262143); out[ 1 + outPos] = // [765432__] // [____________543210] (((((int)in[ 2 + inPos]) & 255) >>> 2) & 262143) | // [76543210] // [____32109876______] (((((int)in[ 3 + inPos]) & 255) << 6) & 262143) | // [____3210] // [7654______________] (((((int)in[ 4 + inPos]) & 255) << 14) & 262143); out[ 2 + outPos] = // [7654____] // [______________3210] (((((int)in[ 4 + inPos]) & 255) >>> 4) & 262143) | // [76543210] // [______10987654____] (((((int)in[ 5 + inPos]) & 255) << 4) & 262143) | // [__543210] // [765432____________] (((((int)in[ 6 + inPos]) & 255) << 12) & 262143); out[ 3 + outPos] = // [76______] // [________________10] (((((int)in[ 6 + inPos]) & 255) >>> 6) & 262143) | // [76543210] // [________98765432__] (((((int)in[ 7 + inPos]) & 255) << 2) & 262143) | // [76543210] // [76543210__________] (((((int)in[ 8 + inPos]) & 255) << 10) & 262143); out[ 4 + outPos] = // [76543210] // [__________76543210] (((((int)in[ 9 + inPos]) & 255) ) & 262143) | // [76543210] // [__54321098________] (((((int)in[10 + inPos]) & 255) << 8) & 262143) | // [______10] // [76________________] (((((int)in[11 + inPos]) & 255) << 16) & 262143); out[ 5 + outPos] = // [765432__] // [____________543210] (((((int)in[11 + inPos]) & 255) >>> 2) & 262143) | // [76543210] // [____32109876______] (((((int)in[12 + inPos]) & 255) << 6) & 262143) | // [____3210] // [7654______________] (((((int)in[13 + inPos]) & 255) << 14) & 262143); out[ 6 + outPos] = // [7654____] // [______________3210] (((((int)in[13 + inPos]) & 255) >>> 4) & 262143) | // [76543210] // [______10987654____] (((((int)in[14 + inPos]) & 255) << 4) & 262143) | // [__543210] // [765432____________] (((((int)in[15 + inPos]) & 255) << 12) & 262143); out[ 7 + outPos] = // [76______] // [________________10] (((((int)in[15 + inPos]) & 255) >>> 6) & 262143) | // [76543210] // [________98765432__] (((((int)in[16 + inPos]) & 255) << 2) & 262143) | // [76543210] // [76543210__________] (((((int)in[17 + inPos]) & 255) << 10) & 262143); } public final void unpack32Values(final byte[] in, final int inPos, final int[] out, final int outPos) { out[ 0 + outPos] = // [76543210] // [__________76543210] (((((int)in[ 0 + inPos]) & 255) ) & 262143) | // [76543210] // [__54321098________] (((((int)in[ 1 + inPos]) & 255) << 8) & 262143) | // [______10] // [76________________] (((((int)in[ 2 + inPos]) & 255) << 16) & 262143); out[ 1 + outPos] = // [765432__] // [____________543210] (((((int)in[ 2 + inPos]) & 255) >>> 2) & 262143) | // [76543210] // [____32109876______] (((((int)in[ 3 + inPos]) & 255) << 6) & 262143) | // [____3210] // [7654______________] (((((int)in[ 4 + inPos]) & 255) << 14) & 262143); out[ 2 + outPos] = // [7654____] // [______________3210] (((((int)in[ 4 + inPos]) & 255) >>> 4) & 262143) | // [76543210] // [______10987654____] (((((int)in[ 5 + inPos]) & 255) << 4) & 262143) | // [__543210] // [765432____________] (((((int)in[ 6 + inPos]) & 255) << 12) & 262143); out[ 3 + outPos] = // [76______] // [________________10] (((((int)in[ 6 + inPos]) & 255) >>> 6) & 262143) | // [76543210] // [________98765432__] (((((int)in[ 7 + inPos]) & 255) << 2) & 262143) | // [76543210] // [76543210__________] (((((int)in[ 8 + inPos]) & 255) << 10) & 262143); out[ 4 + outPos] = // [76543210] // [__________76543210] (((((int)in[ 9 + inPos]) & 255) ) & 262143) | // [76543210] // [__54321098________] (((((int)in[10 + inPos]) & 255) << 8) & 262143) | // [______10] // [76________________] (((((int)in[11 + inPos]) & 255) << 16) & 262143); out[ 5 + outPos] = // [765432__] // [____________543210] (((((int)in[11 + inPos]) & 255) >>> 2) & 262143) | // [76543210] // [____32109876______] (((((int)in[12 + inPos]) & 255) << 6) & 262143) | // [____3210] // [7654______________] (((((int)in[13 + inPos]) & 255) << 14) & 262143); out[ 6 + outPos] = // [7654____] // [______________3210] (((((int)in[13 + inPos]) & 255) >>> 4) & 262143) | // [76543210] // [______10987654____] (((((int)in[14 + inPos]) & 255) << 4) & 262143) | // [__543210] // [765432____________] (((((int)in[15 + inPos]) & 255) << 12) & 262143); out[ 7 + outPos] = // [76______] // [________________10] (((((int)in[15 + inPos]) & 255) >>> 6) & 262143) | // [76543210] // [________98765432__] (((((int)in[16 + inPos]) & 255) << 2) & 262143) | // [76543210] // [76543210__________] (((((int)in[17 + inPos]) & 255) << 10) & 262143); out[ 8 + outPos] = // [76543210] // [__________76543210] (((((int)in[18 + inPos]) & 255) ) & 262143) | // [76543210] // [__54321098________] (((((int)in[19 + inPos]) & 255) << 8) & 262143) | // [______10] // [76________________] (((((int)in[20 + inPos]) & 255) << 16) & 262143); out[ 9 + outPos] = // [765432__] // [____________543210] (((((int)in[20 + inPos]) & 255) >>> 2) & 262143) | // [76543210] // [____32109876______] (((((int)in[21 + inPos]) & 255) << 6) & 262143) | // [____3210] // [7654______________] (((((int)in[22 + inPos]) & 255) << 14) & 262143); out[10 + outPos] = // [7654____] // [______________3210] (((((int)in[22 + inPos]) & 255) >>> 4) & 262143) | // [76543210] // [______10987654____] (((((int)in[23 + inPos]) & 255) << 4) & 262143) | // [__543210] // [765432____________] (((((int)in[24 + inPos]) & 255) << 12) & 262143); out[11 + outPos] = // [76______] // [________________10] (((((int)in[24 + inPos]) & 255) >>> 6) & 262143) | // [76543210] // [________98765432__] (((((int)in[25 + inPos]) & 255) << 2) & 262143) | // [76543210] // [76543210__________] (((((int)in[26 + inPos]) & 255) << 10) & 262143); out[12 + outPos] = // [76543210] // [__________76543210] (((((int)in[27 + inPos]) & 255) ) & 262143) | // [76543210] // [__54321098________] (((((int)in[28 + inPos]) & 255) << 8) & 262143) | // [______10] // [76________________] (((((int)in[29 + inPos]) & 255) << 16) & 262143); out[13 + outPos] = // [765432__] // [____________543210] (((((int)in[29 + inPos]) & 255) >>> 2) & 262143) | // [76543210] // [____32109876______] (((((int)in[30 + inPos]) & 255) << 6) & 262143) | // [____3210] // [7654______________] (((((int)in[31 + inPos]) & 255) << 14) & 262143); out[14 + outPos] = // [7654____] // [______________3210] (((((int)in[31 + inPos]) & 255) >>> 4) & 262143) | // [76543210] // [______10987654____] (((((int)in[32 + inPos]) & 255) << 4) & 262143) | // [__543210] // [765432____________] (((((int)in[33 + inPos]) & 255) << 12) & 262143); out[15 + outPos] = // [76______] // [________________10] (((((int)in[33 + inPos]) & 255) >>> 6) & 262143) | // [76543210] // [________98765432__] (((((int)in[34 + inPos]) & 255) << 2) & 262143) | // [76543210] // [76543210__________] (((((int)in[35 + inPos]) & 255) << 10) & 262143); out[16 + outPos] = // [76543210] // [__________76543210] (((((int)in[36 + inPos]) & 255) ) & 262143) | // [76543210] // [__54321098________] (((((int)in[37 + inPos]) & 255) << 8) & 262143) | // [______10] // [76________________] (((((int)in[38 + inPos]) & 255) << 16) & 262143); out[17 + outPos] = // [765432__] // [____________543210] (((((int)in[38 + inPos]) & 255) >>> 2) & 262143) | // [76543210] // [____32109876______] (((((int)in[39 + inPos]) & 255) << 6) & 262143) | // [____3210] // [7654______________] (((((int)in[40 + inPos]) & 255) << 14) & 262143); out[18 + outPos] = // [7654____] // [______________3210] (((((int)in[40 + inPos]) & 255) >>> 4) & 262143) | // [76543210] // [______10987654____] (((((int)in[41 + inPos]) & 255) << 4) & 262143) | // [__543210] // [765432____________] (((((int)in[42 + inPos]) & 255) << 12) & 262143); out[19 + outPos] = // [76______] // [________________10] (((((int)in[42 + inPos]) & 255) >>> 6) & 262143) | // [76543210] // [________98765432__] (((((int)in[43 + inPos]) & 255) << 2) & 262143) | // [76543210] // [76543210__________] (((((int)in[44 + inPos]) & 255) << 10) & 262143); out[20 + outPos] = // [76543210] // [__________76543210] (((((int)in[45 + inPos]) & 255) ) & 262143) | // [76543210] // [__54321098________] (((((int)in[46 + inPos]) & 255) << 8) & 262143) | // [______10] // [76________________] (((((int)in[47 + inPos]) & 255) << 16) & 262143); out[21 + outPos] = // [765432__] // [____________543210] (((((int)in[47 + inPos]) & 255) >>> 2) & 262143) | // [76543210] // [____32109876______] (((((int)in[48 + inPos]) & 255) << 6) & 262143) | // [____3210] // [7654______________] (((((int)in[49 + inPos]) & 255) << 14) & 262143); out[22 + outPos] = // [7654____] // [______________3210] (((((int)in[49 + inPos]) & 255) >>> 4) & 262143) | // [76543210] // [______10987654____] (((((int)in[50 + inPos]) & 255) << 4) & 262143) | // [__543210] // [765432____________] (((((int)in[51 + inPos]) & 255) << 12) & 262143); out[23 + outPos] = // [76______] // [________________10] (((((int)in[51 + inPos]) & 255) >>> 6) & 262143) | // [76543210] // [________98765432__] (((((int)in[52 + inPos]) & 255) << 2) & 262143) | // [76543210] // [76543210__________] (((((int)in[53 + inPos]) & 255) << 10) & 262143); out[24 + outPos] = // [76543210] // [__________76543210] (((((int)in[54 + inPos]) & 255) ) & 262143) | // [76543210] // [__54321098________] (((((int)in[55 + inPos]) & 255) << 8) & 262143) | // [______10] // [76________________] (((((int)in[56 + inPos]) & 255) << 16) & 262143); out[25 + outPos] = // [765432__] // [____________543210] (((((int)in[56 + inPos]) & 255) >>> 2) & 262143) | // [76543210] // [____32109876______] (((((int)in[57 + inPos]) & 255) << 6) & 262143) | // [____3210] // [7654______________] (((((int)in[58 + inPos]) & 255) << 14) & 262143); out[26 + outPos] = // [7654____] // [______________3210] (((((int)in[58 + inPos]) & 255) >>> 4) & 262143) | // [76543210] // [______10987654____] (((((int)in[59 + inPos]) & 255) << 4) & 262143) | // [__543210] // [765432____________] (((((int)in[60 + inPos]) & 255) << 12) & 262143); out[27 + outPos] = // [76______] // [________________10] (((((int)in[60 + inPos]) & 255) >>> 6) & 262143) | // [76543210] // [________98765432__] (((((int)in[61 + inPos]) & 255) << 2) & 262143) | // [76543210] // [76543210__________] (((((int)in[62 + inPos]) & 255) << 10) & 262143); out[28 + outPos] = // [76543210] // [__________76543210] (((((int)in[63 + inPos]) & 255) ) & 262143) | // [76543210] // [__54321098________] (((((int)in[64 + inPos]) & 255) << 8) & 262143) | // [______10] // [76________________] (((((int)in[65 + inPos]) & 255) << 16) & 262143); out[29 + outPos] = // [765432__] // [____________543210] (((((int)in[65 + inPos]) & 255) >>> 2) & 262143) | // [76543210] // [____32109876______] (((((int)in[66 + inPos]) & 255) << 6) & 262143) | // [____3210] // [7654______________] (((((int)in[67 + inPos]) & 255) << 14) & 262143); out[30 + outPos] = // [7654____] // [______________3210] (((((int)in[67 + inPos]) & 255) >>> 4) & 262143) | // [76543210] // [______10987654____] (((((int)in[68 + inPos]) & 255) << 4) & 262143) | // [__543210] // [765432____________] (((((int)in[69 + inPos]) & 255) << 12) & 262143); out[31 + outPos] = // [76______] // [________________10] (((((int)in[69 + inPos]) & 255) >>> 6) & 262143) | // [76543210] // [________98765432__] (((((int)in[70 + inPos]) & 255) << 2) & 262143) | // [76543210] // [76543210__________] (((((int)in[71 + inPos]) & 255) << 10) & 262143); } } private static final class Packer19 extends BytePacker { private Packer19() { super(19); } public final void pack8Values(final int[] in, final int inPos, final byte[] out, final int outPos) { out[ 0 + outPos] = (byte)(( // [76543210] // [___________76543210] ((in[ 0 + inPos] & 524287))) & 255); out[ 1 + outPos] = (byte)(( // [76543210] // [___54321098________] ((in[ 0 + inPos] & 524287) >>> 8)) & 255); out[ 2 + outPos] = (byte)(( // [_____210] // [876________________] ((in[ 0 + inPos] & 524287) >>> 16) | // [76543___] // [______________43210] ((in[ 1 + inPos] & 524287) << 3)) & 255); out[ 3 + outPos] = (byte)(( // [76543210] // [______21098765_____] ((in[ 1 + inPos] & 524287) >>> 5)) & 255); out[ 4 + outPos] = (byte)(( // [__543210] // [876543_____________] ((in[ 1 + inPos] & 524287) >>> 13) | // [76______] // [_________________10] ((in[ 2 + inPos] & 524287) << 6)) & 255); out[ 5 + outPos] = (byte)(( // [76543210] // [_________98765432__] ((in[ 2 + inPos] & 524287) >>> 2)) & 255); out[ 6 + outPos] = (byte)(( // [76543210] // [_76543210__________] ((in[ 2 + inPos] & 524287) >>> 10)) & 255); out[ 7 + outPos] = (byte)(( // [_______0] // [8__________________] ((in[ 2 + inPos] & 524287) >>> 18) | // [7654321_] // [____________6543210] ((in[ 3 + inPos] & 524287) << 1)) & 255); out[ 8 + outPos] = (byte)(( // [76543210] // [____43210987_______] ((in[ 3 + inPos] & 524287) >>> 7)) & 255); out[ 9 + outPos] = (byte)(( // [____3210] // [8765_______________] ((in[ 3 + inPos] & 524287) >>> 15) | // [7654____] // [_______________3210] ((in[ 4 + inPos] & 524287) << 4)) & 255); out[10 + outPos] = (byte)(( // [76543210] // [_______10987654____] ((in[ 4 + inPos] & 524287) >>> 4)) & 255); out[11 + outPos] = (byte)(( // [_6543210] // [8765432____________] ((in[ 4 + inPos] & 524287) >>> 12) | // [7_______] // [__________________0] ((in[ 5 + inPos] & 524287) << 7)) & 255); out[12 + outPos] = (byte)(( // [76543210] // [__________87654321_] ((in[ 5 + inPos] & 524287) >>> 1)) & 255); out[13 + outPos] = (byte)(( // [76543210] // [__65432109_________] ((in[ 5 + inPos] & 524287) >>> 9)) & 255); out[14 + outPos] = (byte)(( // [______10] // [87_________________] ((in[ 5 + inPos] & 524287) >>> 17) | // [765432__] // [_____________543210] ((in[ 6 + inPos] & 524287) << 2)) & 255); out[15 + outPos] = (byte)(( // [76543210] // [_____32109876______] ((in[ 6 + inPos] & 524287) >>> 6)) & 255); out[16 + outPos] = (byte)(( // [___43210] // [87654______________] ((in[ 6 + inPos] & 524287) >>> 14) | // [765_____] // [________________210] ((in[ 7 + inPos] & 524287) << 5)) & 255); out[17 + outPos] = (byte)(( // [76543210] // [________09876543___] ((in[ 7 + inPos] & 524287) >>> 3)) & 255); out[18 + outPos] = (byte)(( // [76543210] // [87654321___________] ((in[ 7 + inPos] & 524287) >>> 11)) & 255); } public final void pack32Values(final int[] in, final int inPos, final byte[] out, final int outPos) { out[ 0 + outPos] = (byte)(( // [76543210] // [___________76543210] ((in[ 0 + inPos] & 524287))) & 255); out[ 1 + outPos] = (byte)(( // [76543210] // [___54321098________] ((in[ 0 + inPos] & 524287) >>> 8)) & 255); out[ 2 + outPos] = (byte)(( // [_____210] // [876________________] ((in[ 0 + inPos] & 524287) >>> 16) | // [76543___] // [______________43210] ((in[ 1 + inPos] & 524287) << 3)) & 255); out[ 3 + outPos] = (byte)(( // [76543210] // [______21098765_____] ((in[ 1 + inPos] & 524287) >>> 5)) & 255); out[ 4 + outPos] = (byte)(( // [__543210] // [876543_____________] ((in[ 1 + inPos] & 524287) >>> 13) | // [76______] // [_________________10] ((in[ 2 + inPos] & 524287) << 6)) & 255); out[ 5 + outPos] = (byte)(( // [76543210] // [_________98765432__] ((in[ 2 + inPos] & 524287) >>> 2)) & 255); out[ 6 + outPos] = (byte)(( // [76543210] // [_76543210__________] ((in[ 2 + inPos] & 524287) >>> 10)) & 255); out[ 7 + outPos] = (byte)(( // [_______0] // [8__________________] ((in[ 2 + inPos] & 524287) >>> 18) | // [7654321_] // [____________6543210] ((in[ 3 + inPos] & 524287) << 1)) & 255); out[ 8 + outPos] = (byte)(( // [76543210] // [____43210987_______] ((in[ 3 + inPos] & 524287) >>> 7)) & 255); out[ 9 + outPos] = (byte)(( // [____3210] // [8765_______________] ((in[ 3 + inPos] & 524287) >>> 15) | // [7654____] // [_______________3210] ((in[ 4 + inPos] & 524287) << 4)) & 255); out[10 + outPos] = (byte)(( // [76543210] // [_______10987654____] ((in[ 4 + inPos] & 524287) >>> 4)) & 255); out[11 + outPos] = (byte)(( // [_6543210] // [8765432____________] ((in[ 4 + inPos] & 524287) >>> 12) | // [7_______] // [__________________0] ((in[ 5 + inPos] & 524287) << 7)) & 255); out[12 + outPos] = (byte)(( // [76543210] // [__________87654321_] ((in[ 5 + inPos] & 524287) >>> 1)) & 255); out[13 + outPos] = (byte)(( // [76543210] // [__65432109_________] ((in[ 5 + inPos] & 524287) >>> 9)) & 255); out[14 + outPos] = (byte)(( // [______10] // [87_________________] ((in[ 5 + inPos] & 524287) >>> 17) | // [765432__] // [_____________543210] ((in[ 6 + inPos] & 524287) << 2)) & 255); out[15 + outPos] = (byte)(( // [76543210] // [_____32109876______] ((in[ 6 + inPos] & 524287) >>> 6)) & 255); out[16 + outPos] = (byte)(( // [___43210] // [87654______________] ((in[ 6 + inPos] & 524287) >>> 14) | // [765_____] // [________________210] ((in[ 7 + inPos] & 524287) << 5)) & 255); out[17 + outPos] = (byte)(( // [76543210] // [________09876543___] ((in[ 7 + inPos] & 524287) >>> 3)) & 255); out[18 + outPos] = (byte)(( // [76543210] // [87654321___________] ((in[ 7 + inPos] & 524287) >>> 11)) & 255); out[19 + outPos] = (byte)(( // [76543210] // [___________76543210] ((in[ 8 + inPos] & 524287))) & 255); out[20 + outPos] = (byte)(( // [76543210] // [___54321098________] ((in[ 8 + inPos] & 524287) >>> 8)) & 255); out[21 + outPos] = (byte)(( // [_____210] // [876________________] ((in[ 8 + inPos] & 524287) >>> 16) | // [76543___] // [______________43210] ((in[ 9 + inPos] & 524287) << 3)) & 255); out[22 + outPos] = (byte)(( // [76543210] // [______21098765_____] ((in[ 9 + inPos] & 524287) >>> 5)) & 255); out[23 + outPos] = (byte)(( // [__543210] // [876543_____________] ((in[ 9 + inPos] & 524287) >>> 13) | // [76______] // [_________________10] ((in[10 + inPos] & 524287) << 6)) & 255); out[24 + outPos] = (byte)(( // [76543210] // [_________98765432__] ((in[10 + inPos] & 524287) >>> 2)) & 255); out[25 + outPos] = (byte)(( // [76543210] // [_76543210__________] ((in[10 + inPos] & 524287) >>> 10)) & 255); out[26 + outPos] = (byte)(( // [_______0] // [8__________________] ((in[10 + inPos] & 524287) >>> 18) | // [7654321_] // [____________6543210] ((in[11 + inPos] & 524287) << 1)) & 255); out[27 + outPos] = (byte)(( // [76543210] // [____43210987_______] ((in[11 + inPos] & 524287) >>> 7)) & 255); out[28 + outPos] = (byte)(( // [____3210] // [8765_______________] ((in[11 + inPos] & 524287) >>> 15) | // [7654____] // [_______________3210] ((in[12 + inPos] & 524287) << 4)) & 255); out[29 + outPos] = (byte)(( // [76543210] // [_______10987654____] ((in[12 + inPos] & 524287) >>> 4)) & 255); out[30 + outPos] = (byte)(( // [_6543210] // [8765432____________] ((in[12 + inPos] & 524287) >>> 12) | // [7_______] // [__________________0] ((in[13 + inPos] & 524287) << 7)) & 255); out[31 + outPos] = (byte)(( // [76543210] // [__________87654321_] ((in[13 + inPos] & 524287) >>> 1)) & 255); out[32 + outPos] = (byte)(( // [76543210] // [__65432109_________] ((in[13 + inPos] & 524287) >>> 9)) & 255); out[33 + outPos] = (byte)(( // [______10] // [87_________________] ((in[13 + inPos] & 524287) >>> 17) | // [765432__] // [_____________543210] ((in[14 + inPos] & 524287) << 2)) & 255); out[34 + outPos] = (byte)(( // [76543210] // [_____32109876______] ((in[14 + inPos] & 524287) >>> 6)) & 255); out[35 + outPos] = (byte)(( // [___43210] // [87654______________] ((in[14 + inPos] & 524287) >>> 14) | // [765_____] // [________________210] ((in[15 + inPos] & 524287) << 5)) & 255); out[36 + outPos] = (byte)(( // [76543210] // [________09876543___] ((in[15 + inPos] & 524287) >>> 3)) & 255); out[37 + outPos] = (byte)(( // [76543210] // [87654321___________] ((in[15 + inPos] & 524287) >>> 11)) & 255); out[38 + outPos] = (byte)(( // [76543210] // [___________76543210] ((in[16 + inPos] & 524287))) & 255); out[39 + outPos] = (byte)(( // [76543210] // [___54321098________] ((in[16 + inPos] & 524287) >>> 8)) & 255); out[40 + outPos] = (byte)(( // [_____210] // [876________________] ((in[16 + inPos] & 524287) >>> 16) | // [76543___] // [______________43210] ((in[17 + inPos] & 524287) << 3)) & 255); out[41 + outPos] = (byte)(( // [76543210] // [______21098765_____] ((in[17 + inPos] & 524287) >>> 5)) & 255); out[42 + outPos] = (byte)(( // [__543210] // [876543_____________] ((in[17 + inPos] & 524287) >>> 13) | // [76______] // [_________________10] ((in[18 + inPos] & 524287) << 6)) & 255); out[43 + outPos] = (byte)(( // [76543210] // [_________98765432__] ((in[18 + inPos] & 524287) >>> 2)) & 255); out[44 + outPos] = (byte)(( // [76543210] // [_76543210__________] ((in[18 + inPos] & 524287) >>> 10)) & 255); out[45 + outPos] = (byte)(( // [_______0] // [8__________________] ((in[18 + inPos] & 524287) >>> 18) | // [7654321_] // [____________6543210] ((in[19 + inPos] & 524287) << 1)) & 255); out[46 + outPos] = (byte)(( // [76543210] // [____43210987_______] ((in[19 + inPos] & 524287) >>> 7)) & 255); out[47 + outPos] = (byte)(( // [____3210] // [8765_______________] ((in[19 + inPos] & 524287) >>> 15) | // [7654____] // [_______________3210] ((in[20 + inPos] & 524287) << 4)) & 255); out[48 + outPos] = (byte)(( // [76543210] // [_______10987654____] ((in[20 + inPos] & 524287) >>> 4)) & 255); out[49 + outPos] = (byte)(( // [_6543210] // [8765432____________] ((in[20 + inPos] & 524287) >>> 12) | // [7_______] // [__________________0] ((in[21 + inPos] & 524287) << 7)) & 255); out[50 + outPos] = (byte)(( // [76543210] // [__________87654321_] ((in[21 + inPos] & 524287) >>> 1)) & 255); out[51 + outPos] = (byte)(( // [76543210] // [__65432109_________] ((in[21 + inPos] & 524287) >>> 9)) & 255); out[52 + outPos] = (byte)(( // [______10] // [87_________________] ((in[21 + inPos] & 524287) >>> 17) | // [765432__] // [_____________543210] ((in[22 + inPos] & 524287) << 2)) & 255); out[53 + outPos] = (byte)(( // [76543210] // [_____32109876______] ((in[22 + inPos] & 524287) >>> 6)) & 255); out[54 + outPos] = (byte)(( // [___43210] // [87654______________] ((in[22 + inPos] & 524287) >>> 14) | // [765_____] // [________________210] ((in[23 + inPos] & 524287) << 5)) & 255); out[55 + outPos] = (byte)(( // [76543210] // [________09876543___] ((in[23 + inPos] & 524287) >>> 3)) & 255); out[56 + outPos] = (byte)(( // [76543210] // [87654321___________] ((in[23 + inPos] & 524287) >>> 11)) & 255); out[57 + outPos] = (byte)(( // [76543210] // [___________76543210] ((in[24 + inPos] & 524287))) & 255); out[58 + outPos] = (byte)(( // [76543210] // [___54321098________] ((in[24 + inPos] & 524287) >>> 8)) & 255); out[59 + outPos] = (byte)(( // [_____210] // [876________________] ((in[24 + inPos] & 524287) >>> 16) | // [76543___] // [______________43210] ((in[25 + inPos] & 524287) << 3)) & 255); out[60 + outPos] = (byte)(( // [76543210] // [______21098765_____] ((in[25 + inPos] & 524287) >>> 5)) & 255); out[61 + outPos] = (byte)(( // [__543210] // [876543_____________] ((in[25 + inPos] & 524287) >>> 13) | // [76______] // [_________________10] ((in[26 + inPos] & 524287) << 6)) & 255); out[62 + outPos] = (byte)(( // [76543210] // [_________98765432__] ((in[26 + inPos] & 524287) >>> 2)) & 255); out[63 + outPos] = (byte)(( // [76543210] // [_76543210__________] ((in[26 + inPos] & 524287) >>> 10)) & 255); out[64 + outPos] = (byte)(( // [_______0] // [8__________________] ((in[26 + inPos] & 524287) >>> 18) | // [7654321_] // [____________6543210] ((in[27 + inPos] & 524287) << 1)) & 255); out[65 + outPos] = (byte)(( // [76543210] // [____43210987_______] ((in[27 + inPos] & 524287) >>> 7)) & 255); out[66 + outPos] = (byte)(( // [____3210] // [8765_______________] ((in[27 + inPos] & 524287) >>> 15) | // [7654____] // [_______________3210] ((in[28 + inPos] & 524287) << 4)) & 255); out[67 + outPos] = (byte)(( // [76543210] // [_______10987654____] ((in[28 + inPos] & 524287) >>> 4)) & 255); out[68 + outPos] = (byte)(( // [_6543210] // [8765432____________] ((in[28 + inPos] & 524287) >>> 12) | // [7_______] // [__________________0] ((in[29 + inPos] & 524287) << 7)) & 255); out[69 + outPos] = (byte)(( // [76543210] // [__________87654321_] ((in[29 + inPos] & 524287) >>> 1)) & 255); out[70 + outPos] = (byte)(( // [76543210] // [__65432109_________] ((in[29 + inPos] & 524287) >>> 9)) & 255); out[71 + outPos] = (byte)(( // [______10] // [87_________________] ((in[29 + inPos] & 524287) >>> 17) | // [765432__] // [_____________543210] ((in[30 + inPos] & 524287) << 2)) & 255); out[72 + outPos] = (byte)(( // [76543210] // [_____32109876______] ((in[30 + inPos] & 524287) >>> 6)) & 255); out[73 + outPos] = (byte)(( // [___43210] // [87654______________] ((in[30 + inPos] & 524287) >>> 14) | // [765_____] // [________________210] ((in[31 + inPos] & 524287) << 5)) & 255); out[74 + outPos] = (byte)(( // [76543210] // [________09876543___] ((in[31 + inPos] & 524287) >>> 3)) & 255); out[75 + outPos] = (byte)(( // [76543210] // [87654321___________] ((in[31 + inPos] & 524287) >>> 11)) & 255); } public final void unpack8Values(final byte[] in, final int inPos, final int[] out, final int outPos) { out[ 0 + outPos] = // [76543210] // [___________76543210] (((((int)in[ 0 + inPos]) & 255) ) & 524287) | // [76543210] // [___54321098________] (((((int)in[ 1 + inPos]) & 255) << 8) & 524287) | // [_____210] // [876________________] (((((int)in[ 2 + inPos]) & 255) << 16) & 524287); out[ 1 + outPos] = // [76543___] // [______________43210] (((((int)in[ 2 + inPos]) & 255) >>> 3) & 524287) | // [76543210] // [______21098765_____] (((((int)in[ 3 + inPos]) & 255) << 5) & 524287) | // [__543210] // [876543_____________] (((((int)in[ 4 + inPos]) & 255) << 13) & 524287); out[ 2 + outPos] = // [76______] // [_________________10] (((((int)in[ 4 + inPos]) & 255) >>> 6) & 524287) | // [76543210] // [_________98765432__] (((((int)in[ 5 + inPos]) & 255) << 2) & 524287) | // [76543210] // [_76543210__________] (((((int)in[ 6 + inPos]) & 255) << 10) & 524287) | // [_______0] // [8__________________] (((((int)in[ 7 + inPos]) & 255) << 18) & 524287); out[ 3 + outPos] = // [7654321_] // [____________6543210] (((((int)in[ 7 + inPos]) & 255) >>> 1) & 524287) | // [76543210] // [____43210987_______] (((((int)in[ 8 + inPos]) & 255) << 7) & 524287) | // [____3210] // [8765_______________] (((((int)in[ 9 + inPos]) & 255) << 15) & 524287); out[ 4 + outPos] = // [7654____] // [_______________3210] (((((int)in[ 9 + inPos]) & 255) >>> 4) & 524287) | // [76543210] // [_______10987654____] (((((int)in[10 + inPos]) & 255) << 4) & 524287) | // [_6543210] // [8765432____________] (((((int)in[11 + inPos]) & 255) << 12) & 524287); out[ 5 + outPos] = // [7_______] // [__________________0] (((((int)in[11 + inPos]) & 255) >>> 7) & 524287) | // [76543210] // [__________87654321_] (((((int)in[12 + inPos]) & 255) << 1) & 524287) | // [76543210] // [__65432109_________] (((((int)in[13 + inPos]) & 255) << 9) & 524287) | // [______10] // [87_________________] (((((int)in[14 + inPos]) & 255) << 17) & 524287); out[ 6 + outPos] = // [765432__] // [_____________543210] (((((int)in[14 + inPos]) & 255) >>> 2) & 524287) | // [76543210] // [_____32109876______] (((((int)in[15 + inPos]) & 255) << 6) & 524287) | // [___43210] // [87654______________] (((((int)in[16 + inPos]) & 255) << 14) & 524287); out[ 7 + outPos] = // [765_____] // [________________210] (((((int)in[16 + inPos]) & 255) >>> 5) & 524287) | // [76543210] // [________09876543___] (((((int)in[17 + inPos]) & 255) << 3) & 524287) | // [76543210] // [87654321___________] (((((int)in[18 + inPos]) & 255) << 11) & 524287); } public final void unpack32Values(final byte[] in, final int inPos, final int[] out, final int outPos) { out[ 0 + outPos] = // [76543210] // [___________76543210] (((((int)in[ 0 + inPos]) & 255) ) & 524287) | // [76543210] // [___54321098________] (((((int)in[ 1 + inPos]) & 255) << 8) & 524287) | // [_____210] // [876________________] (((((int)in[ 2 + inPos]) & 255) << 16) & 524287); out[ 1 + outPos] = // [76543___] // [______________43210] (((((int)in[ 2 + inPos]) & 255) >>> 3) & 524287) | // [76543210] // [______21098765_____] (((((int)in[ 3 + inPos]) & 255) << 5) & 524287) | // [__543210] // [876543_____________] (((((int)in[ 4 + inPos]) & 255) << 13) & 524287); out[ 2 + outPos] = // [76______] // [_________________10] (((((int)in[ 4 + inPos]) & 255) >>> 6) & 524287) | // [76543210] // [_________98765432__] (((((int)in[ 5 + inPos]) & 255) << 2) & 524287) | // [76543210] // [_76543210__________] (((((int)in[ 6 + inPos]) & 255) << 10) & 524287) | // [_______0] // [8__________________] (((((int)in[ 7 + inPos]) & 255) << 18) & 524287); out[ 3 + outPos] = // [7654321_] // [____________6543210] (((((int)in[ 7 + inPos]) & 255) >>> 1) & 524287) | // [76543210] // [____43210987_______] (((((int)in[ 8 + inPos]) & 255) << 7) & 524287) | // [____3210] // [8765_______________] (((((int)in[ 9 + inPos]) & 255) << 15) & 524287); out[ 4 + outPos] = // [7654____] // [_______________3210] (((((int)in[ 9 + inPos]) & 255) >>> 4) & 524287) | // [76543210] // [_______10987654____] (((((int)in[10 + inPos]) & 255) << 4) & 524287) | // [_6543210] // [8765432____________] (((((int)in[11 + inPos]) & 255) << 12) & 524287); out[ 5 + outPos] = // [7_______] // [__________________0] (((((int)in[11 + inPos]) & 255) >>> 7) & 524287) | // [76543210] // [__________87654321_] (((((int)in[12 + inPos]) & 255) << 1) & 524287) | // [76543210] // [__65432109_________] (((((int)in[13 + inPos]) & 255) << 9) & 524287) | // [______10] // [87_________________] (((((int)in[14 + inPos]) & 255) << 17) & 524287); out[ 6 + outPos] = // [765432__] // [_____________543210] (((((int)in[14 + inPos]) & 255) >>> 2) & 524287) | // [76543210] // [_____32109876______] (((((int)in[15 + inPos]) & 255) << 6) & 524287) | // [___43210] // [87654______________] (((((int)in[16 + inPos]) & 255) << 14) & 524287); out[ 7 + outPos] = // [765_____] // [________________210] (((((int)in[16 + inPos]) & 255) >>> 5) & 524287) | // [76543210] // [________09876543___] (((((int)in[17 + inPos]) & 255) << 3) & 524287) | // [76543210] // [87654321___________] (((((int)in[18 + inPos]) & 255) << 11) & 524287); out[ 8 + outPos] = // [76543210] // [___________76543210] (((((int)in[19 + inPos]) & 255) ) & 524287) | // [76543210] // [___54321098________] (((((int)in[20 + inPos]) & 255) << 8) & 524287) | // [_____210] // [876________________] (((((int)in[21 + inPos]) & 255) << 16) & 524287); out[ 9 + outPos] = // [76543___] // [______________43210] (((((int)in[21 + inPos]) & 255) >>> 3) & 524287) | // [76543210] // [______21098765_____] (((((int)in[22 + inPos]) & 255) << 5) & 524287) | // [__543210] // [876543_____________] (((((int)in[23 + inPos]) & 255) << 13) & 524287); out[10 + outPos] = // [76______] // [_________________10] (((((int)in[23 + inPos]) & 255) >>> 6) & 524287) | // [76543210] // [_________98765432__] (((((int)in[24 + inPos]) & 255) << 2) & 524287) | // [76543210] // [_76543210__________] (((((int)in[25 + inPos]) & 255) << 10) & 524287) | // [_______0] // [8__________________] (((((int)in[26 + inPos]) & 255) << 18) & 524287); out[11 + outPos] = // [7654321_] // [____________6543210] (((((int)in[26 + inPos]) & 255) >>> 1) & 524287) | // [76543210] // [____43210987_______] (((((int)in[27 + inPos]) & 255) << 7) & 524287) | // [____3210] // [8765_______________] (((((int)in[28 + inPos]) & 255) << 15) & 524287); out[12 + outPos] = // [7654____] // [_______________3210] (((((int)in[28 + inPos]) & 255) >>> 4) & 524287) | // [76543210] // [_______10987654____] (((((int)in[29 + inPos]) & 255) << 4) & 524287) | // [_6543210] // [8765432____________] (((((int)in[30 + inPos]) & 255) << 12) & 524287); out[13 + outPos] = // [7_______] // [__________________0] (((((int)in[30 + inPos]) & 255) >>> 7) & 524287) | // [76543210] // [__________87654321_] (((((int)in[31 + inPos]) & 255) << 1) & 524287) | // [76543210] // [__65432109_________] (((((int)in[32 + inPos]) & 255) << 9) & 524287) | // [______10] // [87_________________] (((((int)in[33 + inPos]) & 255) << 17) & 524287); out[14 + outPos] = // [765432__] // [_____________543210] (((((int)in[33 + inPos]) & 255) >>> 2) & 524287) | // [76543210] // [_____32109876______] (((((int)in[34 + inPos]) & 255) << 6) & 524287) | // [___43210] // [87654______________] (((((int)in[35 + inPos]) & 255) << 14) & 524287); out[15 + outPos] = // [765_____] // [________________210] (((((int)in[35 + inPos]) & 255) >>> 5) & 524287) | // [76543210] // [________09876543___] (((((int)in[36 + inPos]) & 255) << 3) & 524287) | // [76543210] // [87654321___________] (((((int)in[37 + inPos]) & 255) << 11) & 524287); out[16 + outPos] = // [76543210] // [___________76543210] (((((int)in[38 + inPos]) & 255) ) & 524287) | // [76543210] // [___54321098________] (((((int)in[39 + inPos]) & 255) << 8) & 524287) | // [_____210] // [876________________] (((((int)in[40 + inPos]) & 255) << 16) & 524287); out[17 + outPos] = // [76543___] // [______________43210] (((((int)in[40 + inPos]) & 255) >>> 3) & 524287) | // [76543210] // [______21098765_____] (((((int)in[41 + inPos]) & 255) << 5) & 524287) | // [__543210] // [876543_____________] (((((int)in[42 + inPos]) & 255) << 13) & 524287); out[18 + outPos] = // [76______] // [_________________10] (((((int)in[42 + inPos]) & 255) >>> 6) & 524287) | // [76543210] // [_________98765432__] (((((int)in[43 + inPos]) & 255) << 2) & 524287) | // [76543210] // [_76543210__________] (((((int)in[44 + inPos]) & 255) << 10) & 524287) | // [_______0] // [8__________________] (((((int)in[45 + inPos]) & 255) << 18) & 524287); out[19 + outPos] = // [7654321_] // [____________6543210] (((((int)in[45 + inPos]) & 255) >>> 1) & 524287) | // [76543210] // [____43210987_______] (((((int)in[46 + inPos]) & 255) << 7) & 524287) | // [____3210] // [8765_______________] (((((int)in[47 + inPos]) & 255) << 15) & 524287); out[20 + outPos] = // [7654____] // [_______________3210] (((((int)in[47 + inPos]) & 255) >>> 4) & 524287) | // [76543210] // [_______10987654____] (((((int)in[48 + inPos]) & 255) << 4) & 524287) | // [_6543210] // [8765432____________] (((((int)in[49 + inPos]) & 255) << 12) & 524287); out[21 + outPos] = // [7_______] // [__________________0] (((((int)in[49 + inPos]) & 255) >>> 7) & 524287) | // [76543210] // [__________87654321_] (((((int)in[50 + inPos]) & 255) << 1) & 524287) | // [76543210] // [__65432109_________] (((((int)in[51 + inPos]) & 255) << 9) & 524287) | // [______10] // [87_________________] (((((int)in[52 + inPos]) & 255) << 17) & 524287); out[22 + outPos] = // [765432__] // [_____________543210] (((((int)in[52 + inPos]) & 255) >>> 2) & 524287) | // [76543210] // [_____32109876______] (((((int)in[53 + inPos]) & 255) << 6) & 524287) | // [___43210] // [87654______________] (((((int)in[54 + inPos]) & 255) << 14) & 524287); out[23 + outPos] = // [765_____] // [________________210] (((((int)in[54 + inPos]) & 255) >>> 5) & 524287) | // [76543210] // [________09876543___] (((((int)in[55 + inPos]) & 255) << 3) & 524287) | // [76543210] // [87654321___________] (((((int)in[56 + inPos]) & 255) << 11) & 524287); out[24 + outPos] = // [76543210] // [___________76543210] (((((int)in[57 + inPos]) & 255) ) & 524287) | // [76543210] // [___54321098________] (((((int)in[58 + inPos]) & 255) << 8) & 524287) | // [_____210] // [876________________] (((((int)in[59 + inPos]) & 255) << 16) & 524287); out[25 + outPos] = // [76543___] // [______________43210] (((((int)in[59 + inPos]) & 255) >>> 3) & 524287) | // [76543210] // [______21098765_____] (((((int)in[60 + inPos]) & 255) << 5) & 524287) | // [__543210] // [876543_____________] (((((int)in[61 + inPos]) & 255) << 13) & 524287); out[26 + outPos] = // [76______] // [_________________10] (((((int)in[61 + inPos]) & 255) >>> 6) & 524287) | // [76543210] // [_________98765432__] (((((int)in[62 + inPos]) & 255) << 2) & 524287) | // [76543210] // [_76543210__________] (((((int)in[63 + inPos]) & 255) << 10) & 524287) | // [_______0] // [8__________________] (((((int)in[64 + inPos]) & 255) << 18) & 524287); out[27 + outPos] = // [7654321_] // [____________6543210] (((((int)in[64 + inPos]) & 255) >>> 1) & 524287) | // [76543210] // [____43210987_______] (((((int)in[65 + inPos]) & 255) << 7) & 524287) | // [____3210] // [8765_______________] (((((int)in[66 + inPos]) & 255) << 15) & 524287); out[28 + outPos] = // [7654____] // [_______________3210] (((((int)in[66 + inPos]) & 255) >>> 4) & 524287) | // [76543210] // [_______10987654____] (((((int)in[67 + inPos]) & 255) << 4) & 524287) | // [_6543210] // [8765432____________] (((((int)in[68 + inPos]) & 255) << 12) & 524287); out[29 + outPos] = // [7_______] // [__________________0] (((((int)in[68 + inPos]) & 255) >>> 7) & 524287) | // [76543210] // [__________87654321_] (((((int)in[69 + inPos]) & 255) << 1) & 524287) | // [76543210] // [__65432109_________] (((((int)in[70 + inPos]) & 255) << 9) & 524287) | // [______10] // [87_________________] (((((int)in[71 + inPos]) & 255) << 17) & 524287); out[30 + outPos] = // [765432__] // [_____________543210] (((((int)in[71 + inPos]) & 255) >>> 2) & 524287) | // [76543210] // [_____32109876______] (((((int)in[72 + inPos]) & 255) << 6) & 524287) | // [___43210] // [87654______________] (((((int)in[73 + inPos]) & 255) << 14) & 524287); out[31 + outPos] = // [765_____] // [________________210] (((((int)in[73 + inPos]) & 255) >>> 5) & 524287) | // [76543210] // [________09876543___] (((((int)in[74 + inPos]) & 255) << 3) & 524287) | // [76543210] // [87654321___________] (((((int)in[75 + inPos]) & 255) << 11) & 524287); } } private static final class Packer20 extends BytePacker { private Packer20() { super(20); } public final void pack8Values(final int[] in, final int inPos, final byte[] out, final int outPos) { out[ 0 + outPos] = (byte)(( // [76543210] // [____________76543210] ((in[ 0 + inPos] & 1048575))) & 255); out[ 1 + outPos] = (byte)(( // [76543210] // [____54321098________] ((in[ 0 + inPos] & 1048575) >>> 8)) & 255); out[ 2 + outPos] = (byte)(( // [____3210] // [9876________________] ((in[ 0 + inPos] & 1048575) >>> 16) | // [7654____] // [________________3210] ((in[ 1 + inPos] & 1048575) << 4)) & 255); out[ 3 + outPos] = (byte)(( // [76543210] // [________10987654____] ((in[ 1 + inPos] & 1048575) >>> 4)) & 255); out[ 4 + outPos] = (byte)(( // [76543210] // [98765432____________] ((in[ 1 + inPos] & 1048575) >>> 12)) & 255); out[ 5 + outPos] = (byte)(( // [76543210] // [____________76543210] ((in[ 2 + inPos] & 1048575))) & 255); out[ 6 + outPos] = (byte)(( // [76543210] // [____54321098________] ((in[ 2 + inPos] & 1048575) >>> 8)) & 255); out[ 7 + outPos] = (byte)(( // [____3210] // [9876________________] ((in[ 2 + inPos] & 1048575) >>> 16) | // [7654____] // [________________3210] ((in[ 3 + inPos] & 1048575) << 4)) & 255); out[ 8 + outPos] = (byte)(( // [76543210] // [________10987654____] ((in[ 3 + inPos] & 1048575) >>> 4)) & 255); out[ 9 + outPos] = (byte)(( // [76543210] // [98765432____________] ((in[ 3 + inPos] & 1048575) >>> 12)) & 255); out[10 + outPos] = (byte)(( // [76543210] // [____________76543210] ((in[ 4 + inPos] & 1048575))) & 255); out[11 + outPos] = (byte)(( // [76543210] // [____54321098________] ((in[ 4 + inPos] & 1048575) >>> 8)) & 255); out[12 + outPos] = (byte)(( // [____3210] // [9876________________] ((in[ 4 + inPos] & 1048575) >>> 16) | // [7654____] // [________________3210] ((in[ 5 + inPos] & 1048575) << 4)) & 255); out[13 + outPos] = (byte)(( // [76543210] // [________10987654____] ((in[ 5 + inPos] & 1048575) >>> 4)) & 255); out[14 + outPos] = (byte)(( // [76543210] // [98765432____________] ((in[ 5 + inPos] & 1048575) >>> 12)) & 255); out[15 + outPos] = (byte)(( // [76543210] // [____________76543210] ((in[ 6 + inPos] & 1048575))) & 255); out[16 + outPos] = (byte)(( // [76543210] // [____54321098________] ((in[ 6 + inPos] & 1048575) >>> 8)) & 255); out[17 + outPos] = (byte)(( // [____3210] // [9876________________] ((in[ 6 + inPos] & 1048575) >>> 16) | // [7654____] // [________________3210] ((in[ 7 + inPos] & 1048575) << 4)) & 255); out[18 + outPos] = (byte)(( // [76543210] // [________10987654____] ((in[ 7 + inPos] & 1048575) >>> 4)) & 255); out[19 + outPos] = (byte)(( // [76543210] // [98765432____________] ((in[ 7 + inPos] & 1048575) >>> 12)) & 255); } public final void pack32Values(final int[] in, final int inPos, final byte[] out, final int outPos) { out[ 0 + outPos] = (byte)(( // [76543210] // [____________76543210] ((in[ 0 + inPos] & 1048575))) & 255); out[ 1 + outPos] = (byte)(( // [76543210] // [____54321098________] ((in[ 0 + inPos] & 1048575) >>> 8)) & 255); out[ 2 + outPos] = (byte)(( // [____3210] // [9876________________] ((in[ 0 + inPos] & 1048575) >>> 16) | // [7654____] // [________________3210] ((in[ 1 + inPos] & 1048575) << 4)) & 255); out[ 3 + outPos] = (byte)(( // [76543210] // [________10987654____] ((in[ 1 + inPos] & 1048575) >>> 4)) & 255); out[ 4 + outPos] = (byte)(( // [76543210] // [98765432____________] ((in[ 1 + inPos] & 1048575) >>> 12)) & 255); out[ 5 + outPos] = (byte)(( // [76543210] // [____________76543210] ((in[ 2 + inPos] & 1048575))) & 255); out[ 6 + outPos] = (byte)(( // [76543210] // [____54321098________] ((in[ 2 + inPos] & 1048575) >>> 8)) & 255); out[ 7 + outPos] = (byte)(( // [____3210] // [9876________________] ((in[ 2 + inPos] & 1048575) >>> 16) | // [7654____] // [________________3210] ((in[ 3 + inPos] & 1048575) << 4)) & 255); out[ 8 + outPos] = (byte)(( // [76543210] // [________10987654____] ((in[ 3 + inPos] & 1048575) >>> 4)) & 255); out[ 9 + outPos] = (byte)(( // [76543210] // [98765432____________] ((in[ 3 + inPos] & 1048575) >>> 12)) & 255); out[10 + outPos] = (byte)(( // [76543210] // [____________76543210] ((in[ 4 + inPos] & 1048575))) & 255); out[11 + outPos] = (byte)(( // [76543210] // [____54321098________] ((in[ 4 + inPos] & 1048575) >>> 8)) & 255); out[12 + outPos] = (byte)(( // [____3210] // [9876________________] ((in[ 4 + inPos] & 1048575) >>> 16) | // [7654____] // [________________3210] ((in[ 5 + inPos] & 1048575) << 4)) & 255); out[13 + outPos] = (byte)(( // [76543210] // [________10987654____] ((in[ 5 + inPos] & 1048575) >>> 4)) & 255); out[14 + outPos] = (byte)(( // [76543210] // [98765432____________] ((in[ 5 + inPos] & 1048575) >>> 12)) & 255); out[15 + outPos] = (byte)(( // [76543210] // [____________76543210] ((in[ 6 + inPos] & 1048575))) & 255); out[16 + outPos] = (byte)(( // [76543210] // [____54321098________] ((in[ 6 + inPos] & 1048575) >>> 8)) & 255); out[17 + outPos] = (byte)(( // [____3210] // [9876________________] ((in[ 6 + inPos] & 1048575) >>> 16) | // [7654____] // [________________3210] ((in[ 7 + inPos] & 1048575) << 4)) & 255); out[18 + outPos] = (byte)(( // [76543210] // [________10987654____] ((in[ 7 + inPos] & 1048575) >>> 4)) & 255); out[19 + outPos] = (byte)(( // [76543210] // [98765432____________] ((in[ 7 + inPos] & 1048575) >>> 12)) & 255); out[20 + outPos] = (byte)(( // [76543210] // [____________76543210] ((in[ 8 + inPos] & 1048575))) & 255); out[21 + outPos] = (byte)(( // [76543210] // [____54321098________] ((in[ 8 + inPos] & 1048575) >>> 8)) & 255); out[22 + outPos] = (byte)(( // [____3210] // [9876________________] ((in[ 8 + inPos] & 1048575) >>> 16) | // [7654____] // [________________3210] ((in[ 9 + inPos] & 1048575) << 4)) & 255); out[23 + outPos] = (byte)(( // [76543210] // [________10987654____] ((in[ 9 + inPos] & 1048575) >>> 4)) & 255); out[24 + outPos] = (byte)(( // [76543210] // [98765432____________] ((in[ 9 + inPos] & 1048575) >>> 12)) & 255); out[25 + outPos] = (byte)(( // [76543210] // [____________76543210] ((in[10 + inPos] & 1048575))) & 255); out[26 + outPos] = (byte)(( // [76543210] // [____54321098________] ((in[10 + inPos] & 1048575) >>> 8)) & 255); out[27 + outPos] = (byte)(( // [____3210] // [9876________________] ((in[10 + inPos] & 1048575) >>> 16) | // [7654____] // [________________3210] ((in[11 + inPos] & 1048575) << 4)) & 255); out[28 + outPos] = (byte)(( // [76543210] // [________10987654____] ((in[11 + inPos] & 1048575) >>> 4)) & 255); out[29 + outPos] = (byte)(( // [76543210] // [98765432____________] ((in[11 + inPos] & 1048575) >>> 12)) & 255); out[30 + outPos] = (byte)(( // [76543210] // [____________76543210] ((in[12 + inPos] & 1048575))) & 255); out[31 + outPos] = (byte)(( // [76543210] // [____54321098________] ((in[12 + inPos] & 1048575) >>> 8)) & 255); out[32 + outPos] = (byte)(( // [____3210] // [9876________________] ((in[12 + inPos] & 1048575) >>> 16) | // [7654____] // [________________3210] ((in[13 + inPos] & 1048575) << 4)) & 255); out[33 + outPos] = (byte)(( // [76543210] // [________10987654____] ((in[13 + inPos] & 1048575) >>> 4)) & 255); out[34 + outPos] = (byte)(( // [76543210] // [98765432____________] ((in[13 + inPos] & 1048575) >>> 12)) & 255); out[35 + outPos] = (byte)(( // [76543210] // [____________76543210] ((in[14 + inPos] & 1048575))) & 255); out[36 + outPos] = (byte)(( // [76543210] // [____54321098________] ((in[14 + inPos] & 1048575) >>> 8)) & 255); out[37 + outPos] = (byte)(( // [____3210] // [9876________________] ((in[14 + inPos] & 1048575) >>> 16) | // [7654____] // [________________3210] ((in[15 + inPos] & 1048575) << 4)) & 255); out[38 + outPos] = (byte)(( // [76543210] // [________10987654____] ((in[15 + inPos] & 1048575) >>> 4)) & 255); out[39 + outPos] = (byte)(( // [76543210] // [98765432____________] ((in[15 + inPos] & 1048575) >>> 12)) & 255); out[40 + outPos] = (byte)(( // [76543210] // [____________76543210] ((in[16 + inPos] & 1048575))) & 255); out[41 + outPos] = (byte)(( // [76543210] // [____54321098________] ((in[16 + inPos] & 1048575) >>> 8)) & 255); out[42 + outPos] = (byte)(( // [____3210] // [9876________________] ((in[16 + inPos] & 1048575) >>> 16) | // [7654____] // [________________3210] ((in[17 + inPos] & 1048575) << 4)) & 255); out[43 + outPos] = (byte)(( // [76543210] // [________10987654____] ((in[17 + inPos] & 1048575) >>> 4)) & 255); out[44 + outPos] = (byte)(( // [76543210] // [98765432____________] ((in[17 + inPos] & 1048575) >>> 12)) & 255); out[45 + outPos] = (byte)(( // [76543210] // [____________76543210] ((in[18 + inPos] & 1048575))) & 255); out[46 + outPos] = (byte)(( // [76543210] // [____54321098________] ((in[18 + inPos] & 1048575) >>> 8)) & 255); out[47 + outPos] = (byte)(( // [____3210] // [9876________________] ((in[18 + inPos] & 1048575) >>> 16) | // [7654____] // [________________3210] ((in[19 + inPos] & 1048575) << 4)) & 255); out[48 + outPos] = (byte)(( // [76543210] // [________10987654____] ((in[19 + inPos] & 1048575) >>> 4)) & 255); out[49 + outPos] = (byte)(( // [76543210] // [98765432____________] ((in[19 + inPos] & 1048575) >>> 12)) & 255); out[50 + outPos] = (byte)(( // [76543210] // [____________76543210] ((in[20 + inPos] & 1048575))) & 255); out[51 + outPos] = (byte)(( // [76543210] // [____54321098________] ((in[20 + inPos] & 1048575) >>> 8)) & 255); out[52 + outPos] = (byte)(( // [____3210] // [9876________________] ((in[20 + inPos] & 1048575) >>> 16) | // [7654____] // [________________3210] ((in[21 + inPos] & 1048575) << 4)) & 255); out[53 + outPos] = (byte)(( // [76543210] // [________10987654____] ((in[21 + inPos] & 1048575) >>> 4)) & 255); out[54 + outPos] = (byte)(( // [76543210] // [98765432____________] ((in[21 + inPos] & 1048575) >>> 12)) & 255); out[55 + outPos] = (byte)(( // [76543210] // [____________76543210] ((in[22 + inPos] & 1048575))) & 255); out[56 + outPos] = (byte)(( // [76543210] // [____54321098________] ((in[22 + inPos] & 1048575) >>> 8)) & 255); out[57 + outPos] = (byte)(( // [____3210] // [9876________________] ((in[22 + inPos] & 1048575) >>> 16) | // [7654____] // [________________3210] ((in[23 + inPos] & 1048575) << 4)) & 255); out[58 + outPos] = (byte)(( // [76543210] // [________10987654____] ((in[23 + inPos] & 1048575) >>> 4)) & 255); out[59 + outPos] = (byte)(( // [76543210] // [98765432____________] ((in[23 + inPos] & 1048575) >>> 12)) & 255); out[60 + outPos] = (byte)(( // [76543210] // [____________76543210] ((in[24 + inPos] & 1048575))) & 255); out[61 + outPos] = (byte)(( // [76543210] // [____54321098________] ((in[24 + inPos] & 1048575) >>> 8)) & 255); out[62 + outPos] = (byte)(( // [____3210] // [9876________________] ((in[24 + inPos] & 1048575) >>> 16) | // [7654____] // [________________3210] ((in[25 + inPos] & 1048575) << 4)) & 255); out[63 + outPos] = (byte)(( // [76543210] // [________10987654____] ((in[25 + inPos] & 1048575) >>> 4)) & 255); out[64 + outPos] = (byte)(( // [76543210] // [98765432____________] ((in[25 + inPos] & 1048575) >>> 12)) & 255); out[65 + outPos] = (byte)(( // [76543210] // [____________76543210] ((in[26 + inPos] & 1048575))) & 255); out[66 + outPos] = (byte)(( // [76543210] // [____54321098________] ((in[26 + inPos] & 1048575) >>> 8)) & 255); out[67 + outPos] = (byte)(( // [____3210] // [9876________________] ((in[26 + inPos] & 1048575) >>> 16) | // [7654____] // [________________3210] ((in[27 + inPos] & 1048575) << 4)) & 255); out[68 + outPos] = (byte)(( // [76543210] // [________10987654____] ((in[27 + inPos] & 1048575) >>> 4)) & 255); out[69 + outPos] = (byte)(( // [76543210] // [98765432____________] ((in[27 + inPos] & 1048575) >>> 12)) & 255); out[70 + outPos] = (byte)(( // [76543210] // [____________76543210] ((in[28 + inPos] & 1048575))) & 255); out[71 + outPos] = (byte)(( // [76543210] // [____54321098________] ((in[28 + inPos] & 1048575) >>> 8)) & 255); out[72 + outPos] = (byte)(( // [____3210] // [9876________________] ((in[28 + inPos] & 1048575) >>> 16) | // [7654____] // [________________3210] ((in[29 + inPos] & 1048575) << 4)) & 255); out[73 + outPos] = (byte)(( // [76543210] // [________10987654____] ((in[29 + inPos] & 1048575) >>> 4)) & 255); out[74 + outPos] = (byte)(( // [76543210] // [98765432____________] ((in[29 + inPos] & 1048575) >>> 12)) & 255); out[75 + outPos] = (byte)(( // [76543210] // [____________76543210] ((in[30 + inPos] & 1048575))) & 255); out[76 + outPos] = (byte)(( // [76543210] // [____54321098________] ((in[30 + inPos] & 1048575) >>> 8)) & 255); out[77 + outPos] = (byte)(( // [____3210] // [9876________________] ((in[30 + inPos] & 1048575) >>> 16) | // [7654____] // [________________3210] ((in[31 + inPos] & 1048575) << 4)) & 255); out[78 + outPos] = (byte)(( // [76543210] // [________10987654____] ((in[31 + inPos] & 1048575) >>> 4)) & 255); out[79 + outPos] = (byte)(( // [76543210] // [98765432____________] ((in[31 + inPos] & 1048575) >>> 12)) & 255); } public final void unpack8Values(final byte[] in, final int inPos, final int[] out, final int outPos) { out[ 0 + outPos] = // [76543210] // [____________76543210] (((((int)in[ 0 + inPos]) & 255) ) & 1048575) | // [76543210] // [____54321098________] (((((int)in[ 1 + inPos]) & 255) << 8) & 1048575) | // [____3210] // [9876________________] (((((int)in[ 2 + inPos]) & 255) << 16) & 1048575); out[ 1 + outPos] = // [7654____] // [________________3210] (((((int)in[ 2 + inPos]) & 255) >>> 4) & 1048575) | // [76543210] // [________10987654____] (((((int)in[ 3 + inPos]) & 255) << 4) & 1048575) | // [76543210] // [98765432____________] (((((int)in[ 4 + inPos]) & 255) << 12) & 1048575); out[ 2 + outPos] = // [76543210] // [____________76543210] (((((int)in[ 5 + inPos]) & 255) ) & 1048575) | // [76543210] // [____54321098________] (((((int)in[ 6 + inPos]) & 255) << 8) & 1048575) | // [____3210] // [9876________________] (((((int)in[ 7 + inPos]) & 255) << 16) & 1048575); out[ 3 + outPos] = // [7654____] // [________________3210] (((((int)in[ 7 + inPos]) & 255) >>> 4) & 1048575) | // [76543210] // [________10987654____] (((((int)in[ 8 + inPos]) & 255) << 4) & 1048575) | // [76543210] // [98765432____________] (((((int)in[ 9 + inPos]) & 255) << 12) & 1048575); out[ 4 + outPos] = // [76543210] // [____________76543210] (((((int)in[10 + inPos]) & 255) ) & 1048575) | // [76543210] // [____54321098________] (((((int)in[11 + inPos]) & 255) << 8) & 1048575) | // [____3210] // [9876________________] (((((int)in[12 + inPos]) & 255) << 16) & 1048575); out[ 5 + outPos] = // [7654____] // [________________3210] (((((int)in[12 + inPos]) & 255) >>> 4) & 1048575) | // [76543210] // [________10987654____] (((((int)in[13 + inPos]) & 255) << 4) & 1048575) | // [76543210] // [98765432____________] (((((int)in[14 + inPos]) & 255) << 12) & 1048575); out[ 6 + outPos] = // [76543210] // [____________76543210] (((((int)in[15 + inPos]) & 255) ) & 1048575) | // [76543210] // [____54321098________] (((((int)in[16 + inPos]) & 255) << 8) & 1048575) | // [____3210] // [9876________________] (((((int)in[17 + inPos]) & 255) << 16) & 1048575); out[ 7 + outPos] = // [7654____] // [________________3210] (((((int)in[17 + inPos]) & 255) >>> 4) & 1048575) | // [76543210] // [________10987654____] (((((int)in[18 + inPos]) & 255) << 4) & 1048575) | // [76543210] // [98765432____________] (((((int)in[19 + inPos]) & 255) << 12) & 1048575); } public final void unpack32Values(final byte[] in, final int inPos, final int[] out, final int outPos) { out[ 0 + outPos] = // [76543210] // [____________76543210] (((((int)in[ 0 + inPos]) & 255) ) & 1048575) | // [76543210] // [____54321098________] (((((int)in[ 1 + inPos]) & 255) << 8) & 1048575) | // [____3210] // [9876________________] (((((int)in[ 2 + inPos]) & 255) << 16) & 1048575); out[ 1 + outPos] = // [7654____] // [________________3210] (((((int)in[ 2 + inPos]) & 255) >>> 4) & 1048575) | // [76543210] // [________10987654____] (((((int)in[ 3 + inPos]) & 255) << 4) & 1048575) | // [76543210] // [98765432____________] (((((int)in[ 4 + inPos]) & 255) << 12) & 1048575); out[ 2 + outPos] = // [76543210] // [____________76543210] (((((int)in[ 5 + inPos]) & 255) ) & 1048575) | // [76543210] // [____54321098________] (((((int)in[ 6 + inPos]) & 255) << 8) & 1048575) | // [____3210] // [9876________________] (((((int)in[ 7 + inPos]) & 255) << 16) & 1048575); out[ 3 + outPos] = // [7654____] // [________________3210] (((((int)in[ 7 + inPos]) & 255) >>> 4) & 1048575) | // [76543210] // [________10987654____] (((((int)in[ 8 + inPos]) & 255) << 4) & 1048575) | // [76543210] // [98765432____________] (((((int)in[ 9 + inPos]) & 255) << 12) & 1048575); out[ 4 + outPos] = // [76543210] // [____________76543210] (((((int)in[10 + inPos]) & 255) ) & 1048575) | // [76543210] // [____54321098________] (((((int)in[11 + inPos]) & 255) << 8) & 1048575) | // [____3210] // [9876________________] (((((int)in[12 + inPos]) & 255) << 16) & 1048575); out[ 5 + outPos] = // [7654____] // [________________3210] (((((int)in[12 + inPos]) & 255) >>> 4) & 1048575) | // [76543210] // [________10987654____] (((((int)in[13 + inPos]) & 255) << 4) & 1048575) | // [76543210] // [98765432____________] (((((int)in[14 + inPos]) & 255) << 12) & 1048575); out[ 6 + outPos] = // [76543210] // [____________76543210] (((((int)in[15 + inPos]) & 255) ) & 1048575) | // [76543210] // [____54321098________] (((((int)in[16 + inPos]) & 255) << 8) & 1048575) | // [____3210] // [9876________________] (((((int)in[17 + inPos]) & 255) << 16) & 1048575); out[ 7 + outPos] = // [7654____] // [________________3210] (((((int)in[17 + inPos]) & 255) >>> 4) & 1048575) | // [76543210] // [________10987654____] (((((int)in[18 + inPos]) & 255) << 4) & 1048575) | // [76543210] // [98765432____________] (((((int)in[19 + inPos]) & 255) << 12) & 1048575); out[ 8 + outPos] = // [76543210] // [____________76543210] (((((int)in[20 + inPos]) & 255) ) & 1048575) | // [76543210] // [____54321098________] (((((int)in[21 + inPos]) & 255) << 8) & 1048575) | // [____3210] // [9876________________] (((((int)in[22 + inPos]) & 255) << 16) & 1048575); out[ 9 + outPos] = // [7654____] // [________________3210] (((((int)in[22 + inPos]) & 255) >>> 4) & 1048575) | // [76543210] // [________10987654____] (((((int)in[23 + inPos]) & 255) << 4) & 1048575) | // [76543210] // [98765432____________] (((((int)in[24 + inPos]) & 255) << 12) & 1048575); out[10 + outPos] = // [76543210] // [____________76543210] (((((int)in[25 + inPos]) & 255) ) & 1048575) | // [76543210] // [____54321098________] (((((int)in[26 + inPos]) & 255) << 8) & 1048575) | // [____3210] // [9876________________] (((((int)in[27 + inPos]) & 255) << 16) & 1048575); out[11 + outPos] = // [7654____] // [________________3210] (((((int)in[27 + inPos]) & 255) >>> 4) & 1048575) | // [76543210] // [________10987654____] (((((int)in[28 + inPos]) & 255) << 4) & 1048575) | // [76543210] // [98765432____________] (((((int)in[29 + inPos]) & 255) << 12) & 1048575); out[12 + outPos] = // [76543210] // [____________76543210] (((((int)in[30 + inPos]) & 255) ) & 1048575) | // [76543210] // [____54321098________] (((((int)in[31 + inPos]) & 255) << 8) & 1048575) | // [____3210] // [9876________________] (((((int)in[32 + inPos]) & 255) << 16) & 1048575); out[13 + outPos] = // [7654____] // [________________3210] (((((int)in[32 + inPos]) & 255) >>> 4) & 1048575) | // [76543210] // [________10987654____] (((((int)in[33 + inPos]) & 255) << 4) & 1048575) | // [76543210] // [98765432____________] (((((int)in[34 + inPos]) & 255) << 12) & 1048575); out[14 + outPos] = // [76543210] // [____________76543210] (((((int)in[35 + inPos]) & 255) ) & 1048575) | // [76543210] // [____54321098________] (((((int)in[36 + inPos]) & 255) << 8) & 1048575) | // [____3210] // [9876________________] (((((int)in[37 + inPos]) & 255) << 16) & 1048575); out[15 + outPos] = // [7654____] // [________________3210] (((((int)in[37 + inPos]) & 255) >>> 4) & 1048575) | // [76543210] // [________10987654____] (((((int)in[38 + inPos]) & 255) << 4) & 1048575) | // [76543210] // [98765432____________] (((((int)in[39 + inPos]) & 255) << 12) & 1048575); out[16 + outPos] = // [76543210] // [____________76543210] (((((int)in[40 + inPos]) & 255) ) & 1048575) | // [76543210] // [____54321098________] (((((int)in[41 + inPos]) & 255) << 8) & 1048575) | // [____3210] // [9876________________] (((((int)in[42 + inPos]) & 255) << 16) & 1048575); out[17 + outPos] = // [7654____] // [________________3210] (((((int)in[42 + inPos]) & 255) >>> 4) & 1048575) | // [76543210] // [________10987654____] (((((int)in[43 + inPos]) & 255) << 4) & 1048575) | // [76543210] // [98765432____________] (((((int)in[44 + inPos]) & 255) << 12) & 1048575); out[18 + outPos] = // [76543210] // [____________76543210] (((((int)in[45 + inPos]) & 255) ) & 1048575) | // [76543210] // [____54321098________] (((((int)in[46 + inPos]) & 255) << 8) & 1048575) | // [____3210] // [9876________________] (((((int)in[47 + inPos]) & 255) << 16) & 1048575); out[19 + outPos] = // [7654____] // [________________3210] (((((int)in[47 + inPos]) & 255) >>> 4) & 1048575) | // [76543210] // [________10987654____] (((((int)in[48 + inPos]) & 255) << 4) & 1048575) | // [76543210] // [98765432____________] (((((int)in[49 + inPos]) & 255) << 12) & 1048575); out[20 + outPos] = // [76543210] // [____________76543210] (((((int)in[50 + inPos]) & 255) ) & 1048575) | // [76543210] // [____54321098________] (((((int)in[51 + inPos]) & 255) << 8) & 1048575) | // [____3210] // [9876________________] (((((int)in[52 + inPos]) & 255) << 16) & 1048575); out[21 + outPos] = // [7654____] // [________________3210] (((((int)in[52 + inPos]) & 255) >>> 4) & 1048575) | // [76543210] // [________10987654____] (((((int)in[53 + inPos]) & 255) << 4) & 1048575) | // [76543210] // [98765432____________] (((((int)in[54 + inPos]) & 255) << 12) & 1048575); out[22 + outPos] = // [76543210] // [____________76543210] (((((int)in[55 + inPos]) & 255) ) & 1048575) | // [76543210] // [____54321098________] (((((int)in[56 + inPos]) & 255) << 8) & 1048575) | // [____3210] // [9876________________] (((((int)in[57 + inPos]) & 255) << 16) & 1048575); out[23 + outPos] = // [7654____] // [________________3210] (((((int)in[57 + inPos]) & 255) >>> 4) & 1048575) | // [76543210] // [________10987654____] (((((int)in[58 + inPos]) & 255) << 4) & 1048575) | // [76543210] // [98765432____________] (((((int)in[59 + inPos]) & 255) << 12) & 1048575); out[24 + outPos] = // [76543210] // [____________76543210] (((((int)in[60 + inPos]) & 255) ) & 1048575) | // [76543210] // [____54321098________] (((((int)in[61 + inPos]) & 255) << 8) & 1048575) | // [____3210] // [9876________________] (((((int)in[62 + inPos]) & 255) << 16) & 1048575); out[25 + outPos] = // [7654____] // [________________3210] (((((int)in[62 + inPos]) & 255) >>> 4) & 1048575) | // [76543210] // [________10987654____] (((((int)in[63 + inPos]) & 255) << 4) & 1048575) | // [76543210] // [98765432____________] (((((int)in[64 + inPos]) & 255) << 12) & 1048575); out[26 + outPos] = // [76543210] // [____________76543210] (((((int)in[65 + inPos]) & 255) ) & 1048575) | // [76543210] // [____54321098________] (((((int)in[66 + inPos]) & 255) << 8) & 1048575) | // [____3210] // [9876________________] (((((int)in[67 + inPos]) & 255) << 16) & 1048575); out[27 + outPos] = // [7654____] // [________________3210] (((((int)in[67 + inPos]) & 255) >>> 4) & 1048575) | // [76543210] // [________10987654____] (((((int)in[68 + inPos]) & 255) << 4) & 1048575) | // [76543210] // [98765432____________] (((((int)in[69 + inPos]) & 255) << 12) & 1048575); out[28 + outPos] = // [76543210] // [____________76543210] (((((int)in[70 + inPos]) & 255) ) & 1048575) | // [76543210] // [____54321098________] (((((int)in[71 + inPos]) & 255) << 8) & 1048575) | // [____3210] // [9876________________] (((((int)in[72 + inPos]) & 255) << 16) & 1048575); out[29 + outPos] = // [7654____] // [________________3210] (((((int)in[72 + inPos]) & 255) >>> 4) & 1048575) | // [76543210] // [________10987654____] (((((int)in[73 + inPos]) & 255) << 4) & 1048575) | // [76543210] // [98765432____________] (((((int)in[74 + inPos]) & 255) << 12) & 1048575); out[30 + outPos] = // [76543210] // [____________76543210] (((((int)in[75 + inPos]) & 255) ) & 1048575) | // [76543210] // [____54321098________] (((((int)in[76 + inPos]) & 255) << 8) & 1048575) | // [____3210] // [9876________________] (((((int)in[77 + inPos]) & 255) << 16) & 1048575); out[31 + outPos] = // [7654____] // [________________3210] (((((int)in[77 + inPos]) & 255) >>> 4) & 1048575) | // [76543210] // [________10987654____] (((((int)in[78 + inPos]) & 255) << 4) & 1048575) | // [76543210] // [98765432____________] (((((int)in[79 + inPos]) & 255) << 12) & 1048575); } } private static final class Packer21 extends BytePacker { private Packer21() { super(21); } public final void pack8Values(final int[] in, final int inPos, final byte[] out, final int outPos) { out[ 0 + outPos] = (byte)(( // [76543210] // [_____________76543210] ((in[ 0 + inPos] & 2097151))) & 255); out[ 1 + outPos] = (byte)(( // [76543210] // [_____54321098________] ((in[ 0 + inPos] & 2097151) >>> 8)) & 255); out[ 2 + outPos] = (byte)(( // [___43210] // [09876________________] ((in[ 0 + inPos] & 2097151) >>> 16) | // [765_____] // [__________________210] ((in[ 1 + inPos] & 2097151) << 5)) & 255); out[ 3 + outPos] = (byte)(( // [76543210] // [__________09876543___] ((in[ 1 + inPos] & 2097151) >>> 3)) & 255); out[ 4 + outPos] = (byte)(( // [76543210] // [__87654321___________] ((in[ 1 + inPos] & 2097151) >>> 11)) & 255); out[ 5 + outPos] = (byte)(( // [______10] // [09___________________] ((in[ 1 + inPos] & 2097151) >>> 19) | // [765432__] // [_______________543210] ((in[ 2 + inPos] & 2097151) << 2)) & 255); out[ 6 + outPos] = (byte)(( // [76543210] // [_______32109876______] ((in[ 2 + inPos] & 2097151) >>> 6)) & 255); out[ 7 + outPos] = (byte)(( // [_6543210] // [0987654______________] ((in[ 2 + inPos] & 2097151) >>> 14) | // [7_______] // [____________________0] ((in[ 3 + inPos] & 2097151) << 7)) & 255); out[ 8 + outPos] = (byte)(( // [76543210] // [____________87654321_] ((in[ 3 + inPos] & 2097151) >>> 1)) & 255); out[ 9 + outPos] = (byte)(( // [76543210] // [____65432109_________] ((in[ 3 + inPos] & 2097151) >>> 9)) & 255); out[10 + outPos] = (byte)(( // [____3210] // [0987_________________] ((in[ 3 + inPos] & 2097151) >>> 17) | // [7654____] // [_________________3210] ((in[ 4 + inPos] & 2097151) << 4)) & 255); out[11 + outPos] = (byte)(( // [76543210] // [_________10987654____] ((in[ 4 + inPos] & 2097151) >>> 4)) & 255); out[12 + outPos] = (byte)(( // [76543210] // [_98765432____________] ((in[ 4 + inPos] & 2097151) >>> 12)) & 255); out[13 + outPos] = (byte)(( // [_______0] // [0____________________] ((in[ 4 + inPos] & 2097151) >>> 20) | // [7654321_] // [______________6543210] ((in[ 5 + inPos] & 2097151) << 1)) & 255); out[14 + outPos] = (byte)(( // [76543210] // [______43210987_______] ((in[ 5 + inPos] & 2097151) >>> 7)) & 255); out[15 + outPos] = (byte)(( // [__543210] // [098765_______________] ((in[ 5 + inPos] & 2097151) >>> 15) | // [76______] // [___________________10] ((in[ 6 + inPos] & 2097151) << 6)) & 255); out[16 + outPos] = (byte)(( // [76543210] // [___________98765432__] ((in[ 6 + inPos] & 2097151) >>> 2)) & 255); out[17 + outPos] = (byte)(( // [76543210] // [___76543210__________] ((in[ 6 + inPos] & 2097151) >>> 10)) & 255); out[18 + outPos] = (byte)(( // [_____210] // [098__________________] ((in[ 6 + inPos] & 2097151) >>> 18) | // [76543___] // [________________43210] ((in[ 7 + inPos] & 2097151) << 3)) & 255); out[19 + outPos] = (byte)(( // [76543210] // [________21098765_____] ((in[ 7 + inPos] & 2097151) >>> 5)) & 255); out[20 + outPos] = (byte)(( // [76543210] // [09876543_____________] ((in[ 7 + inPos] & 2097151) >>> 13)) & 255); } public final void pack32Values(final int[] in, final int inPos, final byte[] out, final int outPos) { out[ 0 + outPos] = (byte)(( // [76543210] // [_____________76543210] ((in[ 0 + inPos] & 2097151))) & 255); out[ 1 + outPos] = (byte)(( // [76543210] // [_____54321098________] ((in[ 0 + inPos] & 2097151) >>> 8)) & 255); out[ 2 + outPos] = (byte)(( // [___43210] // [09876________________] ((in[ 0 + inPos] & 2097151) >>> 16) | // [765_____] // [__________________210] ((in[ 1 + inPos] & 2097151) << 5)) & 255); out[ 3 + outPos] = (byte)(( // [76543210] // [__________09876543___] ((in[ 1 + inPos] & 2097151) >>> 3)) & 255); out[ 4 + outPos] = (byte)(( // [76543210] // [__87654321___________] ((in[ 1 + inPos] & 2097151) >>> 11)) & 255); out[ 5 + outPos] = (byte)(( // [______10] // [09___________________] ((in[ 1 + inPos] & 2097151) >>> 19) | // [765432__] // [_______________543210] ((in[ 2 + inPos] & 2097151) << 2)) & 255); out[ 6 + outPos] = (byte)(( // [76543210] // [_______32109876______] ((in[ 2 + inPos] & 2097151) >>> 6)) & 255); out[ 7 + outPos] = (byte)(( // [_6543210] // [0987654______________] ((in[ 2 + inPos] & 2097151) >>> 14) | // [7_______] // [____________________0] ((in[ 3 + inPos] & 2097151) << 7)) & 255); out[ 8 + outPos] = (byte)(( // [76543210] // [____________87654321_] ((in[ 3 + inPos] & 2097151) >>> 1)) & 255); out[ 9 + outPos] = (byte)(( // [76543210] // [____65432109_________] ((in[ 3 + inPos] & 2097151) >>> 9)) & 255); out[10 + outPos] = (byte)(( // [____3210] // [0987_________________] ((in[ 3 + inPos] & 2097151) >>> 17) | // [7654____] // [_________________3210] ((in[ 4 + inPos] & 2097151) << 4)) & 255); out[11 + outPos] = (byte)(( // [76543210] // [_________10987654____] ((in[ 4 + inPos] & 2097151) >>> 4)) & 255); out[12 + outPos] = (byte)(( // [76543210] // [_98765432____________] ((in[ 4 + inPos] & 2097151) >>> 12)) & 255); out[13 + outPos] = (byte)(( // [_______0] // [0____________________] ((in[ 4 + inPos] & 2097151) >>> 20) | // [7654321_] // [______________6543210] ((in[ 5 + inPos] & 2097151) << 1)) & 255); out[14 + outPos] = (byte)(( // [76543210] // [______43210987_______] ((in[ 5 + inPos] & 2097151) >>> 7)) & 255); out[15 + outPos] = (byte)(( // [__543210] // [098765_______________] ((in[ 5 + inPos] & 2097151) >>> 15) | // [76______] // [___________________10] ((in[ 6 + inPos] & 2097151) << 6)) & 255); out[16 + outPos] = (byte)(( // [76543210] // [___________98765432__] ((in[ 6 + inPos] & 2097151) >>> 2)) & 255); out[17 + outPos] = (byte)(( // [76543210] // [___76543210__________] ((in[ 6 + inPos] & 2097151) >>> 10)) & 255); out[18 + outPos] = (byte)(( // [_____210] // [098__________________] ((in[ 6 + inPos] & 2097151) >>> 18) | // [76543___] // [________________43210] ((in[ 7 + inPos] & 2097151) << 3)) & 255); out[19 + outPos] = (byte)(( // [76543210] // [________21098765_____] ((in[ 7 + inPos] & 2097151) >>> 5)) & 255); out[20 + outPos] = (byte)(( // [76543210] // [09876543_____________] ((in[ 7 + inPos] & 2097151) >>> 13)) & 255); out[21 + outPos] = (byte)(( // [76543210] // [_____________76543210] ((in[ 8 + inPos] & 2097151))) & 255); out[22 + outPos] = (byte)(( // [76543210] // [_____54321098________] ((in[ 8 + inPos] & 2097151) >>> 8)) & 255); out[23 + outPos] = (byte)(( // [___43210] // [09876________________] ((in[ 8 + inPos] & 2097151) >>> 16) | // [765_____] // [__________________210] ((in[ 9 + inPos] & 2097151) << 5)) & 255); out[24 + outPos] = (byte)(( // [76543210] // [__________09876543___] ((in[ 9 + inPos] & 2097151) >>> 3)) & 255); out[25 + outPos] = (byte)(( // [76543210] // [__87654321___________] ((in[ 9 + inPos] & 2097151) >>> 11)) & 255); out[26 + outPos] = (byte)(( // [______10] // [09___________________] ((in[ 9 + inPos] & 2097151) >>> 19) | // [765432__] // [_______________543210] ((in[10 + inPos] & 2097151) << 2)) & 255); out[27 + outPos] = (byte)(( // [76543210] // [_______32109876______] ((in[10 + inPos] & 2097151) >>> 6)) & 255); out[28 + outPos] = (byte)(( // [_6543210] // [0987654______________] ((in[10 + inPos] & 2097151) >>> 14) | // [7_______] // [____________________0] ((in[11 + inPos] & 2097151) << 7)) & 255); out[29 + outPos] = (byte)(( // [76543210] // [____________87654321_] ((in[11 + inPos] & 2097151) >>> 1)) & 255); out[30 + outPos] = (byte)(( // [76543210] // [____65432109_________] ((in[11 + inPos] & 2097151) >>> 9)) & 255); out[31 + outPos] = (byte)(( // [____3210] // [0987_________________] ((in[11 + inPos] & 2097151) >>> 17) | // [7654____] // [_________________3210] ((in[12 + inPos] & 2097151) << 4)) & 255); out[32 + outPos] = (byte)(( // [76543210] // [_________10987654____] ((in[12 + inPos] & 2097151) >>> 4)) & 255); out[33 + outPos] = (byte)(( // [76543210] // [_98765432____________] ((in[12 + inPos] & 2097151) >>> 12)) & 255); out[34 + outPos] = (byte)(( // [_______0] // [0____________________] ((in[12 + inPos] & 2097151) >>> 20) | // [7654321_] // [______________6543210] ((in[13 + inPos] & 2097151) << 1)) & 255); out[35 + outPos] = (byte)(( // [76543210] // [______43210987_______] ((in[13 + inPos] & 2097151) >>> 7)) & 255); out[36 + outPos] = (byte)(( // [__543210] // [098765_______________] ((in[13 + inPos] & 2097151) >>> 15) | // [76______] // [___________________10] ((in[14 + inPos] & 2097151) << 6)) & 255); out[37 + outPos] = (byte)(( // [76543210] // [___________98765432__] ((in[14 + inPos] & 2097151) >>> 2)) & 255); out[38 + outPos] = (byte)(( // [76543210] // [___76543210__________] ((in[14 + inPos] & 2097151) >>> 10)) & 255); out[39 + outPos] = (byte)(( // [_____210] // [098__________________] ((in[14 + inPos] & 2097151) >>> 18) | // [76543___] // [________________43210] ((in[15 + inPos] & 2097151) << 3)) & 255); out[40 + outPos] = (byte)(( // [76543210] // [________21098765_____] ((in[15 + inPos] & 2097151) >>> 5)) & 255); out[41 + outPos] = (byte)(( // [76543210] // [09876543_____________] ((in[15 + inPos] & 2097151) >>> 13)) & 255); out[42 + outPos] = (byte)(( // [76543210] // [_____________76543210] ((in[16 + inPos] & 2097151))) & 255); out[43 + outPos] = (byte)(( // [76543210] // [_____54321098________] ((in[16 + inPos] & 2097151) >>> 8)) & 255); out[44 + outPos] = (byte)(( // [___43210] // [09876________________] ((in[16 + inPos] & 2097151) >>> 16) | // [765_____] // [__________________210] ((in[17 + inPos] & 2097151) << 5)) & 255); out[45 + outPos] = (byte)(( // [76543210] // [__________09876543___] ((in[17 + inPos] & 2097151) >>> 3)) & 255); out[46 + outPos] = (byte)(( // [76543210] // [__87654321___________] ((in[17 + inPos] & 2097151) >>> 11)) & 255); out[47 + outPos] = (byte)(( // [______10] // [09___________________] ((in[17 + inPos] & 2097151) >>> 19) | // [765432__] // [_______________543210] ((in[18 + inPos] & 2097151) << 2)) & 255); out[48 + outPos] = (byte)(( // [76543210] // [_______32109876______] ((in[18 + inPos] & 2097151) >>> 6)) & 255); out[49 + outPos] = (byte)(( // [_6543210] // [0987654______________] ((in[18 + inPos] & 2097151) >>> 14) | // [7_______] // [____________________0] ((in[19 + inPos] & 2097151) << 7)) & 255); out[50 + outPos] = (byte)(( // [76543210] // [____________87654321_] ((in[19 + inPos] & 2097151) >>> 1)) & 255); out[51 + outPos] = (byte)(( // [76543210] // [____65432109_________] ((in[19 + inPos] & 2097151) >>> 9)) & 255); out[52 + outPos] = (byte)(( // [____3210] // [0987_________________] ((in[19 + inPos] & 2097151) >>> 17) | // [7654____] // [_________________3210] ((in[20 + inPos] & 2097151) << 4)) & 255); out[53 + outPos] = (byte)(( // [76543210] // [_________10987654____] ((in[20 + inPos] & 2097151) >>> 4)) & 255); out[54 + outPos] = (byte)(( // [76543210] // [_98765432____________] ((in[20 + inPos] & 2097151) >>> 12)) & 255); out[55 + outPos] = (byte)(( // [_______0] // [0____________________] ((in[20 + inPos] & 2097151) >>> 20) | // [7654321_] // [______________6543210] ((in[21 + inPos] & 2097151) << 1)) & 255); out[56 + outPos] = (byte)(( // [76543210] // [______43210987_______] ((in[21 + inPos] & 2097151) >>> 7)) & 255); out[57 + outPos] = (byte)(( // [__543210] // [098765_______________] ((in[21 + inPos] & 2097151) >>> 15) | // [76______] // [___________________10] ((in[22 + inPos] & 2097151) << 6)) & 255); out[58 + outPos] = (byte)(( // [76543210] // [___________98765432__] ((in[22 + inPos] & 2097151) >>> 2)) & 255); out[59 + outPos] = (byte)(( // [76543210] // [___76543210__________] ((in[22 + inPos] & 2097151) >>> 10)) & 255); out[60 + outPos] = (byte)(( // [_____210] // [098__________________] ((in[22 + inPos] & 2097151) >>> 18) | // [76543___] // [________________43210] ((in[23 + inPos] & 2097151) << 3)) & 255); out[61 + outPos] = (byte)(( // [76543210] // [________21098765_____] ((in[23 + inPos] & 2097151) >>> 5)) & 255); out[62 + outPos] = (byte)(( // [76543210] // [09876543_____________] ((in[23 + inPos] & 2097151) >>> 13)) & 255); out[63 + outPos] = (byte)(( // [76543210] // [_____________76543210] ((in[24 + inPos] & 2097151))) & 255); out[64 + outPos] = (byte)(( // [76543210] // [_____54321098________] ((in[24 + inPos] & 2097151) >>> 8)) & 255); out[65 + outPos] = (byte)(( // [___43210] // [09876________________] ((in[24 + inPos] & 2097151) >>> 16) | // [765_____] // [__________________210] ((in[25 + inPos] & 2097151) << 5)) & 255); out[66 + outPos] = (byte)(( // [76543210] // [__________09876543___] ((in[25 + inPos] & 2097151) >>> 3)) & 255); out[67 + outPos] = (byte)(( // [76543210] // [__87654321___________] ((in[25 + inPos] & 2097151) >>> 11)) & 255); out[68 + outPos] = (byte)(( // [______10] // [09___________________] ((in[25 + inPos] & 2097151) >>> 19) | // [765432__] // [_______________543210] ((in[26 + inPos] & 2097151) << 2)) & 255); out[69 + outPos] = (byte)(( // [76543210] // [_______32109876______] ((in[26 + inPos] & 2097151) >>> 6)) & 255); out[70 + outPos] = (byte)(( // [_6543210] // [0987654______________] ((in[26 + inPos] & 2097151) >>> 14) | // [7_______] // [____________________0] ((in[27 + inPos] & 2097151) << 7)) & 255); out[71 + outPos] = (byte)(( // [76543210] // [____________87654321_] ((in[27 + inPos] & 2097151) >>> 1)) & 255); out[72 + outPos] = (byte)(( // [76543210] // [____65432109_________] ((in[27 + inPos] & 2097151) >>> 9)) & 255); out[73 + outPos] = (byte)(( // [____3210] // [0987_________________] ((in[27 + inPos] & 2097151) >>> 17) | // [7654____] // [_________________3210] ((in[28 + inPos] & 2097151) << 4)) & 255); out[74 + outPos] = (byte)(( // [76543210] // [_________10987654____] ((in[28 + inPos] & 2097151) >>> 4)) & 255); out[75 + outPos] = (byte)(( // [76543210] // [_98765432____________] ((in[28 + inPos] & 2097151) >>> 12)) & 255); out[76 + outPos] = (byte)(( // [_______0] // [0____________________] ((in[28 + inPos] & 2097151) >>> 20) | // [7654321_] // [______________6543210] ((in[29 + inPos] & 2097151) << 1)) & 255); out[77 + outPos] = (byte)(( // [76543210] // [______43210987_______] ((in[29 + inPos] & 2097151) >>> 7)) & 255); out[78 + outPos] = (byte)(( // [__543210] // [098765_______________] ((in[29 + inPos] & 2097151) >>> 15) | // [76______] // [___________________10] ((in[30 + inPos] & 2097151) << 6)) & 255); out[79 + outPos] = (byte)(( // [76543210] // [___________98765432__] ((in[30 + inPos] & 2097151) >>> 2)) & 255); out[80 + outPos] = (byte)(( // [76543210] // [___76543210__________] ((in[30 + inPos] & 2097151) >>> 10)) & 255); out[81 + outPos] = (byte)(( // [_____210] // [098__________________] ((in[30 + inPos] & 2097151) >>> 18) | // [76543___] // [________________43210] ((in[31 + inPos] & 2097151) << 3)) & 255); out[82 + outPos] = (byte)(( // [76543210] // [________21098765_____] ((in[31 + inPos] & 2097151) >>> 5)) & 255); out[83 + outPos] = (byte)(( // [76543210] // [09876543_____________] ((in[31 + inPos] & 2097151) >>> 13)) & 255); } public final void unpack8Values(final byte[] in, final int inPos, final int[] out, final int outPos) { out[ 0 + outPos] = // [76543210] // [_____________76543210] (((((int)in[ 0 + inPos]) & 255) ) & 2097151) | // [76543210] // [_____54321098________] (((((int)in[ 1 + inPos]) & 255) << 8) & 2097151) | // [___43210] // [09876________________] (((((int)in[ 2 + inPos]) & 255) << 16) & 2097151); out[ 1 + outPos] = // [765_____] // [__________________210] (((((int)in[ 2 + inPos]) & 255) >>> 5) & 2097151) | // [76543210] // [__________09876543___] (((((int)in[ 3 + inPos]) & 255) << 3) & 2097151) | // [76543210] // [__87654321___________] (((((int)in[ 4 + inPos]) & 255) << 11) & 2097151) | // [______10] // [09___________________] (((((int)in[ 5 + inPos]) & 255) << 19) & 2097151); out[ 2 + outPos] = // [765432__] // [_______________543210] (((((int)in[ 5 + inPos]) & 255) >>> 2) & 2097151) | // [76543210] // [_______32109876______] (((((int)in[ 6 + inPos]) & 255) << 6) & 2097151) | // [_6543210] // [0987654______________] (((((int)in[ 7 + inPos]) & 255) << 14) & 2097151); out[ 3 + outPos] = // [7_______] // [____________________0] (((((int)in[ 7 + inPos]) & 255) >>> 7) & 2097151) | // [76543210] // [____________87654321_] (((((int)in[ 8 + inPos]) & 255) << 1) & 2097151) | // [76543210] // [____65432109_________] (((((int)in[ 9 + inPos]) & 255) << 9) & 2097151) | // [____3210] // [0987_________________] (((((int)in[10 + inPos]) & 255) << 17) & 2097151); out[ 4 + outPos] = // [7654____] // [_________________3210] (((((int)in[10 + inPos]) & 255) >>> 4) & 2097151) | // [76543210] // [_________10987654____] (((((int)in[11 + inPos]) & 255) << 4) & 2097151) | // [76543210] // [_98765432____________] (((((int)in[12 + inPos]) & 255) << 12) & 2097151) | // [_______0] // [0____________________] (((((int)in[13 + inPos]) & 255) << 20) & 2097151); out[ 5 + outPos] = // [7654321_] // [______________6543210] (((((int)in[13 + inPos]) & 255) >>> 1) & 2097151) | // [76543210] // [______43210987_______] (((((int)in[14 + inPos]) & 255) << 7) & 2097151) | // [__543210] // [098765_______________] (((((int)in[15 + inPos]) & 255) << 15) & 2097151); out[ 6 + outPos] = // [76______] // [___________________10] (((((int)in[15 + inPos]) & 255) >>> 6) & 2097151) | // [76543210] // [___________98765432__] (((((int)in[16 + inPos]) & 255) << 2) & 2097151) | // [76543210] // [___76543210__________] (((((int)in[17 + inPos]) & 255) << 10) & 2097151) | // [_____210] // [098__________________] (((((int)in[18 + inPos]) & 255) << 18) & 2097151); out[ 7 + outPos] = // [76543___] // [________________43210] (((((int)in[18 + inPos]) & 255) >>> 3) & 2097151) | // [76543210] // [________21098765_____] (((((int)in[19 + inPos]) & 255) << 5) & 2097151) | // [76543210] // [09876543_____________] (((((int)in[20 + inPos]) & 255) << 13) & 2097151); } public final void unpack32Values(final byte[] in, final int inPos, final int[] out, final int outPos) { out[ 0 + outPos] = // [76543210] // [_____________76543210] (((((int)in[ 0 + inPos]) & 255) ) & 2097151) | // [76543210] // [_____54321098________] (((((int)in[ 1 + inPos]) & 255) << 8) & 2097151) | // [___43210] // [09876________________] (((((int)in[ 2 + inPos]) & 255) << 16) & 2097151); out[ 1 + outPos] = // [765_____] // [__________________210] (((((int)in[ 2 + inPos]) & 255) >>> 5) & 2097151) | // [76543210] // [__________09876543___] (((((int)in[ 3 + inPos]) & 255) << 3) & 2097151) | // [76543210] // [__87654321___________] (((((int)in[ 4 + inPos]) & 255) << 11) & 2097151) | // [______10] // [09___________________] (((((int)in[ 5 + inPos]) & 255) << 19) & 2097151); out[ 2 + outPos] = // [765432__] // [_______________543210] (((((int)in[ 5 + inPos]) & 255) >>> 2) & 2097151) | // [76543210] // [_______32109876______] (((((int)in[ 6 + inPos]) & 255) << 6) & 2097151) | // [_6543210] // [0987654______________] (((((int)in[ 7 + inPos]) & 255) << 14) & 2097151); out[ 3 + outPos] = // [7_______] // [____________________0] (((((int)in[ 7 + inPos]) & 255) >>> 7) & 2097151) | // [76543210] // [____________87654321_] (((((int)in[ 8 + inPos]) & 255) << 1) & 2097151) | // [76543210] // [____65432109_________] (((((int)in[ 9 + inPos]) & 255) << 9) & 2097151) | // [____3210] // [0987_________________] (((((int)in[10 + inPos]) & 255) << 17) & 2097151); out[ 4 + outPos] = // [7654____] // [_________________3210] (((((int)in[10 + inPos]) & 255) >>> 4) & 2097151) | // [76543210] // [_________10987654____] (((((int)in[11 + inPos]) & 255) << 4) & 2097151) | // [76543210] // [_98765432____________] (((((int)in[12 + inPos]) & 255) << 12) & 2097151) | // [_______0] // [0____________________] (((((int)in[13 + inPos]) & 255) << 20) & 2097151); out[ 5 + outPos] = // [7654321_] // [______________6543210] (((((int)in[13 + inPos]) & 255) >>> 1) & 2097151) | // [76543210] // [______43210987_______] (((((int)in[14 + inPos]) & 255) << 7) & 2097151) | // [__543210] // [098765_______________] (((((int)in[15 + inPos]) & 255) << 15) & 2097151); out[ 6 + outPos] = // [76______] // [___________________10] (((((int)in[15 + inPos]) & 255) >>> 6) & 2097151) | // [76543210] // [___________98765432__] (((((int)in[16 + inPos]) & 255) << 2) & 2097151) | // [76543210] // [___76543210__________] (((((int)in[17 + inPos]) & 255) << 10) & 2097151) | // [_____210] // [098__________________] (((((int)in[18 + inPos]) & 255) << 18) & 2097151); out[ 7 + outPos] = // [76543___] // [________________43210] (((((int)in[18 + inPos]) & 255) >>> 3) & 2097151) | // [76543210] // [________21098765_____] (((((int)in[19 + inPos]) & 255) << 5) & 2097151) | // [76543210] // [09876543_____________] (((((int)in[20 + inPos]) & 255) << 13) & 2097151); out[ 8 + outPos] = // [76543210] // [_____________76543210] (((((int)in[21 + inPos]) & 255) ) & 2097151) | // [76543210] // [_____54321098________] (((((int)in[22 + inPos]) & 255) << 8) & 2097151) | // [___43210] // [09876________________] (((((int)in[23 + inPos]) & 255) << 16) & 2097151); out[ 9 + outPos] = // [765_____] // [__________________210] (((((int)in[23 + inPos]) & 255) >>> 5) & 2097151) | // [76543210] // [__________09876543___] (((((int)in[24 + inPos]) & 255) << 3) & 2097151) | // [76543210] // [__87654321___________] (((((int)in[25 + inPos]) & 255) << 11) & 2097151) | // [______10] // [09___________________] (((((int)in[26 + inPos]) & 255) << 19) & 2097151); out[10 + outPos] = // [765432__] // [_______________543210] (((((int)in[26 + inPos]) & 255) >>> 2) & 2097151) | // [76543210] // [_______32109876______] (((((int)in[27 + inPos]) & 255) << 6) & 2097151) | // [_6543210] // [0987654______________] (((((int)in[28 + inPos]) & 255) << 14) & 2097151); out[11 + outPos] = // [7_______] // [____________________0] (((((int)in[28 + inPos]) & 255) >>> 7) & 2097151) | // [76543210] // [____________87654321_] (((((int)in[29 + inPos]) & 255) << 1) & 2097151) | // [76543210] // [____65432109_________] (((((int)in[30 + inPos]) & 255) << 9) & 2097151) | // [____3210] // [0987_________________] (((((int)in[31 + inPos]) & 255) << 17) & 2097151); out[12 + outPos] = // [7654____] // [_________________3210] (((((int)in[31 + inPos]) & 255) >>> 4) & 2097151) | // [76543210] // [_________10987654____] (((((int)in[32 + inPos]) & 255) << 4) & 2097151) | // [76543210] // [_98765432____________] (((((int)in[33 + inPos]) & 255) << 12) & 2097151) | // [_______0] // [0____________________] (((((int)in[34 + inPos]) & 255) << 20) & 2097151); out[13 + outPos] = // [7654321_] // [______________6543210] (((((int)in[34 + inPos]) & 255) >>> 1) & 2097151) | // [76543210] // [______43210987_______] (((((int)in[35 + inPos]) & 255) << 7) & 2097151) | // [__543210] // [098765_______________] (((((int)in[36 + inPos]) & 255) << 15) & 2097151); out[14 + outPos] = // [76______] // [___________________10] (((((int)in[36 + inPos]) & 255) >>> 6) & 2097151) | // [76543210] // [___________98765432__] (((((int)in[37 + inPos]) & 255) << 2) & 2097151) | // [76543210] // [___76543210__________] (((((int)in[38 + inPos]) & 255) << 10) & 2097151) | // [_____210] // [098__________________] (((((int)in[39 + inPos]) & 255) << 18) & 2097151); out[15 + outPos] = // [76543___] // [________________43210] (((((int)in[39 + inPos]) & 255) >>> 3) & 2097151) | // [76543210] // [________21098765_____] (((((int)in[40 + inPos]) & 255) << 5) & 2097151) | // [76543210] // [09876543_____________] (((((int)in[41 + inPos]) & 255) << 13) & 2097151); out[16 + outPos] = // [76543210] // [_____________76543210] (((((int)in[42 + inPos]) & 255) ) & 2097151) | // [76543210] // [_____54321098________] (((((int)in[43 + inPos]) & 255) << 8) & 2097151) | // [___43210] // [09876________________] (((((int)in[44 + inPos]) & 255) << 16) & 2097151); out[17 + outPos] = // [765_____] // [__________________210] (((((int)in[44 + inPos]) & 255) >>> 5) & 2097151) | // [76543210] // [__________09876543___] (((((int)in[45 + inPos]) & 255) << 3) & 2097151) | // [76543210] // [__87654321___________] (((((int)in[46 + inPos]) & 255) << 11) & 2097151) | // [______10] // [09___________________] (((((int)in[47 + inPos]) & 255) << 19) & 2097151); out[18 + outPos] = // [765432__] // [_______________543210] (((((int)in[47 + inPos]) & 255) >>> 2) & 2097151) | // [76543210] // [_______32109876______] (((((int)in[48 + inPos]) & 255) << 6) & 2097151) | // [_6543210] // [0987654______________] (((((int)in[49 + inPos]) & 255) << 14) & 2097151); out[19 + outPos] = // [7_______] // [____________________0] (((((int)in[49 + inPos]) & 255) >>> 7) & 2097151) | // [76543210] // [____________87654321_] (((((int)in[50 + inPos]) & 255) << 1) & 2097151) | // [76543210] // [____65432109_________] (((((int)in[51 + inPos]) & 255) << 9) & 2097151) | // [____3210] // [0987_________________] (((((int)in[52 + inPos]) & 255) << 17) & 2097151); out[20 + outPos] = // [7654____] // [_________________3210] (((((int)in[52 + inPos]) & 255) >>> 4) & 2097151) | // [76543210] // [_________10987654____] (((((int)in[53 + inPos]) & 255) << 4) & 2097151) | // [76543210] // [_98765432____________] (((((int)in[54 + inPos]) & 255) << 12) & 2097151) | // [_______0] // [0____________________] (((((int)in[55 + inPos]) & 255) << 20) & 2097151); out[21 + outPos] = // [7654321_] // [______________6543210] (((((int)in[55 + inPos]) & 255) >>> 1) & 2097151) | // [76543210] // [______43210987_______] (((((int)in[56 + inPos]) & 255) << 7) & 2097151) | // [__543210] // [098765_______________] (((((int)in[57 + inPos]) & 255) << 15) & 2097151); out[22 + outPos] = // [76______] // [___________________10] (((((int)in[57 + inPos]) & 255) >>> 6) & 2097151) | // [76543210] // [___________98765432__] (((((int)in[58 + inPos]) & 255) << 2) & 2097151) | // [76543210] // [___76543210__________] (((((int)in[59 + inPos]) & 255) << 10) & 2097151) | // [_____210] // [098__________________] (((((int)in[60 + inPos]) & 255) << 18) & 2097151); out[23 + outPos] = // [76543___] // [________________43210] (((((int)in[60 + inPos]) & 255) >>> 3) & 2097151) | // [76543210] // [________21098765_____] (((((int)in[61 + inPos]) & 255) << 5) & 2097151) | // [76543210] // [09876543_____________] (((((int)in[62 + inPos]) & 255) << 13) & 2097151); out[24 + outPos] = // [76543210] // [_____________76543210] (((((int)in[63 + inPos]) & 255) ) & 2097151) | // [76543210] // [_____54321098________] (((((int)in[64 + inPos]) & 255) << 8) & 2097151) | // [___43210] // [09876________________] (((((int)in[65 + inPos]) & 255) << 16) & 2097151); out[25 + outPos] = // [765_____] // [__________________210] (((((int)in[65 + inPos]) & 255) >>> 5) & 2097151) | // [76543210] // [__________09876543___] (((((int)in[66 + inPos]) & 255) << 3) & 2097151) | // [76543210] // [__87654321___________] (((((int)in[67 + inPos]) & 255) << 11) & 2097151) | // [______10] // [09___________________] (((((int)in[68 + inPos]) & 255) << 19) & 2097151); out[26 + outPos] = // [765432__] // [_______________543210] (((((int)in[68 + inPos]) & 255) >>> 2) & 2097151) | // [76543210] // [_______32109876______] (((((int)in[69 + inPos]) & 255) << 6) & 2097151) | // [_6543210] // [0987654______________] (((((int)in[70 + inPos]) & 255) << 14) & 2097151); out[27 + outPos] = // [7_______] // [____________________0] (((((int)in[70 + inPos]) & 255) >>> 7) & 2097151) | // [76543210] // [____________87654321_] (((((int)in[71 + inPos]) & 255) << 1) & 2097151) | // [76543210] // [____65432109_________] (((((int)in[72 + inPos]) & 255) << 9) & 2097151) | // [____3210] // [0987_________________] (((((int)in[73 + inPos]) & 255) << 17) & 2097151); out[28 + outPos] = // [7654____] // [_________________3210] (((((int)in[73 + inPos]) & 255) >>> 4) & 2097151) | // [76543210] // [_________10987654____] (((((int)in[74 + inPos]) & 255) << 4) & 2097151) | // [76543210] // [_98765432____________] (((((int)in[75 + inPos]) & 255) << 12) & 2097151) | // [_______0] // [0____________________] (((((int)in[76 + inPos]) & 255) << 20) & 2097151); out[29 + outPos] = // [7654321_] // [______________6543210] (((((int)in[76 + inPos]) & 255) >>> 1) & 2097151) | // [76543210] // [______43210987_______] (((((int)in[77 + inPos]) & 255) << 7) & 2097151) | // [__543210] // [098765_______________] (((((int)in[78 + inPos]) & 255) << 15) & 2097151); out[30 + outPos] = // [76______] // [___________________10] (((((int)in[78 + inPos]) & 255) >>> 6) & 2097151) | // [76543210] // [___________98765432__] (((((int)in[79 + inPos]) & 255) << 2) & 2097151) | // [76543210] // [___76543210__________] (((((int)in[80 + inPos]) & 255) << 10) & 2097151) | // [_____210] // [098__________________] (((((int)in[81 + inPos]) & 255) << 18) & 2097151); out[31 + outPos] = // [76543___] // [________________43210] (((((int)in[81 + inPos]) & 255) >>> 3) & 2097151) | // [76543210] // [________21098765_____] (((((int)in[82 + inPos]) & 255) << 5) & 2097151) | // [76543210] // [09876543_____________] (((((int)in[83 + inPos]) & 255) << 13) & 2097151); } } private static final class Packer22 extends BytePacker { private Packer22() { super(22); } public final void pack8Values(final int[] in, final int inPos, final byte[] out, final int outPos) { out[ 0 + outPos] = (byte)(( // [76543210] // [______________76543210] ((in[ 0 + inPos] & 4194303))) & 255); out[ 1 + outPos] = (byte)(( // [76543210] // [______54321098________] ((in[ 0 + inPos] & 4194303) >>> 8)) & 255); out[ 2 + outPos] = (byte)(( // [__543210] // [109876________________] ((in[ 0 + inPos] & 4194303) >>> 16) | // [76______] // [____________________10] ((in[ 1 + inPos] & 4194303) << 6)) & 255); out[ 3 + outPos] = (byte)(( // [76543210] // [____________98765432__] ((in[ 1 + inPos] & 4194303) >>> 2)) & 255); out[ 4 + outPos] = (byte)(( // [76543210] // [____76543210__________] ((in[ 1 + inPos] & 4194303) >>> 10)) & 255); out[ 5 + outPos] = (byte)(( // [____3210] // [1098__________________] ((in[ 1 + inPos] & 4194303) >>> 18) | // [7654____] // [__________________3210] ((in[ 2 + inPos] & 4194303) << 4)) & 255); out[ 6 + outPos] = (byte)(( // [76543210] // [__________10987654____] ((in[ 2 + inPos] & 4194303) >>> 4)) & 255); out[ 7 + outPos] = (byte)(( // [76543210] // [__98765432____________] ((in[ 2 + inPos] & 4194303) >>> 12)) & 255); out[ 8 + outPos] = (byte)(( // [______10] // [10____________________] ((in[ 2 + inPos] & 4194303) >>> 20) | // [765432__] // [________________543210] ((in[ 3 + inPos] & 4194303) << 2)) & 255); out[ 9 + outPos] = (byte)(( // [76543210] // [________32109876______] ((in[ 3 + inPos] & 4194303) >>> 6)) & 255); out[10 + outPos] = (byte)(( // [76543210] // [10987654______________] ((in[ 3 + inPos] & 4194303) >>> 14)) & 255); out[11 + outPos] = (byte)(( // [76543210] // [______________76543210] ((in[ 4 + inPos] & 4194303))) & 255); out[12 + outPos] = (byte)(( // [76543210] // [______54321098________] ((in[ 4 + inPos] & 4194303) >>> 8)) & 255); out[13 + outPos] = (byte)(( // [__543210] // [109876________________] ((in[ 4 + inPos] & 4194303) >>> 16) | // [76______] // [____________________10] ((in[ 5 + inPos] & 4194303) << 6)) & 255); out[14 + outPos] = (byte)(( // [76543210] // [____________98765432__] ((in[ 5 + inPos] & 4194303) >>> 2)) & 255); out[15 + outPos] = (byte)(( // [76543210] // [____76543210__________] ((in[ 5 + inPos] & 4194303) >>> 10)) & 255); out[16 + outPos] = (byte)(( // [____3210] // [1098__________________] ((in[ 5 + inPos] & 4194303) >>> 18) | // [7654____] // [__________________3210] ((in[ 6 + inPos] & 4194303) << 4)) & 255); out[17 + outPos] = (byte)(( // [76543210] // [__________10987654____] ((in[ 6 + inPos] & 4194303) >>> 4)) & 255); out[18 + outPos] = (byte)(( // [76543210] // [__98765432____________] ((in[ 6 + inPos] & 4194303) >>> 12)) & 255); out[19 + outPos] = (byte)(( // [______10] // [10____________________] ((in[ 6 + inPos] & 4194303) >>> 20) | // [765432__] // [________________543210] ((in[ 7 + inPos] & 4194303) << 2)) & 255); out[20 + outPos] = (byte)(( // [76543210] // [________32109876______] ((in[ 7 + inPos] & 4194303) >>> 6)) & 255); out[21 + outPos] = (byte)(( // [76543210] // [10987654______________] ((in[ 7 + inPos] & 4194303) >>> 14)) & 255); } public final void pack32Values(final int[] in, final int inPos, final byte[] out, final int outPos) { out[ 0 + outPos] = (byte)(( // [76543210] // [______________76543210] ((in[ 0 + inPos] & 4194303))) & 255); out[ 1 + outPos] = (byte)(( // [76543210] // [______54321098________] ((in[ 0 + inPos] & 4194303) >>> 8)) & 255); out[ 2 + outPos] = (byte)(( // [__543210] // [109876________________] ((in[ 0 + inPos] & 4194303) >>> 16) | // [76______] // [____________________10] ((in[ 1 + inPos] & 4194303) << 6)) & 255); out[ 3 + outPos] = (byte)(( // [76543210] // [____________98765432__] ((in[ 1 + inPos] & 4194303) >>> 2)) & 255); out[ 4 + outPos] = (byte)(( // [76543210] // [____76543210__________] ((in[ 1 + inPos] & 4194303) >>> 10)) & 255); out[ 5 + outPos] = (byte)(( // [____3210] // [1098__________________] ((in[ 1 + inPos] & 4194303) >>> 18) | // [7654____] // [__________________3210] ((in[ 2 + inPos] & 4194303) << 4)) & 255); out[ 6 + outPos] = (byte)(( // [76543210] // [__________10987654____] ((in[ 2 + inPos] & 4194303) >>> 4)) & 255); out[ 7 + outPos] = (byte)(( // [76543210] // [__98765432____________] ((in[ 2 + inPos] & 4194303) >>> 12)) & 255); out[ 8 + outPos] = (byte)(( // [______10] // [10____________________] ((in[ 2 + inPos] & 4194303) >>> 20) | // [765432__] // [________________543210] ((in[ 3 + inPos] & 4194303) << 2)) & 255); out[ 9 + outPos] = (byte)(( // [76543210] // [________32109876______] ((in[ 3 + inPos] & 4194303) >>> 6)) & 255); out[10 + outPos] = (byte)(( // [76543210] // [10987654______________] ((in[ 3 + inPos] & 4194303) >>> 14)) & 255); out[11 + outPos] = (byte)(( // [76543210] // [______________76543210] ((in[ 4 + inPos] & 4194303))) & 255); out[12 + outPos] = (byte)(( // [76543210] // [______54321098________] ((in[ 4 + inPos] & 4194303) >>> 8)) & 255); out[13 + outPos] = (byte)(( // [__543210] // [109876________________] ((in[ 4 + inPos] & 4194303) >>> 16) | // [76______] // [____________________10] ((in[ 5 + inPos] & 4194303) << 6)) & 255); out[14 + outPos] = (byte)(( // [76543210] // [____________98765432__] ((in[ 5 + inPos] & 4194303) >>> 2)) & 255); out[15 + outPos] = (byte)(( // [76543210] // [____76543210__________] ((in[ 5 + inPos] & 4194303) >>> 10)) & 255); out[16 + outPos] = (byte)(( // [____3210] // [1098__________________] ((in[ 5 + inPos] & 4194303) >>> 18) | // [7654____] // [__________________3210] ((in[ 6 + inPos] & 4194303) << 4)) & 255); out[17 + outPos] = (byte)(( // [76543210] // [__________10987654____] ((in[ 6 + inPos] & 4194303) >>> 4)) & 255); out[18 + outPos] = (byte)(( // [76543210] // [__98765432____________] ((in[ 6 + inPos] & 4194303) >>> 12)) & 255); out[19 + outPos] = (byte)(( // [______10] // [10____________________] ((in[ 6 + inPos] & 4194303) >>> 20) | // [765432__] // [________________543210] ((in[ 7 + inPos] & 4194303) << 2)) & 255); out[20 + outPos] = (byte)(( // [76543210] // [________32109876______] ((in[ 7 + inPos] & 4194303) >>> 6)) & 255); out[21 + outPos] = (byte)(( // [76543210] // [10987654______________] ((in[ 7 + inPos] & 4194303) >>> 14)) & 255); out[22 + outPos] = (byte)(( // [76543210] // [______________76543210] ((in[ 8 + inPos] & 4194303))) & 255); out[23 + outPos] = (byte)(( // [76543210] // [______54321098________] ((in[ 8 + inPos] & 4194303) >>> 8)) & 255); out[24 + outPos] = (byte)(( // [__543210] // [109876________________] ((in[ 8 + inPos] & 4194303) >>> 16) | // [76______] // [____________________10] ((in[ 9 + inPos] & 4194303) << 6)) & 255); out[25 + outPos] = (byte)(( // [76543210] // [____________98765432__] ((in[ 9 + inPos] & 4194303) >>> 2)) & 255); out[26 + outPos] = (byte)(( // [76543210] // [____76543210__________] ((in[ 9 + inPos] & 4194303) >>> 10)) & 255); out[27 + outPos] = (byte)(( // [____3210] // [1098__________________] ((in[ 9 + inPos] & 4194303) >>> 18) | // [7654____] // [__________________3210] ((in[10 + inPos] & 4194303) << 4)) & 255); out[28 + outPos] = (byte)(( // [76543210] // [__________10987654____] ((in[10 + inPos] & 4194303) >>> 4)) & 255); out[29 + outPos] = (byte)(( // [76543210] // [__98765432____________] ((in[10 + inPos] & 4194303) >>> 12)) & 255); out[30 + outPos] = (byte)(( // [______10] // [10____________________] ((in[10 + inPos] & 4194303) >>> 20) | // [765432__] // [________________543210] ((in[11 + inPos] & 4194303) << 2)) & 255); out[31 + outPos] = (byte)(( // [76543210] // [________32109876______] ((in[11 + inPos] & 4194303) >>> 6)) & 255); out[32 + outPos] = (byte)(( // [76543210] // [10987654______________] ((in[11 + inPos] & 4194303) >>> 14)) & 255); out[33 + outPos] = (byte)(( // [76543210] // [______________76543210] ((in[12 + inPos] & 4194303))) & 255); out[34 + outPos] = (byte)(( // [76543210] // [______54321098________] ((in[12 + inPos] & 4194303) >>> 8)) & 255); out[35 + outPos] = (byte)(( // [__543210] // [109876________________] ((in[12 + inPos] & 4194303) >>> 16) | // [76______] // [____________________10] ((in[13 + inPos] & 4194303) << 6)) & 255); out[36 + outPos] = (byte)(( // [76543210] // [____________98765432__] ((in[13 + inPos] & 4194303) >>> 2)) & 255); out[37 + outPos] = (byte)(( // [76543210] // [____76543210__________] ((in[13 + inPos] & 4194303) >>> 10)) & 255); out[38 + outPos] = (byte)(( // [____3210] // [1098__________________] ((in[13 + inPos] & 4194303) >>> 18) | // [7654____] // [__________________3210] ((in[14 + inPos] & 4194303) << 4)) & 255); out[39 + outPos] = (byte)(( // [76543210] // [__________10987654____] ((in[14 + inPos] & 4194303) >>> 4)) & 255); out[40 + outPos] = (byte)(( // [76543210] // [__98765432____________] ((in[14 + inPos] & 4194303) >>> 12)) & 255); out[41 + outPos] = (byte)(( // [______10] // [10____________________] ((in[14 + inPos] & 4194303) >>> 20) | // [765432__] // [________________543210] ((in[15 + inPos] & 4194303) << 2)) & 255); out[42 + outPos] = (byte)(( // [76543210] // [________32109876______] ((in[15 + inPos] & 4194303) >>> 6)) & 255); out[43 + outPos] = (byte)(( // [76543210] // [10987654______________] ((in[15 + inPos] & 4194303) >>> 14)) & 255); out[44 + outPos] = (byte)(( // [76543210] // [______________76543210] ((in[16 + inPos] & 4194303))) & 255); out[45 + outPos] = (byte)(( // [76543210] // [______54321098________] ((in[16 + inPos] & 4194303) >>> 8)) & 255); out[46 + outPos] = (byte)(( // [__543210] // [109876________________] ((in[16 + inPos] & 4194303) >>> 16) | // [76______] // [____________________10] ((in[17 + inPos] & 4194303) << 6)) & 255); out[47 + outPos] = (byte)(( // [76543210] // [____________98765432__] ((in[17 + inPos] & 4194303) >>> 2)) & 255); out[48 + outPos] = (byte)(( // [76543210] // [____76543210__________] ((in[17 + inPos] & 4194303) >>> 10)) & 255); out[49 + outPos] = (byte)(( // [____3210] // [1098__________________] ((in[17 + inPos] & 4194303) >>> 18) | // [7654____] // [__________________3210] ((in[18 + inPos] & 4194303) << 4)) & 255); out[50 + outPos] = (byte)(( // [76543210] // [__________10987654____] ((in[18 + inPos] & 4194303) >>> 4)) & 255); out[51 + outPos] = (byte)(( // [76543210] // [__98765432____________] ((in[18 + inPos] & 4194303) >>> 12)) & 255); out[52 + outPos] = (byte)(( // [______10] // [10____________________] ((in[18 + inPos] & 4194303) >>> 20) | // [765432__] // [________________543210] ((in[19 + inPos] & 4194303) << 2)) & 255); out[53 + outPos] = (byte)(( // [76543210] // [________32109876______] ((in[19 + inPos] & 4194303) >>> 6)) & 255); out[54 + outPos] = (byte)(( // [76543210] // [10987654______________] ((in[19 + inPos] & 4194303) >>> 14)) & 255); out[55 + outPos] = (byte)(( // [76543210] // [______________76543210] ((in[20 + inPos] & 4194303))) & 255); out[56 + outPos] = (byte)(( // [76543210] // [______54321098________] ((in[20 + inPos] & 4194303) >>> 8)) & 255); out[57 + outPos] = (byte)(( // [__543210] // [109876________________] ((in[20 + inPos] & 4194303) >>> 16) | // [76______] // [____________________10] ((in[21 + inPos] & 4194303) << 6)) & 255); out[58 + outPos] = (byte)(( // [76543210] // [____________98765432__] ((in[21 + inPos] & 4194303) >>> 2)) & 255); out[59 + outPos] = (byte)(( // [76543210] // [____76543210__________] ((in[21 + inPos] & 4194303) >>> 10)) & 255); out[60 + outPos] = (byte)(( // [____3210] // [1098__________________] ((in[21 + inPos] & 4194303) >>> 18) | // [7654____] // [__________________3210] ((in[22 + inPos] & 4194303) << 4)) & 255); out[61 + outPos] = (byte)(( // [76543210] // [__________10987654____] ((in[22 + inPos] & 4194303) >>> 4)) & 255); out[62 + outPos] = (byte)(( // [76543210] // [__98765432____________] ((in[22 + inPos] & 4194303) >>> 12)) & 255); out[63 + outPos] = (byte)(( // [______10] // [10____________________] ((in[22 + inPos] & 4194303) >>> 20) | // [765432__] // [________________543210] ((in[23 + inPos] & 4194303) << 2)) & 255); out[64 + outPos] = (byte)(( // [76543210] // [________32109876______] ((in[23 + inPos] & 4194303) >>> 6)) & 255); out[65 + outPos] = (byte)(( // [76543210] // [10987654______________] ((in[23 + inPos] & 4194303) >>> 14)) & 255); out[66 + outPos] = (byte)(( // [76543210] // [______________76543210] ((in[24 + inPos] & 4194303))) & 255); out[67 + outPos] = (byte)(( // [76543210] // [______54321098________] ((in[24 + inPos] & 4194303) >>> 8)) & 255); out[68 + outPos] = (byte)(( // [__543210] // [109876________________] ((in[24 + inPos] & 4194303) >>> 16) | // [76______] // [____________________10] ((in[25 + inPos] & 4194303) << 6)) & 255); out[69 + outPos] = (byte)(( // [76543210] // [____________98765432__] ((in[25 + inPos] & 4194303) >>> 2)) & 255); out[70 + outPos] = (byte)(( // [76543210] // [____76543210__________] ((in[25 + inPos] & 4194303) >>> 10)) & 255); out[71 + outPos] = (byte)(( // [____3210] // [1098__________________] ((in[25 + inPos] & 4194303) >>> 18) | // [7654____] // [__________________3210] ((in[26 + inPos] & 4194303) << 4)) & 255); out[72 + outPos] = (byte)(( // [76543210] // [__________10987654____] ((in[26 + inPos] & 4194303) >>> 4)) & 255); out[73 + outPos] = (byte)(( // [76543210] // [__98765432____________] ((in[26 + inPos] & 4194303) >>> 12)) & 255); out[74 + outPos] = (byte)(( // [______10] // [10____________________] ((in[26 + inPos] & 4194303) >>> 20) | // [765432__] // [________________543210] ((in[27 + inPos] & 4194303) << 2)) & 255); out[75 + outPos] = (byte)(( // [76543210] // [________32109876______] ((in[27 + inPos] & 4194303) >>> 6)) & 255); out[76 + outPos] = (byte)(( // [76543210] // [10987654______________] ((in[27 + inPos] & 4194303) >>> 14)) & 255); out[77 + outPos] = (byte)(( // [76543210] // [______________76543210] ((in[28 + inPos] & 4194303))) & 255); out[78 + outPos] = (byte)(( // [76543210] // [______54321098________] ((in[28 + inPos] & 4194303) >>> 8)) & 255); out[79 + outPos] = (byte)(( // [__543210] // [109876________________] ((in[28 + inPos] & 4194303) >>> 16) | // [76______] // [____________________10] ((in[29 + inPos] & 4194303) << 6)) & 255); out[80 + outPos] = (byte)(( // [76543210] // [____________98765432__] ((in[29 + inPos] & 4194303) >>> 2)) & 255); out[81 + outPos] = (byte)(( // [76543210] // [____76543210__________] ((in[29 + inPos] & 4194303) >>> 10)) & 255); out[82 + outPos] = (byte)(( // [____3210] // [1098__________________] ((in[29 + inPos] & 4194303) >>> 18) | // [7654____] // [__________________3210] ((in[30 + inPos] & 4194303) << 4)) & 255); out[83 + outPos] = (byte)(( // [76543210] // [__________10987654____] ((in[30 + inPos] & 4194303) >>> 4)) & 255); out[84 + outPos] = (byte)(( // [76543210] // [__98765432____________] ((in[30 + inPos] & 4194303) >>> 12)) & 255); out[85 + outPos] = (byte)(( // [______10] // [10____________________] ((in[30 + inPos] & 4194303) >>> 20) | // [765432__] // [________________543210] ((in[31 + inPos] & 4194303) << 2)) & 255); out[86 + outPos] = (byte)(( // [76543210] // [________32109876______] ((in[31 + inPos] & 4194303) >>> 6)) & 255); out[87 + outPos] = (byte)(( // [76543210] // [10987654______________] ((in[31 + inPos] & 4194303) >>> 14)) & 255); } public final void unpack8Values(final byte[] in, final int inPos, final int[] out, final int outPos) { out[ 0 + outPos] = // [76543210] // [______________76543210] (((((int)in[ 0 + inPos]) & 255) ) & 4194303) | // [76543210] // [______54321098________] (((((int)in[ 1 + inPos]) & 255) << 8) & 4194303) | // [__543210] // [109876________________] (((((int)in[ 2 + inPos]) & 255) << 16) & 4194303); out[ 1 + outPos] = // [76______] // [____________________10] (((((int)in[ 2 + inPos]) & 255) >>> 6) & 4194303) | // [76543210] // [____________98765432__] (((((int)in[ 3 + inPos]) & 255) << 2) & 4194303) | // [76543210] // [____76543210__________] (((((int)in[ 4 + inPos]) & 255) << 10) & 4194303) | // [____3210] // [1098__________________] (((((int)in[ 5 + inPos]) & 255) << 18) & 4194303); out[ 2 + outPos] = // [7654____] // [__________________3210] (((((int)in[ 5 + inPos]) & 255) >>> 4) & 4194303) | // [76543210] // [__________10987654____] (((((int)in[ 6 + inPos]) & 255) << 4) & 4194303) | // [76543210] // [__98765432____________] (((((int)in[ 7 + inPos]) & 255) << 12) & 4194303) | // [______10] // [10____________________] (((((int)in[ 8 + inPos]) & 255) << 20) & 4194303); out[ 3 + outPos] = // [765432__] // [________________543210] (((((int)in[ 8 + inPos]) & 255) >>> 2) & 4194303) | // [76543210] // [________32109876______] (((((int)in[ 9 + inPos]) & 255) << 6) & 4194303) | // [76543210] // [10987654______________] (((((int)in[10 + inPos]) & 255) << 14) & 4194303); out[ 4 + outPos] = // [76543210] // [______________76543210] (((((int)in[11 + inPos]) & 255) ) & 4194303) | // [76543210] // [______54321098________] (((((int)in[12 + inPos]) & 255) << 8) & 4194303) | // [__543210] // [109876________________] (((((int)in[13 + inPos]) & 255) << 16) & 4194303); out[ 5 + outPos] = // [76______] // [____________________10] (((((int)in[13 + inPos]) & 255) >>> 6) & 4194303) | // [76543210] // [____________98765432__] (((((int)in[14 + inPos]) & 255) << 2) & 4194303) | // [76543210] // [____76543210__________] (((((int)in[15 + inPos]) & 255) << 10) & 4194303) | // [____3210] // [1098__________________] (((((int)in[16 + inPos]) & 255) << 18) & 4194303); out[ 6 + outPos] = // [7654____] // [__________________3210] (((((int)in[16 + inPos]) & 255) >>> 4) & 4194303) | // [76543210] // [__________10987654____] (((((int)in[17 + inPos]) & 255) << 4) & 4194303) | // [76543210] // [__98765432____________] (((((int)in[18 + inPos]) & 255) << 12) & 4194303) | // [______10] // [10____________________] (((((int)in[19 + inPos]) & 255) << 20) & 4194303); out[ 7 + outPos] = // [765432__] // [________________543210] (((((int)in[19 + inPos]) & 255) >>> 2) & 4194303) | // [76543210] // [________32109876______] (((((int)in[20 + inPos]) & 255) << 6) & 4194303) | // [76543210] // [10987654______________] (((((int)in[21 + inPos]) & 255) << 14) & 4194303); } public final void unpack32Values(final byte[] in, final int inPos, final int[] out, final int outPos) { out[ 0 + outPos] = // [76543210] // [______________76543210] (((((int)in[ 0 + inPos]) & 255) ) & 4194303) | // [76543210] // [______54321098________] (((((int)in[ 1 + inPos]) & 255) << 8) & 4194303) | // [__543210] // [109876________________] (((((int)in[ 2 + inPos]) & 255) << 16) & 4194303); out[ 1 + outPos] = // [76______] // [____________________10] (((((int)in[ 2 + inPos]) & 255) >>> 6) & 4194303) | // [76543210] // [____________98765432__] (((((int)in[ 3 + inPos]) & 255) << 2) & 4194303) | // [76543210] // [____76543210__________] (((((int)in[ 4 + inPos]) & 255) << 10) & 4194303) | // [____3210] // [1098__________________] (((((int)in[ 5 + inPos]) & 255) << 18) & 4194303); out[ 2 + outPos] = // [7654____] // [__________________3210] (((((int)in[ 5 + inPos]) & 255) >>> 4) & 4194303) | // [76543210] // [__________10987654____] (((((int)in[ 6 + inPos]) & 255) << 4) & 4194303) | // [76543210] // [__98765432____________] (((((int)in[ 7 + inPos]) & 255) << 12) & 4194303) | // [______10] // [10____________________] (((((int)in[ 8 + inPos]) & 255) << 20) & 4194303); out[ 3 + outPos] = // [765432__] // [________________543210] (((((int)in[ 8 + inPos]) & 255) >>> 2) & 4194303) | // [76543210] // [________32109876______] (((((int)in[ 9 + inPos]) & 255) << 6) & 4194303) | // [76543210] // [10987654______________] (((((int)in[10 + inPos]) & 255) << 14) & 4194303); out[ 4 + outPos] = // [76543210] // [______________76543210] (((((int)in[11 + inPos]) & 255) ) & 4194303) | // [76543210] // [______54321098________] (((((int)in[12 + inPos]) & 255) << 8) & 4194303) | // [__543210] // [109876________________] (((((int)in[13 + inPos]) & 255) << 16) & 4194303); out[ 5 + outPos] = // [76______] // [____________________10] (((((int)in[13 + inPos]) & 255) >>> 6) & 4194303) | // [76543210] // [____________98765432__] (((((int)in[14 + inPos]) & 255) << 2) & 4194303) | // [76543210] // [____76543210__________] (((((int)in[15 + inPos]) & 255) << 10) & 4194303) | // [____3210] // [1098__________________] (((((int)in[16 + inPos]) & 255) << 18) & 4194303); out[ 6 + outPos] = // [7654____] // [__________________3210] (((((int)in[16 + inPos]) & 255) >>> 4) & 4194303) | // [76543210] // [__________10987654____] (((((int)in[17 + inPos]) & 255) << 4) & 4194303) | // [76543210] // [__98765432____________] (((((int)in[18 + inPos]) & 255) << 12) & 4194303) | // [______10] // [10____________________] (((((int)in[19 + inPos]) & 255) << 20) & 4194303); out[ 7 + outPos] = // [765432__] // [________________543210] (((((int)in[19 + inPos]) & 255) >>> 2) & 4194303) | // [76543210] // [________32109876______] (((((int)in[20 + inPos]) & 255) << 6) & 4194303) | // [76543210] // [10987654______________] (((((int)in[21 + inPos]) & 255) << 14) & 4194303); out[ 8 + outPos] = // [76543210] // [______________76543210] (((((int)in[22 + inPos]) & 255) ) & 4194303) | // [76543210] // [______54321098________] (((((int)in[23 + inPos]) & 255) << 8) & 4194303) | // [__543210] // [109876________________] (((((int)in[24 + inPos]) & 255) << 16) & 4194303); out[ 9 + outPos] = // [76______] // [____________________10] (((((int)in[24 + inPos]) & 255) >>> 6) & 4194303) | // [76543210] // [____________98765432__] (((((int)in[25 + inPos]) & 255) << 2) & 4194303) | // [76543210] // [____76543210__________] (((((int)in[26 + inPos]) & 255) << 10) & 4194303) | // [____3210] // [1098__________________] (((((int)in[27 + inPos]) & 255) << 18) & 4194303); out[10 + outPos] = // [7654____] // [__________________3210] (((((int)in[27 + inPos]) & 255) >>> 4) & 4194303) | // [76543210] // [__________10987654____] (((((int)in[28 + inPos]) & 255) << 4) & 4194303) | // [76543210] // [__98765432____________] (((((int)in[29 + inPos]) & 255) << 12) & 4194303) | // [______10] // [10____________________] (((((int)in[30 + inPos]) & 255) << 20) & 4194303); out[11 + outPos] = // [765432__] // [________________543210] (((((int)in[30 + inPos]) & 255) >>> 2) & 4194303) | // [76543210] // [________32109876______] (((((int)in[31 + inPos]) & 255) << 6) & 4194303) | // [76543210] // [10987654______________] (((((int)in[32 + inPos]) & 255) << 14) & 4194303); out[12 + outPos] = // [76543210] // [______________76543210] (((((int)in[33 + inPos]) & 255) ) & 4194303) | // [76543210] // [______54321098________] (((((int)in[34 + inPos]) & 255) << 8) & 4194303) | // [__543210] // [109876________________] (((((int)in[35 + inPos]) & 255) << 16) & 4194303); out[13 + outPos] = // [76______] // [____________________10] (((((int)in[35 + inPos]) & 255) >>> 6) & 4194303) | // [76543210] // [____________98765432__] (((((int)in[36 + inPos]) & 255) << 2) & 4194303) | // [76543210] // [____76543210__________] (((((int)in[37 + inPos]) & 255) << 10) & 4194303) | // [____3210] // [1098__________________] (((((int)in[38 + inPos]) & 255) << 18) & 4194303); out[14 + outPos] = // [7654____] // [__________________3210] (((((int)in[38 + inPos]) & 255) >>> 4) & 4194303) | // [76543210] // [__________10987654____] (((((int)in[39 + inPos]) & 255) << 4) & 4194303) | // [76543210] // [__98765432____________] (((((int)in[40 + inPos]) & 255) << 12) & 4194303) | // [______10] // [10____________________] (((((int)in[41 + inPos]) & 255) << 20) & 4194303); out[15 + outPos] = // [765432__] // [________________543210] (((((int)in[41 + inPos]) & 255) >>> 2) & 4194303) | // [76543210] // [________32109876______] (((((int)in[42 + inPos]) & 255) << 6) & 4194303) | // [76543210] // [10987654______________] (((((int)in[43 + inPos]) & 255) << 14) & 4194303); out[16 + outPos] = // [76543210] // [______________76543210] (((((int)in[44 + inPos]) & 255) ) & 4194303) | // [76543210] // [______54321098________] (((((int)in[45 + inPos]) & 255) << 8) & 4194303) | // [__543210] // [109876________________] (((((int)in[46 + inPos]) & 255) << 16) & 4194303); out[17 + outPos] = // [76______] // [____________________10] (((((int)in[46 + inPos]) & 255) >>> 6) & 4194303) | // [76543210] // [____________98765432__] (((((int)in[47 + inPos]) & 255) << 2) & 4194303) | // [76543210] // [____76543210__________] (((((int)in[48 + inPos]) & 255) << 10) & 4194303) | // [____3210] // [1098__________________] (((((int)in[49 + inPos]) & 255) << 18) & 4194303); out[18 + outPos] = // [7654____] // [__________________3210] (((((int)in[49 + inPos]) & 255) >>> 4) & 4194303) | // [76543210] // [__________10987654____] (((((int)in[50 + inPos]) & 255) << 4) & 4194303) | // [76543210] // [__98765432____________] (((((int)in[51 + inPos]) & 255) << 12) & 4194303) | // [______10] // [10____________________] (((((int)in[52 + inPos]) & 255) << 20) & 4194303); out[19 + outPos] = // [765432__] // [________________543210] (((((int)in[52 + inPos]) & 255) >>> 2) & 4194303) | // [76543210] // [________32109876______] (((((int)in[53 + inPos]) & 255) << 6) & 4194303) | // [76543210] // [10987654______________] (((((int)in[54 + inPos]) & 255) << 14) & 4194303); out[20 + outPos] = // [76543210] // [______________76543210] (((((int)in[55 + inPos]) & 255) ) & 4194303) | // [76543210] // [______54321098________] (((((int)in[56 + inPos]) & 255) << 8) & 4194303) | // [__543210] // [109876________________] (((((int)in[57 + inPos]) & 255) << 16) & 4194303); out[21 + outPos] = // [76______] // [____________________10] (((((int)in[57 + inPos]) & 255) >>> 6) & 4194303) | // [76543210] // [____________98765432__] (((((int)in[58 + inPos]) & 255) << 2) & 4194303) | // [76543210] // [____76543210__________] (((((int)in[59 + inPos]) & 255) << 10) & 4194303) | // [____3210] // [1098__________________] (((((int)in[60 + inPos]) & 255) << 18) & 4194303); out[22 + outPos] = // [7654____] // [__________________3210] (((((int)in[60 + inPos]) & 255) >>> 4) & 4194303) | // [76543210] // [__________10987654____] (((((int)in[61 + inPos]) & 255) << 4) & 4194303) | // [76543210] // [__98765432____________] (((((int)in[62 + inPos]) & 255) << 12) & 4194303) | // [______10] // [10____________________] (((((int)in[63 + inPos]) & 255) << 20) & 4194303); out[23 + outPos] = // [765432__] // [________________543210] (((((int)in[63 + inPos]) & 255) >>> 2) & 4194303) | // [76543210] // [________32109876______] (((((int)in[64 + inPos]) & 255) << 6) & 4194303) | // [76543210] // [10987654______________] (((((int)in[65 + inPos]) & 255) << 14) & 4194303); out[24 + outPos] = // [76543210] // [______________76543210] (((((int)in[66 + inPos]) & 255) ) & 4194303) | // [76543210] // [______54321098________] (((((int)in[67 + inPos]) & 255) << 8) & 4194303) | // [__543210] // [109876________________] (((((int)in[68 + inPos]) & 255) << 16) & 4194303); out[25 + outPos] = // [76______] // [____________________10] (((((int)in[68 + inPos]) & 255) >>> 6) & 4194303) | // [76543210] // [____________98765432__] (((((int)in[69 + inPos]) & 255) << 2) & 4194303) | // [76543210] // [____76543210__________] (((((int)in[70 + inPos]) & 255) << 10) & 4194303) | // [____3210] // [1098__________________] (((((int)in[71 + inPos]) & 255) << 18) & 4194303); out[26 + outPos] = // [7654____] // [__________________3210] (((((int)in[71 + inPos]) & 255) >>> 4) & 4194303) | // [76543210] // [__________10987654____] (((((int)in[72 + inPos]) & 255) << 4) & 4194303) | // [76543210] // [__98765432____________] (((((int)in[73 + inPos]) & 255) << 12) & 4194303) | // [______10] // [10____________________] (((((int)in[74 + inPos]) & 255) << 20) & 4194303); out[27 + outPos] = // [765432__] // [________________543210] (((((int)in[74 + inPos]) & 255) >>> 2) & 4194303) | // [76543210] // [________32109876______] (((((int)in[75 + inPos]) & 255) << 6) & 4194303) | // [76543210] // [10987654______________] (((((int)in[76 + inPos]) & 255) << 14) & 4194303); out[28 + outPos] = // [76543210] // [______________76543210] (((((int)in[77 + inPos]) & 255) ) & 4194303) | // [76543210] // [______54321098________] (((((int)in[78 + inPos]) & 255) << 8) & 4194303) | // [__543210] // [109876________________] (((((int)in[79 + inPos]) & 255) << 16) & 4194303); out[29 + outPos] = // [76______] // [____________________10] (((((int)in[79 + inPos]) & 255) >>> 6) & 4194303) | // [76543210] // [____________98765432__] (((((int)in[80 + inPos]) & 255) << 2) & 4194303) | // [76543210] // [____76543210__________] (((((int)in[81 + inPos]) & 255) << 10) & 4194303) | // [____3210] // [1098__________________] (((((int)in[82 + inPos]) & 255) << 18) & 4194303); out[30 + outPos] = // [7654____] // [__________________3210] (((((int)in[82 + inPos]) & 255) >>> 4) & 4194303) | // [76543210] // [__________10987654____] (((((int)in[83 + inPos]) & 255) << 4) & 4194303) | // [76543210] // [__98765432____________] (((((int)in[84 + inPos]) & 255) << 12) & 4194303) | // [______10] // [10____________________] (((((int)in[85 + inPos]) & 255) << 20) & 4194303); out[31 + outPos] = // [765432__] // [________________543210] (((((int)in[85 + inPos]) & 255) >>> 2) & 4194303) | // [76543210] // [________32109876______] (((((int)in[86 + inPos]) & 255) << 6) & 4194303) | // [76543210] // [10987654______________] (((((int)in[87 + inPos]) & 255) << 14) & 4194303); } } private static final class Packer23 extends BytePacker { private Packer23() { super(23); } public final void pack8Values(final int[] in, final int inPos, final byte[] out, final int outPos) { out[ 0 + outPos] = (byte)(( // [76543210] // [_______________76543210] ((in[ 0 + inPos] & 8388607))) & 255); out[ 1 + outPos] = (byte)(( // [76543210] // [_______54321098________] ((in[ 0 + inPos] & 8388607) >>> 8)) & 255); out[ 2 + outPos] = (byte)(( // [_6543210] // [2109876________________] ((in[ 0 + inPos] & 8388607) >>> 16) | // [7_______] // [______________________0] ((in[ 1 + inPos] & 8388607) << 7)) & 255); out[ 3 + outPos] = (byte)(( // [76543210] // [______________87654321_] ((in[ 1 + inPos] & 8388607) >>> 1)) & 255); out[ 4 + outPos] = (byte)(( // [76543210] // [______65432109_________] ((in[ 1 + inPos] & 8388607) >>> 9)) & 255); out[ 5 + outPos] = (byte)(( // [__543210] // [210987_________________] ((in[ 1 + inPos] & 8388607) >>> 17) | // [76______] // [_____________________10] ((in[ 2 + inPos] & 8388607) << 6)) & 255); out[ 6 + outPos] = (byte)(( // [76543210] // [_____________98765432__] ((in[ 2 + inPos] & 8388607) >>> 2)) & 255); out[ 7 + outPos] = (byte)(( // [76543210] // [_____76543210__________] ((in[ 2 + inPos] & 8388607) >>> 10)) & 255); out[ 8 + outPos] = (byte)(( // [___43210] // [21098__________________] ((in[ 2 + inPos] & 8388607) >>> 18) | // [765_____] // [____________________210] ((in[ 3 + inPos] & 8388607) << 5)) & 255); out[ 9 + outPos] = (byte)(( // [76543210] // [____________09876543___] ((in[ 3 + inPos] & 8388607) >>> 3)) & 255); out[10 + outPos] = (byte)(( // [76543210] // [____87654321___________] ((in[ 3 + inPos] & 8388607) >>> 11)) & 255); out[11 + outPos] = (byte)(( // [____3210] // [2109___________________] ((in[ 3 + inPos] & 8388607) >>> 19) | // [7654____] // [___________________3210] ((in[ 4 + inPos] & 8388607) << 4)) & 255); out[12 + outPos] = (byte)(( // [76543210] // [___________10987654____] ((in[ 4 + inPos] & 8388607) >>> 4)) & 255); out[13 + outPos] = (byte)(( // [76543210] // [___98765432____________] ((in[ 4 + inPos] & 8388607) >>> 12)) & 255); out[14 + outPos] = (byte)(( // [_____210] // [210____________________] ((in[ 4 + inPos] & 8388607) >>> 20) | // [76543___] // [__________________43210] ((in[ 5 + inPos] & 8388607) << 3)) & 255); out[15 + outPos] = (byte)(( // [76543210] // [__________21098765_____] ((in[ 5 + inPos] & 8388607) >>> 5)) & 255); out[16 + outPos] = (byte)(( // [76543210] // [__09876543_____________] ((in[ 5 + inPos] & 8388607) >>> 13)) & 255); out[17 + outPos] = (byte)(( // [______10] // [21_____________________] ((in[ 5 + inPos] & 8388607) >>> 21) | // [765432__] // [_________________543210] ((in[ 6 + inPos] & 8388607) << 2)) & 255); out[18 + outPos] = (byte)(( // [76543210] // [_________32109876______] ((in[ 6 + inPos] & 8388607) >>> 6)) & 255); out[19 + outPos] = (byte)(( // [76543210] // [_10987654______________] ((in[ 6 + inPos] & 8388607) >>> 14)) & 255); out[20 + outPos] = (byte)(( // [_______0] // [2______________________] ((in[ 6 + inPos] & 8388607) >>> 22) | // [7654321_] // [________________6543210] ((in[ 7 + inPos] & 8388607) << 1)) & 255); out[21 + outPos] = (byte)(( // [76543210] // [________43210987_______] ((in[ 7 + inPos] & 8388607) >>> 7)) & 255); out[22 + outPos] = (byte)(( // [76543210] // [21098765_______________] ((in[ 7 + inPos] & 8388607) >>> 15)) & 255); } public final void pack32Values(final int[] in, final int inPos, final byte[] out, final int outPos) { out[ 0 + outPos] = (byte)(( // [76543210] // [_______________76543210] ((in[ 0 + inPos] & 8388607))) & 255); out[ 1 + outPos] = (byte)(( // [76543210] // [_______54321098________] ((in[ 0 + inPos] & 8388607) >>> 8)) & 255); out[ 2 + outPos] = (byte)(( // [_6543210] // [2109876________________] ((in[ 0 + inPos] & 8388607) >>> 16) | // [7_______] // [______________________0] ((in[ 1 + inPos] & 8388607) << 7)) & 255); out[ 3 + outPos] = (byte)(( // [76543210] // [______________87654321_] ((in[ 1 + inPos] & 8388607) >>> 1)) & 255); out[ 4 + outPos] = (byte)(( // [76543210] // [______65432109_________] ((in[ 1 + inPos] & 8388607) >>> 9)) & 255); out[ 5 + outPos] = (byte)(( // [__543210] // [210987_________________] ((in[ 1 + inPos] & 8388607) >>> 17) | // [76______] // [_____________________10] ((in[ 2 + inPos] & 8388607) << 6)) & 255); out[ 6 + outPos] = (byte)(( // [76543210] // [_____________98765432__] ((in[ 2 + inPos] & 8388607) >>> 2)) & 255); out[ 7 + outPos] = (byte)(( // [76543210] // [_____76543210__________] ((in[ 2 + inPos] & 8388607) >>> 10)) & 255); out[ 8 + outPos] = (byte)(( // [___43210] // [21098__________________] ((in[ 2 + inPos] & 8388607) >>> 18) | // [765_____] // [____________________210] ((in[ 3 + inPos] & 8388607) << 5)) & 255); out[ 9 + outPos] = (byte)(( // [76543210] // [____________09876543___] ((in[ 3 + inPos] & 8388607) >>> 3)) & 255); out[10 + outPos] = (byte)(( // [76543210] // [____87654321___________] ((in[ 3 + inPos] & 8388607) >>> 11)) & 255); out[11 + outPos] = (byte)(( // [____3210] // [2109___________________] ((in[ 3 + inPos] & 8388607) >>> 19) | // [7654____] // [___________________3210] ((in[ 4 + inPos] & 8388607) << 4)) & 255); out[12 + outPos] = (byte)(( // [76543210] // [___________10987654____] ((in[ 4 + inPos] & 8388607) >>> 4)) & 255); out[13 + outPos] = (byte)(( // [76543210] // [___98765432____________] ((in[ 4 + inPos] & 8388607) >>> 12)) & 255); out[14 + outPos] = (byte)(( // [_____210] // [210____________________] ((in[ 4 + inPos] & 8388607) >>> 20) | // [76543___] // [__________________43210] ((in[ 5 + inPos] & 8388607) << 3)) & 255); out[15 + outPos] = (byte)(( // [76543210] // [__________21098765_____] ((in[ 5 + inPos] & 8388607) >>> 5)) & 255); out[16 + outPos] = (byte)(( // [76543210] // [__09876543_____________] ((in[ 5 + inPos] & 8388607) >>> 13)) & 255); out[17 + outPos] = (byte)(( // [______10] // [21_____________________] ((in[ 5 + inPos] & 8388607) >>> 21) | // [765432__] // [_________________543210] ((in[ 6 + inPos] & 8388607) << 2)) & 255); out[18 + outPos] = (byte)(( // [76543210] // [_________32109876______] ((in[ 6 + inPos] & 8388607) >>> 6)) & 255); out[19 + outPos] = (byte)(( // [76543210] // [_10987654______________] ((in[ 6 + inPos] & 8388607) >>> 14)) & 255); out[20 + outPos] = (byte)(( // [_______0] // [2______________________] ((in[ 6 + inPos] & 8388607) >>> 22) | // [7654321_] // [________________6543210] ((in[ 7 + inPos] & 8388607) << 1)) & 255); out[21 + outPos] = (byte)(( // [76543210] // [________43210987_______] ((in[ 7 + inPos] & 8388607) >>> 7)) & 255); out[22 + outPos] = (byte)(( // [76543210] // [21098765_______________] ((in[ 7 + inPos] & 8388607) >>> 15)) & 255); out[23 + outPos] = (byte)(( // [76543210] // [_______________76543210] ((in[ 8 + inPos] & 8388607))) & 255); out[24 + outPos] = (byte)(( // [76543210] // [_______54321098________] ((in[ 8 + inPos] & 8388607) >>> 8)) & 255); out[25 + outPos] = (byte)(( // [_6543210] // [2109876________________] ((in[ 8 + inPos] & 8388607) >>> 16) | // [7_______] // [______________________0] ((in[ 9 + inPos] & 8388607) << 7)) & 255); out[26 + outPos] = (byte)(( // [76543210] // [______________87654321_] ((in[ 9 + inPos] & 8388607) >>> 1)) & 255); out[27 + outPos] = (byte)(( // [76543210] // [______65432109_________] ((in[ 9 + inPos] & 8388607) >>> 9)) & 255); out[28 + outPos] = (byte)(( // [__543210] // [210987_________________] ((in[ 9 + inPos] & 8388607) >>> 17) | // [76______] // [_____________________10] ((in[10 + inPos] & 8388607) << 6)) & 255); out[29 + outPos] = (byte)(( // [76543210] // [_____________98765432__] ((in[10 + inPos] & 8388607) >>> 2)) & 255); out[30 + outPos] = (byte)(( // [76543210] // [_____76543210__________] ((in[10 + inPos] & 8388607) >>> 10)) & 255); out[31 + outPos] = (byte)(( // [___43210] // [21098__________________] ((in[10 + inPos] & 8388607) >>> 18) | // [765_____] // [____________________210] ((in[11 + inPos] & 8388607) << 5)) & 255); out[32 + outPos] = (byte)(( // [76543210] // [____________09876543___] ((in[11 + inPos] & 8388607) >>> 3)) & 255); out[33 + outPos] = (byte)(( // [76543210] // [____87654321___________] ((in[11 + inPos] & 8388607) >>> 11)) & 255); out[34 + outPos] = (byte)(( // [____3210] // [2109___________________] ((in[11 + inPos] & 8388607) >>> 19) | // [7654____] // [___________________3210] ((in[12 + inPos] & 8388607) << 4)) & 255); out[35 + outPos] = (byte)(( // [76543210] // [___________10987654____] ((in[12 + inPos] & 8388607) >>> 4)) & 255); out[36 + outPos] = (byte)(( // [76543210] // [___98765432____________] ((in[12 + inPos] & 8388607) >>> 12)) & 255); out[37 + outPos] = (byte)(( // [_____210] // [210____________________] ((in[12 + inPos] & 8388607) >>> 20) | // [76543___] // [__________________43210] ((in[13 + inPos] & 8388607) << 3)) & 255); out[38 + outPos] = (byte)(( // [76543210] // [__________21098765_____] ((in[13 + inPos] & 8388607) >>> 5)) & 255); out[39 + outPos] = (byte)(( // [76543210] // [__09876543_____________] ((in[13 + inPos] & 8388607) >>> 13)) & 255); out[40 + outPos] = (byte)(( // [______10] // [21_____________________] ((in[13 + inPos] & 8388607) >>> 21) | // [765432__] // [_________________543210] ((in[14 + inPos] & 8388607) << 2)) & 255); out[41 + outPos] = (byte)(( // [76543210] // [_________32109876______] ((in[14 + inPos] & 8388607) >>> 6)) & 255); out[42 + outPos] = (byte)(( // [76543210] // [_10987654______________] ((in[14 + inPos] & 8388607) >>> 14)) & 255); out[43 + outPos] = (byte)(( // [_______0] // [2______________________] ((in[14 + inPos] & 8388607) >>> 22) | // [7654321_] // [________________6543210] ((in[15 + inPos] & 8388607) << 1)) & 255); out[44 + outPos] = (byte)(( // [76543210] // [________43210987_______] ((in[15 + inPos] & 8388607) >>> 7)) & 255); out[45 + outPos] = (byte)(( // [76543210] // [21098765_______________] ((in[15 + inPos] & 8388607) >>> 15)) & 255); out[46 + outPos] = (byte)(( // [76543210] // [_______________76543210] ((in[16 + inPos] & 8388607))) & 255); out[47 + outPos] = (byte)(( // [76543210] // [_______54321098________] ((in[16 + inPos] & 8388607) >>> 8)) & 255); out[48 + outPos] = (byte)(( // [_6543210] // [2109876________________] ((in[16 + inPos] & 8388607) >>> 16) | // [7_______] // [______________________0] ((in[17 + inPos] & 8388607) << 7)) & 255); out[49 + outPos] = (byte)(( // [76543210] // [______________87654321_] ((in[17 + inPos] & 8388607) >>> 1)) & 255); out[50 + outPos] = (byte)(( // [76543210] // [______65432109_________] ((in[17 + inPos] & 8388607) >>> 9)) & 255); out[51 + outPos] = (byte)(( // [__543210] // [210987_________________] ((in[17 + inPos] & 8388607) >>> 17) | // [76______] // [_____________________10] ((in[18 + inPos] & 8388607) << 6)) & 255); out[52 + outPos] = (byte)(( // [76543210] // [_____________98765432__] ((in[18 + inPos] & 8388607) >>> 2)) & 255); out[53 + outPos] = (byte)(( // [76543210] // [_____76543210__________] ((in[18 + inPos] & 8388607) >>> 10)) & 255); out[54 + outPos] = (byte)(( // [___43210] // [21098__________________] ((in[18 + inPos] & 8388607) >>> 18) | // [765_____] // [____________________210] ((in[19 + inPos] & 8388607) << 5)) & 255); out[55 + outPos] = (byte)(( // [76543210] // [____________09876543___] ((in[19 + inPos] & 8388607) >>> 3)) & 255); out[56 + outPos] = (byte)(( // [76543210] // [____87654321___________] ((in[19 + inPos] & 8388607) >>> 11)) & 255); out[57 + outPos] = (byte)(( // [____3210] // [2109___________________] ((in[19 + inPos] & 8388607) >>> 19) | // [7654____] // [___________________3210] ((in[20 + inPos] & 8388607) << 4)) & 255); out[58 + outPos] = (byte)(( // [76543210] // [___________10987654____] ((in[20 + inPos] & 8388607) >>> 4)) & 255); out[59 + outPos] = (byte)(( // [76543210] // [___98765432____________] ((in[20 + inPos] & 8388607) >>> 12)) & 255); out[60 + outPos] = (byte)(( // [_____210] // [210____________________] ((in[20 + inPos] & 8388607) >>> 20) | // [76543___] // [__________________43210] ((in[21 + inPos] & 8388607) << 3)) & 255); out[61 + outPos] = (byte)(( // [76543210] // [__________21098765_____] ((in[21 + inPos] & 8388607) >>> 5)) & 255); out[62 + outPos] = (byte)(( // [76543210] // [__09876543_____________] ((in[21 + inPos] & 8388607) >>> 13)) & 255); out[63 + outPos] = (byte)(( // [______10] // [21_____________________] ((in[21 + inPos] & 8388607) >>> 21) | // [765432__] // [_________________543210] ((in[22 + inPos] & 8388607) << 2)) & 255); out[64 + outPos] = (byte)(( // [76543210] // [_________32109876______] ((in[22 + inPos] & 8388607) >>> 6)) & 255); out[65 + outPos] = (byte)(( // [76543210] // [_10987654______________] ((in[22 + inPos] & 8388607) >>> 14)) & 255); out[66 + outPos] = (byte)(( // [_______0] // [2______________________] ((in[22 + inPos] & 8388607) >>> 22) | // [7654321_] // [________________6543210] ((in[23 + inPos] & 8388607) << 1)) & 255); out[67 + outPos] = (byte)(( // [76543210] // [________43210987_______] ((in[23 + inPos] & 8388607) >>> 7)) & 255); out[68 + outPos] = (byte)(( // [76543210] // [21098765_______________] ((in[23 + inPos] & 8388607) >>> 15)) & 255); out[69 + outPos] = (byte)(( // [76543210] // [_______________76543210] ((in[24 + inPos] & 8388607))) & 255); out[70 + outPos] = (byte)(( // [76543210] // [_______54321098________] ((in[24 + inPos] & 8388607) >>> 8)) & 255); out[71 + outPos] = (byte)(( // [_6543210] // [2109876________________] ((in[24 + inPos] & 8388607) >>> 16) | // [7_______] // [______________________0] ((in[25 + inPos] & 8388607) << 7)) & 255); out[72 + outPos] = (byte)(( // [76543210] // [______________87654321_] ((in[25 + inPos] & 8388607) >>> 1)) & 255); out[73 + outPos] = (byte)(( // [76543210] // [______65432109_________] ((in[25 + inPos] & 8388607) >>> 9)) & 255); out[74 + outPos] = (byte)(( // [__543210] // [210987_________________] ((in[25 + inPos] & 8388607) >>> 17) | // [76______] // [_____________________10] ((in[26 + inPos] & 8388607) << 6)) & 255); out[75 + outPos] = (byte)(( // [76543210] // [_____________98765432__] ((in[26 + inPos] & 8388607) >>> 2)) & 255); out[76 + outPos] = (byte)(( // [76543210] // [_____76543210__________] ((in[26 + inPos] & 8388607) >>> 10)) & 255); out[77 + outPos] = (byte)(( // [___43210] // [21098__________________] ((in[26 + inPos] & 8388607) >>> 18) | // [765_____] // [____________________210] ((in[27 + inPos] & 8388607) << 5)) & 255); out[78 + outPos] = (byte)(( // [76543210] // [____________09876543___] ((in[27 + inPos] & 8388607) >>> 3)) & 255); out[79 + outPos] = (byte)(( // [76543210] // [____87654321___________] ((in[27 + inPos] & 8388607) >>> 11)) & 255); out[80 + outPos] = (byte)(( // [____3210] // [2109___________________] ((in[27 + inPos] & 8388607) >>> 19) | // [7654____] // [___________________3210] ((in[28 + inPos] & 8388607) << 4)) & 255); out[81 + outPos] = (byte)(( // [76543210] // [___________10987654____] ((in[28 + inPos] & 8388607) >>> 4)) & 255); out[82 + outPos] = (byte)(( // [76543210] // [___98765432____________] ((in[28 + inPos] & 8388607) >>> 12)) & 255); out[83 + outPos] = (byte)(( // [_____210] // [210____________________] ((in[28 + inPos] & 8388607) >>> 20) | // [76543___] // [__________________43210] ((in[29 + inPos] & 8388607) << 3)) & 255); out[84 + outPos] = (byte)(( // [76543210] // [__________21098765_____] ((in[29 + inPos] & 8388607) >>> 5)) & 255); out[85 + outPos] = (byte)(( // [76543210] // [__09876543_____________] ((in[29 + inPos] & 8388607) >>> 13)) & 255); out[86 + outPos] = (byte)(( // [______10] // [21_____________________] ((in[29 + inPos] & 8388607) >>> 21) | // [765432__] // [_________________543210] ((in[30 + inPos] & 8388607) << 2)) & 255); out[87 + outPos] = (byte)(( // [76543210] // [_________32109876______] ((in[30 + inPos] & 8388607) >>> 6)) & 255); out[88 + outPos] = (byte)(( // [76543210] // [_10987654______________] ((in[30 + inPos] & 8388607) >>> 14)) & 255); out[89 + outPos] = (byte)(( // [_______0] // [2______________________] ((in[30 + inPos] & 8388607) >>> 22) | // [7654321_] // [________________6543210] ((in[31 + inPos] & 8388607) << 1)) & 255); out[90 + outPos] = (byte)(( // [76543210] // [________43210987_______] ((in[31 + inPos] & 8388607) >>> 7)) & 255); out[91 + outPos] = (byte)(( // [76543210] // [21098765_______________] ((in[31 + inPos] & 8388607) >>> 15)) & 255); } public final void unpack8Values(final byte[] in, final int inPos, final int[] out, final int outPos) { out[ 0 + outPos] = // [76543210] // [_______________76543210] (((((int)in[ 0 + inPos]) & 255) ) & 8388607) | // [76543210] // [_______54321098________] (((((int)in[ 1 + inPos]) & 255) << 8) & 8388607) | // [_6543210] // [2109876________________] (((((int)in[ 2 + inPos]) & 255) << 16) & 8388607); out[ 1 + outPos] = // [7_______] // [______________________0] (((((int)in[ 2 + inPos]) & 255) >>> 7) & 8388607) | // [76543210] // [______________87654321_] (((((int)in[ 3 + inPos]) & 255) << 1) & 8388607) | // [76543210] // [______65432109_________] (((((int)in[ 4 + inPos]) & 255) << 9) & 8388607) | // [__543210] // [210987_________________] (((((int)in[ 5 + inPos]) & 255) << 17) & 8388607); out[ 2 + outPos] = // [76______] // [_____________________10] (((((int)in[ 5 + inPos]) & 255) >>> 6) & 8388607) | // [76543210] // [_____________98765432__] (((((int)in[ 6 + inPos]) & 255) << 2) & 8388607) | // [76543210] // [_____76543210__________] (((((int)in[ 7 + inPos]) & 255) << 10) & 8388607) | // [___43210] // [21098__________________] (((((int)in[ 8 + inPos]) & 255) << 18) & 8388607); out[ 3 + outPos] = // [765_____] // [____________________210] (((((int)in[ 8 + inPos]) & 255) >>> 5) & 8388607) | // [76543210] // [____________09876543___] (((((int)in[ 9 + inPos]) & 255) << 3) & 8388607) | // [76543210] // [____87654321___________] (((((int)in[10 + inPos]) & 255) << 11) & 8388607) | // [____3210] // [2109___________________] (((((int)in[11 + inPos]) & 255) << 19) & 8388607); out[ 4 + outPos] = // [7654____] // [___________________3210] (((((int)in[11 + inPos]) & 255) >>> 4) & 8388607) | // [76543210] // [___________10987654____] (((((int)in[12 + inPos]) & 255) << 4) & 8388607) | // [76543210] // [___98765432____________] (((((int)in[13 + inPos]) & 255) << 12) & 8388607) | // [_____210] // [210____________________] (((((int)in[14 + inPos]) & 255) << 20) & 8388607); out[ 5 + outPos] = // [76543___] // [__________________43210] (((((int)in[14 + inPos]) & 255) >>> 3) & 8388607) | // [76543210] // [__________21098765_____] (((((int)in[15 + inPos]) & 255) << 5) & 8388607) | // [76543210] // [__09876543_____________] (((((int)in[16 + inPos]) & 255) << 13) & 8388607) | // [______10] // [21_____________________] (((((int)in[17 + inPos]) & 255) << 21) & 8388607); out[ 6 + outPos] = // [765432__] // [_________________543210] (((((int)in[17 + inPos]) & 255) >>> 2) & 8388607) | // [76543210] // [_________32109876______] (((((int)in[18 + inPos]) & 255) << 6) & 8388607) | // [76543210] // [_10987654______________] (((((int)in[19 + inPos]) & 255) << 14) & 8388607) | // [_______0] // [2______________________] (((((int)in[20 + inPos]) & 255) << 22) & 8388607); out[ 7 + outPos] = // [7654321_] // [________________6543210] (((((int)in[20 + inPos]) & 255) >>> 1) & 8388607) | // [76543210] // [________43210987_______] (((((int)in[21 + inPos]) & 255) << 7) & 8388607) | // [76543210] // [21098765_______________] (((((int)in[22 + inPos]) & 255) << 15) & 8388607); } public final void unpack32Values(final byte[] in, final int inPos, final int[] out, final int outPos) { out[ 0 + outPos] = // [76543210] // [_______________76543210] (((((int)in[ 0 + inPos]) & 255) ) & 8388607) | // [76543210] // [_______54321098________] (((((int)in[ 1 + inPos]) & 255) << 8) & 8388607) | // [_6543210] // [2109876________________] (((((int)in[ 2 + inPos]) & 255) << 16) & 8388607); out[ 1 + outPos] = // [7_______] // [______________________0] (((((int)in[ 2 + inPos]) & 255) >>> 7) & 8388607) | // [76543210] // [______________87654321_] (((((int)in[ 3 + inPos]) & 255) << 1) & 8388607) | // [76543210] // [______65432109_________] (((((int)in[ 4 + inPos]) & 255) << 9) & 8388607) | // [__543210] // [210987_________________] (((((int)in[ 5 + inPos]) & 255) << 17) & 8388607); out[ 2 + outPos] = // [76______] // [_____________________10] (((((int)in[ 5 + inPos]) & 255) >>> 6) & 8388607) | // [76543210] // [_____________98765432__] (((((int)in[ 6 + inPos]) & 255) << 2) & 8388607) | // [76543210] // [_____76543210__________] (((((int)in[ 7 + inPos]) & 255) << 10) & 8388607) | // [___43210] // [21098__________________] (((((int)in[ 8 + inPos]) & 255) << 18) & 8388607); out[ 3 + outPos] = // [765_____] // [____________________210] (((((int)in[ 8 + inPos]) & 255) >>> 5) & 8388607) | // [76543210] // [____________09876543___] (((((int)in[ 9 + inPos]) & 255) << 3) & 8388607) | // [76543210] // [____87654321___________] (((((int)in[10 + inPos]) & 255) << 11) & 8388607) | // [____3210] // [2109___________________] (((((int)in[11 + inPos]) & 255) << 19) & 8388607); out[ 4 + outPos] = // [7654____] // [___________________3210] (((((int)in[11 + inPos]) & 255) >>> 4) & 8388607) | // [76543210] // [___________10987654____] (((((int)in[12 + inPos]) & 255) << 4) & 8388607) | // [76543210] // [___98765432____________] (((((int)in[13 + inPos]) & 255) << 12) & 8388607) | // [_____210] // [210____________________] (((((int)in[14 + inPos]) & 255) << 20) & 8388607); out[ 5 + outPos] = // [76543___] // [__________________43210] (((((int)in[14 + inPos]) & 255) >>> 3) & 8388607) | // [76543210] // [__________21098765_____] (((((int)in[15 + inPos]) & 255) << 5) & 8388607) | // [76543210] // [__09876543_____________] (((((int)in[16 + inPos]) & 255) << 13) & 8388607) | // [______10] // [21_____________________] (((((int)in[17 + inPos]) & 255) << 21) & 8388607); out[ 6 + outPos] = // [765432__] // [_________________543210] (((((int)in[17 + inPos]) & 255) >>> 2) & 8388607) | // [76543210] // [_________32109876______] (((((int)in[18 + inPos]) & 255) << 6) & 8388607) | // [76543210] // [_10987654______________] (((((int)in[19 + inPos]) & 255) << 14) & 8388607) | // [_______0] // [2______________________] (((((int)in[20 + inPos]) & 255) << 22) & 8388607); out[ 7 + outPos] = // [7654321_] // [________________6543210] (((((int)in[20 + inPos]) & 255) >>> 1) & 8388607) | // [76543210] // [________43210987_______] (((((int)in[21 + inPos]) & 255) << 7) & 8388607) | // [76543210] // [21098765_______________] (((((int)in[22 + inPos]) & 255) << 15) & 8388607); out[ 8 + outPos] = // [76543210] // [_______________76543210] (((((int)in[23 + inPos]) & 255) ) & 8388607) | // [76543210] // [_______54321098________] (((((int)in[24 + inPos]) & 255) << 8) & 8388607) | // [_6543210] // [2109876________________] (((((int)in[25 + inPos]) & 255) << 16) & 8388607); out[ 9 + outPos] = // [7_______] // [______________________0] (((((int)in[25 + inPos]) & 255) >>> 7) & 8388607) | // [76543210] // [______________87654321_] (((((int)in[26 + inPos]) & 255) << 1) & 8388607) | // [76543210] // [______65432109_________] (((((int)in[27 + inPos]) & 255) << 9) & 8388607) | // [__543210] // [210987_________________] (((((int)in[28 + inPos]) & 255) << 17) & 8388607); out[10 + outPos] = // [76______] // [_____________________10] (((((int)in[28 + inPos]) & 255) >>> 6) & 8388607) | // [76543210] // [_____________98765432__] (((((int)in[29 + inPos]) & 255) << 2) & 8388607) | // [76543210] // [_____76543210__________] (((((int)in[30 + inPos]) & 255) << 10) & 8388607) | // [___43210] // [21098__________________] (((((int)in[31 + inPos]) & 255) << 18) & 8388607); out[11 + outPos] = // [765_____] // [____________________210] (((((int)in[31 + inPos]) & 255) >>> 5) & 8388607) | // [76543210] // [____________09876543___] (((((int)in[32 + inPos]) & 255) << 3) & 8388607) | // [76543210] // [____87654321___________] (((((int)in[33 + inPos]) & 255) << 11) & 8388607) | // [____3210] // [2109___________________] (((((int)in[34 + inPos]) & 255) << 19) & 8388607); out[12 + outPos] = // [7654____] // [___________________3210] (((((int)in[34 + inPos]) & 255) >>> 4) & 8388607) | // [76543210] // [___________10987654____] (((((int)in[35 + inPos]) & 255) << 4) & 8388607) | // [76543210] // [___98765432____________] (((((int)in[36 + inPos]) & 255) << 12) & 8388607) | // [_____210] // [210____________________] (((((int)in[37 + inPos]) & 255) << 20) & 8388607); out[13 + outPos] = // [76543___] // [__________________43210] (((((int)in[37 + inPos]) & 255) >>> 3) & 8388607) | // [76543210] // [__________21098765_____] (((((int)in[38 + inPos]) & 255) << 5) & 8388607) | // [76543210] // [__09876543_____________] (((((int)in[39 + inPos]) & 255) << 13) & 8388607) | // [______10] // [21_____________________] (((((int)in[40 + inPos]) & 255) << 21) & 8388607); out[14 + outPos] = // [765432__] // [_________________543210] (((((int)in[40 + inPos]) & 255) >>> 2) & 8388607) | // [76543210] // [_________32109876______] (((((int)in[41 + inPos]) & 255) << 6) & 8388607) | // [76543210] // [_10987654______________] (((((int)in[42 + inPos]) & 255) << 14) & 8388607) | // [_______0] // [2______________________] (((((int)in[43 + inPos]) & 255) << 22) & 8388607); out[15 + outPos] = // [7654321_] // [________________6543210] (((((int)in[43 + inPos]) & 255) >>> 1) & 8388607) | // [76543210] // [________43210987_______] (((((int)in[44 + inPos]) & 255) << 7) & 8388607) | // [76543210] // [21098765_______________] (((((int)in[45 + inPos]) & 255) << 15) & 8388607); out[16 + outPos] = // [76543210] // [_______________76543210] (((((int)in[46 + inPos]) & 255) ) & 8388607) | // [76543210] // [_______54321098________] (((((int)in[47 + inPos]) & 255) << 8) & 8388607) | // [_6543210] // [2109876________________] (((((int)in[48 + inPos]) & 255) << 16) & 8388607); out[17 + outPos] = // [7_______] // [______________________0] (((((int)in[48 + inPos]) & 255) >>> 7) & 8388607) | // [76543210] // [______________87654321_] (((((int)in[49 + inPos]) & 255) << 1) & 8388607) | // [76543210] // [______65432109_________] (((((int)in[50 + inPos]) & 255) << 9) & 8388607) | // [__543210] // [210987_________________] (((((int)in[51 + inPos]) & 255) << 17) & 8388607); out[18 + outPos] = // [76______] // [_____________________10] (((((int)in[51 + inPos]) & 255) >>> 6) & 8388607) | // [76543210] // [_____________98765432__] (((((int)in[52 + inPos]) & 255) << 2) & 8388607) | // [76543210] // [_____76543210__________] (((((int)in[53 + inPos]) & 255) << 10) & 8388607) | // [___43210] // [21098__________________] (((((int)in[54 + inPos]) & 255) << 18) & 8388607); out[19 + outPos] = // [765_____] // [____________________210] (((((int)in[54 + inPos]) & 255) >>> 5) & 8388607) | // [76543210] // [____________09876543___] (((((int)in[55 + inPos]) & 255) << 3) & 8388607) | // [76543210] // [____87654321___________] (((((int)in[56 + inPos]) & 255) << 11) & 8388607) | // [____3210] // [2109___________________] (((((int)in[57 + inPos]) & 255) << 19) & 8388607); out[20 + outPos] = // [7654____] // [___________________3210] (((((int)in[57 + inPos]) & 255) >>> 4) & 8388607) | // [76543210] // [___________10987654____] (((((int)in[58 + inPos]) & 255) << 4) & 8388607) | // [76543210] // [___98765432____________] (((((int)in[59 + inPos]) & 255) << 12) & 8388607) | // [_____210] // [210____________________] (((((int)in[60 + inPos]) & 255) << 20) & 8388607); out[21 + outPos] = // [76543___] // [__________________43210] (((((int)in[60 + inPos]) & 255) >>> 3) & 8388607) | // [76543210] // [__________21098765_____] (((((int)in[61 + inPos]) & 255) << 5) & 8388607) | // [76543210] // [__09876543_____________] (((((int)in[62 + inPos]) & 255) << 13) & 8388607) | // [______10] // [21_____________________] (((((int)in[63 + inPos]) & 255) << 21) & 8388607); out[22 + outPos] = // [765432__] // [_________________543210] (((((int)in[63 + inPos]) & 255) >>> 2) & 8388607) | // [76543210] // [_________32109876______] (((((int)in[64 + inPos]) & 255) << 6) & 8388607) | // [76543210] // [_10987654______________] (((((int)in[65 + inPos]) & 255) << 14) & 8388607) | // [_______0] // [2______________________] (((((int)in[66 + inPos]) & 255) << 22) & 8388607); out[23 + outPos] = // [7654321_] // [________________6543210] (((((int)in[66 + inPos]) & 255) >>> 1) & 8388607) | // [76543210] // [________43210987_______] (((((int)in[67 + inPos]) & 255) << 7) & 8388607) | // [76543210] // [21098765_______________] (((((int)in[68 + inPos]) & 255) << 15) & 8388607); out[24 + outPos] = // [76543210] // [_______________76543210] (((((int)in[69 + inPos]) & 255) ) & 8388607) | // [76543210] // [_______54321098________] (((((int)in[70 + inPos]) & 255) << 8) & 8388607) | // [_6543210] // [2109876________________] (((((int)in[71 + inPos]) & 255) << 16) & 8388607); out[25 + outPos] = // [7_______] // [______________________0] (((((int)in[71 + inPos]) & 255) >>> 7) & 8388607) | // [76543210] // [______________87654321_] (((((int)in[72 + inPos]) & 255) << 1) & 8388607) | // [76543210] // [______65432109_________] (((((int)in[73 + inPos]) & 255) << 9) & 8388607) | // [__543210] // [210987_________________] (((((int)in[74 + inPos]) & 255) << 17) & 8388607); out[26 + outPos] = // [76______] // [_____________________10] (((((int)in[74 + inPos]) & 255) >>> 6) & 8388607) | // [76543210] // [_____________98765432__] (((((int)in[75 + inPos]) & 255) << 2) & 8388607) | // [76543210] // [_____76543210__________] (((((int)in[76 + inPos]) & 255) << 10) & 8388607) | // [___43210] // [21098__________________] (((((int)in[77 + inPos]) & 255) << 18) & 8388607); out[27 + outPos] = // [765_____] // [____________________210] (((((int)in[77 + inPos]) & 255) >>> 5) & 8388607) | // [76543210] // [____________09876543___] (((((int)in[78 + inPos]) & 255) << 3) & 8388607) | // [76543210] // [____87654321___________] (((((int)in[79 + inPos]) & 255) << 11) & 8388607) | // [____3210] // [2109___________________] (((((int)in[80 + inPos]) & 255) << 19) & 8388607); out[28 + outPos] = // [7654____] // [___________________3210] (((((int)in[80 + inPos]) & 255) >>> 4) & 8388607) | // [76543210] // [___________10987654____] (((((int)in[81 + inPos]) & 255) << 4) & 8388607) | // [76543210] // [___98765432____________] (((((int)in[82 + inPos]) & 255) << 12) & 8388607) | // [_____210] // [210____________________] (((((int)in[83 + inPos]) & 255) << 20) & 8388607); out[29 + outPos] = // [76543___] // [__________________43210] (((((int)in[83 + inPos]) & 255) >>> 3) & 8388607) | // [76543210] // [__________21098765_____] (((((int)in[84 + inPos]) & 255) << 5) & 8388607) | // [76543210] // [__09876543_____________] (((((int)in[85 + inPos]) & 255) << 13) & 8388607) | // [______10] // [21_____________________] (((((int)in[86 + inPos]) & 255) << 21) & 8388607); out[30 + outPos] = // [765432__] // [_________________543210] (((((int)in[86 + inPos]) & 255) >>> 2) & 8388607) | // [76543210] // [_________32109876______] (((((int)in[87 + inPos]) & 255) << 6) & 8388607) | // [76543210] // [_10987654______________] (((((int)in[88 + inPos]) & 255) << 14) & 8388607) | // [_______0] // [2______________________] (((((int)in[89 + inPos]) & 255) << 22) & 8388607); out[31 + outPos] = // [7654321_] // [________________6543210] (((((int)in[89 + inPos]) & 255) >>> 1) & 8388607) | // [76543210] // [________43210987_______] (((((int)in[90 + inPos]) & 255) << 7) & 8388607) | // [76543210] // [21098765_______________] (((((int)in[91 + inPos]) & 255) << 15) & 8388607); } } private static final class Packer24 extends BytePacker { private Packer24() { super(24); } public final void pack8Values(final int[] in, final int inPos, final byte[] out, final int outPos) { out[ 0 + outPos] = (byte)(( // [76543210] // [________________76543210] ((in[ 0 + inPos] & 16777215))) & 255); out[ 1 + outPos] = (byte)(( // [76543210] // [________54321098________] ((in[ 0 + inPos] & 16777215) >>> 8)) & 255); out[ 2 + outPos] = (byte)(( // [76543210] // [32109876________________] ((in[ 0 + inPos] & 16777215) >>> 16)) & 255); out[ 3 + outPos] = (byte)(( // [76543210] // [________________76543210] ((in[ 1 + inPos] & 16777215))) & 255); out[ 4 + outPos] = (byte)(( // [76543210] // [________54321098________] ((in[ 1 + inPos] & 16777215) >>> 8)) & 255); out[ 5 + outPos] = (byte)(( // [76543210] // [32109876________________] ((in[ 1 + inPos] & 16777215) >>> 16)) & 255); out[ 6 + outPos] = (byte)(( // [76543210] // [________________76543210] ((in[ 2 + inPos] & 16777215))) & 255); out[ 7 + outPos] = (byte)(( // [76543210] // [________54321098________] ((in[ 2 + inPos] & 16777215) >>> 8)) & 255); out[ 8 + outPos] = (byte)(( // [76543210] // [32109876________________] ((in[ 2 + inPos] & 16777215) >>> 16)) & 255); out[ 9 + outPos] = (byte)(( // [76543210] // [________________76543210] ((in[ 3 + inPos] & 16777215))) & 255); out[10 + outPos] = (byte)(( // [76543210] // [________54321098________] ((in[ 3 + inPos] & 16777215) >>> 8)) & 255); out[11 + outPos] = (byte)(( // [76543210] // [32109876________________] ((in[ 3 + inPos] & 16777215) >>> 16)) & 255); out[12 + outPos] = (byte)(( // [76543210] // [________________76543210] ((in[ 4 + inPos] & 16777215))) & 255); out[13 + outPos] = (byte)(( // [76543210] // [________54321098________] ((in[ 4 + inPos] & 16777215) >>> 8)) & 255); out[14 + outPos] = (byte)(( // [76543210] // [32109876________________] ((in[ 4 + inPos] & 16777215) >>> 16)) & 255); out[15 + outPos] = (byte)(( // [76543210] // [________________76543210] ((in[ 5 + inPos] & 16777215))) & 255); out[16 + outPos] = (byte)(( // [76543210] // [________54321098________] ((in[ 5 + inPos] & 16777215) >>> 8)) & 255); out[17 + outPos] = (byte)(( // [76543210] // [32109876________________] ((in[ 5 + inPos] & 16777215) >>> 16)) & 255); out[18 + outPos] = (byte)(( // [76543210] // [________________76543210] ((in[ 6 + inPos] & 16777215))) & 255); out[19 + outPos] = (byte)(( // [76543210] // [________54321098________] ((in[ 6 + inPos] & 16777215) >>> 8)) & 255); out[20 + outPos] = (byte)(( // [76543210] // [32109876________________] ((in[ 6 + inPos] & 16777215) >>> 16)) & 255); out[21 + outPos] = (byte)(( // [76543210] // [________________76543210] ((in[ 7 + inPos] & 16777215))) & 255); out[22 + outPos] = (byte)(( // [76543210] // [________54321098________] ((in[ 7 + inPos] & 16777215) >>> 8)) & 255); out[23 + outPos] = (byte)(( // [76543210] // [32109876________________] ((in[ 7 + inPos] & 16777215) >>> 16)) & 255); } public final void pack32Values(final int[] in, final int inPos, final byte[] out, final int outPos) { out[ 0 + outPos] = (byte)(( // [76543210] // [________________76543210] ((in[ 0 + inPos] & 16777215))) & 255); out[ 1 + outPos] = (byte)(( // [76543210] // [________54321098________] ((in[ 0 + inPos] & 16777215) >>> 8)) & 255); out[ 2 + outPos] = (byte)(( // [76543210] // [32109876________________] ((in[ 0 + inPos] & 16777215) >>> 16)) & 255); out[ 3 + outPos] = (byte)(( // [76543210] // [________________76543210] ((in[ 1 + inPos] & 16777215))) & 255); out[ 4 + outPos] = (byte)(( // [76543210] // [________54321098________] ((in[ 1 + inPos] & 16777215) >>> 8)) & 255); out[ 5 + outPos] = (byte)(( // [76543210] // [32109876________________] ((in[ 1 + inPos] & 16777215) >>> 16)) & 255); out[ 6 + outPos] = (byte)(( // [76543210] // [________________76543210] ((in[ 2 + inPos] & 16777215))) & 255); out[ 7 + outPos] = (byte)(( // [76543210] // [________54321098________] ((in[ 2 + inPos] & 16777215) >>> 8)) & 255); out[ 8 + outPos] = (byte)(( // [76543210] // [32109876________________] ((in[ 2 + inPos] & 16777215) >>> 16)) & 255); out[ 9 + outPos] = (byte)(( // [76543210] // [________________76543210] ((in[ 3 + inPos] & 16777215))) & 255); out[10 + outPos] = (byte)(( // [76543210] // [________54321098________] ((in[ 3 + inPos] & 16777215) >>> 8)) & 255); out[11 + outPos] = (byte)(( // [76543210] // [32109876________________] ((in[ 3 + inPos] & 16777215) >>> 16)) & 255); out[12 + outPos] = (byte)(( // [76543210] // [________________76543210] ((in[ 4 + inPos] & 16777215))) & 255); out[13 + outPos] = (byte)(( // [76543210] // [________54321098________] ((in[ 4 + inPos] & 16777215) >>> 8)) & 255); out[14 + outPos] = (byte)(( // [76543210] // [32109876________________] ((in[ 4 + inPos] & 16777215) >>> 16)) & 255); out[15 + outPos] = (byte)(( // [76543210] // [________________76543210] ((in[ 5 + inPos] & 16777215))) & 255); out[16 + outPos] = (byte)(( // [76543210] // [________54321098________] ((in[ 5 + inPos] & 16777215) >>> 8)) & 255); out[17 + outPos] = (byte)(( // [76543210] // [32109876________________] ((in[ 5 + inPos] & 16777215) >>> 16)) & 255); out[18 + outPos] = (byte)(( // [76543210] // [________________76543210] ((in[ 6 + inPos] & 16777215))) & 255); out[19 + outPos] = (byte)(( // [76543210] // [________54321098________] ((in[ 6 + inPos] & 16777215) >>> 8)) & 255); out[20 + outPos] = (byte)(( // [76543210] // [32109876________________] ((in[ 6 + inPos] & 16777215) >>> 16)) & 255); out[21 + outPos] = (byte)(( // [76543210] // [________________76543210] ((in[ 7 + inPos] & 16777215))) & 255); out[22 + outPos] = (byte)(( // [76543210] // [________54321098________] ((in[ 7 + inPos] & 16777215) >>> 8)) & 255); out[23 + outPos] = (byte)(( // [76543210] // [32109876________________] ((in[ 7 + inPos] & 16777215) >>> 16)) & 255); out[24 + outPos] = (byte)(( // [76543210] // [________________76543210] ((in[ 8 + inPos] & 16777215))) & 255); out[25 + outPos] = (byte)(( // [76543210] // [________54321098________] ((in[ 8 + inPos] & 16777215) >>> 8)) & 255); out[26 + outPos] = (byte)(( // [76543210] // [32109876________________] ((in[ 8 + inPos] & 16777215) >>> 16)) & 255); out[27 + outPos] = (byte)(( // [76543210] // [________________76543210] ((in[ 9 + inPos] & 16777215))) & 255); out[28 + outPos] = (byte)(( // [76543210] // [________54321098________] ((in[ 9 + inPos] & 16777215) >>> 8)) & 255); out[29 + outPos] = (byte)(( // [76543210] // [32109876________________] ((in[ 9 + inPos] & 16777215) >>> 16)) & 255); out[30 + outPos] = (byte)(( // [76543210] // [________________76543210] ((in[10 + inPos] & 16777215))) & 255); out[31 + outPos] = (byte)(( // [76543210] // [________54321098________] ((in[10 + inPos] & 16777215) >>> 8)) & 255); out[32 + outPos] = (byte)(( // [76543210] // [32109876________________] ((in[10 + inPos] & 16777215) >>> 16)) & 255); out[33 + outPos] = (byte)(( // [76543210] // [________________76543210] ((in[11 + inPos] & 16777215))) & 255); out[34 + outPos] = (byte)(( // [76543210] // [________54321098________] ((in[11 + inPos] & 16777215) >>> 8)) & 255); out[35 + outPos] = (byte)(( // [76543210] // [32109876________________] ((in[11 + inPos] & 16777215) >>> 16)) & 255); out[36 + outPos] = (byte)(( // [76543210] // [________________76543210] ((in[12 + inPos] & 16777215))) & 255); out[37 + outPos] = (byte)(( // [76543210] // [________54321098________] ((in[12 + inPos] & 16777215) >>> 8)) & 255); out[38 + outPos] = (byte)(( // [76543210] // [32109876________________] ((in[12 + inPos] & 16777215) >>> 16)) & 255); out[39 + outPos] = (byte)(( // [76543210] // [________________76543210] ((in[13 + inPos] & 16777215))) & 255); out[40 + outPos] = (byte)(( // [76543210] // [________54321098________] ((in[13 + inPos] & 16777215) >>> 8)) & 255); out[41 + outPos] = (byte)(( // [76543210] // [32109876________________] ((in[13 + inPos] & 16777215) >>> 16)) & 255); out[42 + outPos] = (byte)(( // [76543210] // [________________76543210] ((in[14 + inPos] & 16777215))) & 255); out[43 + outPos] = (byte)(( // [76543210] // [________54321098________] ((in[14 + inPos] & 16777215) >>> 8)) & 255); out[44 + outPos] = (byte)(( // [76543210] // [32109876________________] ((in[14 + inPos] & 16777215) >>> 16)) & 255); out[45 + outPos] = (byte)(( // [76543210] // [________________76543210] ((in[15 + inPos] & 16777215))) & 255); out[46 + outPos] = (byte)(( // [76543210] // [________54321098________] ((in[15 + inPos] & 16777215) >>> 8)) & 255); out[47 + outPos] = (byte)(( // [76543210] // [32109876________________] ((in[15 + inPos] & 16777215) >>> 16)) & 255); out[48 + outPos] = (byte)(( // [76543210] // [________________76543210] ((in[16 + inPos] & 16777215))) & 255); out[49 + outPos] = (byte)(( // [76543210] // [________54321098________] ((in[16 + inPos] & 16777215) >>> 8)) & 255); out[50 + outPos] = (byte)(( // [76543210] // [32109876________________] ((in[16 + inPos] & 16777215) >>> 16)) & 255); out[51 + outPos] = (byte)(( // [76543210] // [________________76543210] ((in[17 + inPos] & 16777215))) & 255); out[52 + outPos] = (byte)(( // [76543210] // [________54321098________] ((in[17 + inPos] & 16777215) >>> 8)) & 255); out[53 + outPos] = (byte)(( // [76543210] // [32109876________________] ((in[17 + inPos] & 16777215) >>> 16)) & 255); out[54 + outPos] = (byte)(( // [76543210] // [________________76543210] ((in[18 + inPos] & 16777215))) & 255); out[55 + outPos] = (byte)(( // [76543210] // [________54321098________] ((in[18 + inPos] & 16777215) >>> 8)) & 255); out[56 + outPos] = (byte)(( // [76543210] // [32109876________________] ((in[18 + inPos] & 16777215) >>> 16)) & 255); out[57 + outPos] = (byte)(( // [76543210] // [________________76543210] ((in[19 + inPos] & 16777215))) & 255); out[58 + outPos] = (byte)(( // [76543210] // [________54321098________] ((in[19 + inPos] & 16777215) >>> 8)) & 255); out[59 + outPos] = (byte)(( // [76543210] // [32109876________________] ((in[19 + inPos] & 16777215) >>> 16)) & 255); out[60 + outPos] = (byte)(( // [76543210] // [________________76543210] ((in[20 + inPos] & 16777215))) & 255); out[61 + outPos] = (byte)(( // [76543210] // [________54321098________] ((in[20 + inPos] & 16777215) >>> 8)) & 255); out[62 + outPos] = (byte)(( // [76543210] // [32109876________________] ((in[20 + inPos] & 16777215) >>> 16)) & 255); out[63 + outPos] = (byte)(( // [76543210] // [________________76543210] ((in[21 + inPos] & 16777215))) & 255); out[64 + outPos] = (byte)(( // [76543210] // [________54321098________] ((in[21 + inPos] & 16777215) >>> 8)) & 255); out[65 + outPos] = (byte)(( // [76543210] // [32109876________________] ((in[21 + inPos] & 16777215) >>> 16)) & 255); out[66 + outPos] = (byte)(( // [76543210] // [________________76543210] ((in[22 + inPos] & 16777215))) & 255); out[67 + outPos] = (byte)(( // [76543210] // [________54321098________] ((in[22 + inPos] & 16777215) >>> 8)) & 255); out[68 + outPos] = (byte)(( // [76543210] // [32109876________________] ((in[22 + inPos] & 16777215) >>> 16)) & 255); out[69 + outPos] = (byte)(( // [76543210] // [________________76543210] ((in[23 + inPos] & 16777215))) & 255); out[70 + outPos] = (byte)(( // [76543210] // [________54321098________] ((in[23 + inPos] & 16777215) >>> 8)) & 255); out[71 + outPos] = (byte)(( // [76543210] // [32109876________________] ((in[23 + inPos] & 16777215) >>> 16)) & 255); out[72 + outPos] = (byte)(( // [76543210] // [________________76543210] ((in[24 + inPos] & 16777215))) & 255); out[73 + outPos] = (byte)(( // [76543210] // [________54321098________] ((in[24 + inPos] & 16777215) >>> 8)) & 255); out[74 + outPos] = (byte)(( // [76543210] // [32109876________________] ((in[24 + inPos] & 16777215) >>> 16)) & 255); out[75 + outPos] = (byte)(( // [76543210] // [________________76543210] ((in[25 + inPos] & 16777215))) & 255); out[76 + outPos] = (byte)(( // [76543210] // [________54321098________] ((in[25 + inPos] & 16777215) >>> 8)) & 255); out[77 + outPos] = (byte)(( // [76543210] // [32109876________________] ((in[25 + inPos] & 16777215) >>> 16)) & 255); out[78 + outPos] = (byte)(( // [76543210] // [________________76543210] ((in[26 + inPos] & 16777215))) & 255); out[79 + outPos] = (byte)(( // [76543210] // [________54321098________] ((in[26 + inPos] & 16777215) >>> 8)) & 255); out[80 + outPos] = (byte)(( // [76543210] // [32109876________________] ((in[26 + inPos] & 16777215) >>> 16)) & 255); out[81 + outPos] = (byte)(( // [76543210] // [________________76543210] ((in[27 + inPos] & 16777215))) & 255); out[82 + outPos] = (byte)(( // [76543210] // [________54321098________] ((in[27 + inPos] & 16777215) >>> 8)) & 255); out[83 + outPos] = (byte)(( // [76543210] // [32109876________________] ((in[27 + inPos] & 16777215) >>> 16)) & 255); out[84 + outPos] = (byte)(( // [76543210] // [________________76543210] ((in[28 + inPos] & 16777215))) & 255); out[85 + outPos] = (byte)(( // [76543210] // [________54321098________] ((in[28 + inPos] & 16777215) >>> 8)) & 255); out[86 + outPos] = (byte)(( // [76543210] // [32109876________________] ((in[28 + inPos] & 16777215) >>> 16)) & 255); out[87 + outPos] = (byte)(( // [76543210] // [________________76543210] ((in[29 + inPos] & 16777215))) & 255); out[88 + outPos] = (byte)(( // [76543210] // [________54321098________] ((in[29 + inPos] & 16777215) >>> 8)) & 255); out[89 + outPos] = (byte)(( // [76543210] // [32109876________________] ((in[29 + inPos] & 16777215) >>> 16)) & 255); out[90 + outPos] = (byte)(( // [76543210] // [________________76543210] ((in[30 + inPos] & 16777215))) & 255); out[91 + outPos] = (byte)(( // [76543210] // [________54321098________] ((in[30 + inPos] & 16777215) >>> 8)) & 255); out[92 + outPos] = (byte)(( // [76543210] // [32109876________________] ((in[30 + inPos] & 16777215) >>> 16)) & 255); out[93 + outPos] = (byte)(( // [76543210] // [________________76543210] ((in[31 + inPos] & 16777215))) & 255); out[94 + outPos] = (byte)(( // [76543210] // [________54321098________] ((in[31 + inPos] & 16777215) >>> 8)) & 255); out[95 + outPos] = (byte)(( // [76543210] // [32109876________________] ((in[31 + inPos] & 16777215) >>> 16)) & 255); } public final void unpack8Values(final byte[] in, final int inPos, final int[] out, final int outPos) { out[ 0 + outPos] = // [76543210] // [________________76543210] (((((int)in[ 0 + inPos]) & 255) ) & 16777215) | // [76543210] // [________54321098________] (((((int)in[ 1 + inPos]) & 255) << 8) & 16777215) | // [76543210] // [32109876________________] (((((int)in[ 2 + inPos]) & 255) << 16) & 16777215); out[ 1 + outPos] = // [76543210] // [________________76543210] (((((int)in[ 3 + inPos]) & 255) ) & 16777215) | // [76543210] // [________54321098________] (((((int)in[ 4 + inPos]) & 255) << 8) & 16777215) | // [76543210] // [32109876________________] (((((int)in[ 5 + inPos]) & 255) << 16) & 16777215); out[ 2 + outPos] = // [76543210] // [________________76543210] (((((int)in[ 6 + inPos]) & 255) ) & 16777215) | // [76543210] // [________54321098________] (((((int)in[ 7 + inPos]) & 255) << 8) & 16777215) | // [76543210] // [32109876________________] (((((int)in[ 8 + inPos]) & 255) << 16) & 16777215); out[ 3 + outPos] = // [76543210] // [________________76543210] (((((int)in[ 9 + inPos]) & 255) ) & 16777215) | // [76543210] // [________54321098________] (((((int)in[10 + inPos]) & 255) << 8) & 16777215) | // [76543210] // [32109876________________] (((((int)in[11 + inPos]) & 255) << 16) & 16777215); out[ 4 + outPos] = // [76543210] // [________________76543210] (((((int)in[12 + inPos]) & 255) ) & 16777215) | // [76543210] // [________54321098________] (((((int)in[13 + inPos]) & 255) << 8) & 16777215) | // [76543210] // [32109876________________] (((((int)in[14 + inPos]) & 255) << 16) & 16777215); out[ 5 + outPos] = // [76543210] // [________________76543210] (((((int)in[15 + inPos]) & 255) ) & 16777215) | // [76543210] // [________54321098________] (((((int)in[16 + inPos]) & 255) << 8) & 16777215) | // [76543210] // [32109876________________] (((((int)in[17 + inPos]) & 255) << 16) & 16777215); out[ 6 + outPos] = // [76543210] // [________________76543210] (((((int)in[18 + inPos]) & 255) ) & 16777215) | // [76543210] // [________54321098________] (((((int)in[19 + inPos]) & 255) << 8) & 16777215) | // [76543210] // [32109876________________] (((((int)in[20 + inPos]) & 255) << 16) & 16777215); out[ 7 + outPos] = // [76543210] // [________________76543210] (((((int)in[21 + inPos]) & 255) ) & 16777215) | // [76543210] // [________54321098________] (((((int)in[22 + inPos]) & 255) << 8) & 16777215) | // [76543210] // [32109876________________] (((((int)in[23 + inPos]) & 255) << 16) & 16777215); } public final void unpack32Values(final byte[] in, final int inPos, final int[] out, final int outPos) { out[ 0 + outPos] = // [76543210] // [________________76543210] (((((int)in[ 0 + inPos]) & 255) ) & 16777215) | // [76543210] // [________54321098________] (((((int)in[ 1 + inPos]) & 255) << 8) & 16777215) | // [76543210] // [32109876________________] (((((int)in[ 2 + inPos]) & 255) << 16) & 16777215); out[ 1 + outPos] = // [76543210] // [________________76543210] (((((int)in[ 3 + inPos]) & 255) ) & 16777215) | // [76543210] // [________54321098________] (((((int)in[ 4 + inPos]) & 255) << 8) & 16777215) | // [76543210] // [32109876________________] (((((int)in[ 5 + inPos]) & 255) << 16) & 16777215); out[ 2 + outPos] = // [76543210] // [________________76543210] (((((int)in[ 6 + inPos]) & 255) ) & 16777215) | // [76543210] // [________54321098________] (((((int)in[ 7 + inPos]) & 255) << 8) & 16777215) | // [76543210] // [32109876________________] (((((int)in[ 8 + inPos]) & 255) << 16) & 16777215); out[ 3 + outPos] = // [76543210] // [________________76543210] (((((int)in[ 9 + inPos]) & 255) ) & 16777215) | // [76543210] // [________54321098________] (((((int)in[10 + inPos]) & 255) << 8) & 16777215) | // [76543210] // [32109876________________] (((((int)in[11 + inPos]) & 255) << 16) & 16777215); out[ 4 + outPos] = // [76543210] // [________________76543210] (((((int)in[12 + inPos]) & 255) ) & 16777215) | // [76543210] // [________54321098________] (((((int)in[13 + inPos]) & 255) << 8) & 16777215) | // [76543210] // [32109876________________] (((((int)in[14 + inPos]) & 255) << 16) & 16777215); out[ 5 + outPos] = // [76543210] // [________________76543210] (((((int)in[15 + inPos]) & 255) ) & 16777215) | // [76543210] // [________54321098________] (((((int)in[16 + inPos]) & 255) << 8) & 16777215) | // [76543210] // [32109876________________] (((((int)in[17 + inPos]) & 255) << 16) & 16777215); out[ 6 + outPos] = // [76543210] // [________________76543210] (((((int)in[18 + inPos]) & 255) ) & 16777215) | // [76543210] // [________54321098________] (((((int)in[19 + inPos]) & 255) << 8) & 16777215) | // [76543210] // [32109876________________] (((((int)in[20 + inPos]) & 255) << 16) & 16777215); out[ 7 + outPos] = // [76543210] // [________________76543210] (((((int)in[21 + inPos]) & 255) ) & 16777215) | // [76543210] // [________54321098________] (((((int)in[22 + inPos]) & 255) << 8) & 16777215) | // [76543210] // [32109876________________] (((((int)in[23 + inPos]) & 255) << 16) & 16777215); out[ 8 + outPos] = // [76543210] // [________________76543210] (((((int)in[24 + inPos]) & 255) ) & 16777215) | // [76543210] // [________54321098________] (((((int)in[25 + inPos]) & 255) << 8) & 16777215) | // [76543210] // [32109876________________] (((((int)in[26 + inPos]) & 255) << 16) & 16777215); out[ 9 + outPos] = // [76543210] // [________________76543210] (((((int)in[27 + inPos]) & 255) ) & 16777215) | // [76543210] // [________54321098________] (((((int)in[28 + inPos]) & 255) << 8) & 16777215) | // [76543210] // [32109876________________] (((((int)in[29 + inPos]) & 255) << 16) & 16777215); out[10 + outPos] = // [76543210] // [________________76543210] (((((int)in[30 + inPos]) & 255) ) & 16777215) | // [76543210] // [________54321098________] (((((int)in[31 + inPos]) & 255) << 8) & 16777215) | // [76543210] // [32109876________________] (((((int)in[32 + inPos]) & 255) << 16) & 16777215); out[11 + outPos] = // [76543210] // [________________76543210] (((((int)in[33 + inPos]) & 255) ) & 16777215) | // [76543210] // [________54321098________] (((((int)in[34 + inPos]) & 255) << 8) & 16777215) | // [76543210] // [32109876________________] (((((int)in[35 + inPos]) & 255) << 16) & 16777215); out[12 + outPos] = // [76543210] // [________________76543210] (((((int)in[36 + inPos]) & 255) ) & 16777215) | // [76543210] // [________54321098________] (((((int)in[37 + inPos]) & 255) << 8) & 16777215) | // [76543210] // [32109876________________] (((((int)in[38 + inPos]) & 255) << 16) & 16777215); out[13 + outPos] = // [76543210] // [________________76543210] (((((int)in[39 + inPos]) & 255) ) & 16777215) | // [76543210] // [________54321098________] (((((int)in[40 + inPos]) & 255) << 8) & 16777215) | // [76543210] // [32109876________________] (((((int)in[41 + inPos]) & 255) << 16) & 16777215); out[14 + outPos] = // [76543210] // [________________76543210] (((((int)in[42 + inPos]) & 255) ) & 16777215) | // [76543210] // [________54321098________] (((((int)in[43 + inPos]) & 255) << 8) & 16777215) | // [76543210] // [32109876________________] (((((int)in[44 + inPos]) & 255) << 16) & 16777215); out[15 + outPos] = // [76543210] // [________________76543210] (((((int)in[45 + inPos]) & 255) ) & 16777215) | // [76543210] // [________54321098________] (((((int)in[46 + inPos]) & 255) << 8) & 16777215) | // [76543210] // [32109876________________] (((((int)in[47 + inPos]) & 255) << 16) & 16777215); out[16 + outPos] = // [76543210] // [________________76543210] (((((int)in[48 + inPos]) & 255) ) & 16777215) | // [76543210] // [________54321098________] (((((int)in[49 + inPos]) & 255) << 8) & 16777215) | // [76543210] // [32109876________________] (((((int)in[50 + inPos]) & 255) << 16) & 16777215); out[17 + outPos] = // [76543210] // [________________76543210] (((((int)in[51 + inPos]) & 255) ) & 16777215) | // [76543210] // [________54321098________] (((((int)in[52 + inPos]) & 255) << 8) & 16777215) | // [76543210] // [32109876________________] (((((int)in[53 + inPos]) & 255) << 16) & 16777215); out[18 + outPos] = // [76543210] // [________________76543210] (((((int)in[54 + inPos]) & 255) ) & 16777215) | // [76543210] // [________54321098________] (((((int)in[55 + inPos]) & 255) << 8) & 16777215) | // [76543210] // [32109876________________] (((((int)in[56 + inPos]) & 255) << 16) & 16777215); out[19 + outPos] = // [76543210] // [________________76543210] (((((int)in[57 + inPos]) & 255) ) & 16777215) | // [76543210] // [________54321098________] (((((int)in[58 + inPos]) & 255) << 8) & 16777215) | // [76543210] // [32109876________________] (((((int)in[59 + inPos]) & 255) << 16) & 16777215); out[20 + outPos] = // [76543210] // [________________76543210] (((((int)in[60 + inPos]) & 255) ) & 16777215) | // [76543210] // [________54321098________] (((((int)in[61 + inPos]) & 255) << 8) & 16777215) | // [76543210] // [32109876________________] (((((int)in[62 + inPos]) & 255) << 16) & 16777215); out[21 + outPos] = // [76543210] // [________________76543210] (((((int)in[63 + inPos]) & 255) ) & 16777215) | // [76543210] // [________54321098________] (((((int)in[64 + inPos]) & 255) << 8) & 16777215) | // [76543210] // [32109876________________] (((((int)in[65 + inPos]) & 255) << 16) & 16777215); out[22 + outPos] = // [76543210] // [________________76543210] (((((int)in[66 + inPos]) & 255) ) & 16777215) | // [76543210] // [________54321098________] (((((int)in[67 + inPos]) & 255) << 8) & 16777215) | // [76543210] // [32109876________________] (((((int)in[68 + inPos]) & 255) << 16) & 16777215); out[23 + outPos] = // [76543210] // [________________76543210] (((((int)in[69 + inPos]) & 255) ) & 16777215) | // [76543210] // [________54321098________] (((((int)in[70 + inPos]) & 255) << 8) & 16777215) | // [76543210] // [32109876________________] (((((int)in[71 + inPos]) & 255) << 16) & 16777215); out[24 + outPos] = // [76543210] // [________________76543210] (((((int)in[72 + inPos]) & 255) ) & 16777215) | // [76543210] // [________54321098________] (((((int)in[73 + inPos]) & 255) << 8) & 16777215) | // [76543210] // [32109876________________] (((((int)in[74 + inPos]) & 255) << 16) & 16777215); out[25 + outPos] = // [76543210] // [________________76543210] (((((int)in[75 + inPos]) & 255) ) & 16777215) | // [76543210] // [________54321098________] (((((int)in[76 + inPos]) & 255) << 8) & 16777215) | // [76543210] // [32109876________________] (((((int)in[77 + inPos]) & 255) << 16) & 16777215); out[26 + outPos] = // [76543210] // [________________76543210] (((((int)in[78 + inPos]) & 255) ) & 16777215) | // [76543210] // [________54321098________] (((((int)in[79 + inPos]) & 255) << 8) & 16777215) | // [76543210] // [32109876________________] (((((int)in[80 + inPos]) & 255) << 16) & 16777215); out[27 + outPos] = // [76543210] // [________________76543210] (((((int)in[81 + inPos]) & 255) ) & 16777215) | // [76543210] // [________54321098________] (((((int)in[82 + inPos]) & 255) << 8) & 16777215) | // [76543210] // [32109876________________] (((((int)in[83 + inPos]) & 255) << 16) & 16777215); out[28 + outPos] = // [76543210] // [________________76543210] (((((int)in[84 + inPos]) & 255) ) & 16777215) | // [76543210] // [________54321098________] (((((int)in[85 + inPos]) & 255) << 8) & 16777215) | // [76543210] // [32109876________________] (((((int)in[86 + inPos]) & 255) << 16) & 16777215); out[29 + outPos] = // [76543210] // [________________76543210] (((((int)in[87 + inPos]) & 255) ) & 16777215) | // [76543210] // [________54321098________] (((((int)in[88 + inPos]) & 255) << 8) & 16777215) | // [76543210] // [32109876________________] (((((int)in[89 + inPos]) & 255) << 16) & 16777215); out[30 + outPos] = // [76543210] // [________________76543210] (((((int)in[90 + inPos]) & 255) ) & 16777215) | // [76543210] // [________54321098________] (((((int)in[91 + inPos]) & 255) << 8) & 16777215) | // [76543210] // [32109876________________] (((((int)in[92 + inPos]) & 255) << 16) & 16777215); out[31 + outPos] = // [76543210] // [________________76543210] (((((int)in[93 + inPos]) & 255) ) & 16777215) | // [76543210] // [________54321098________] (((((int)in[94 + inPos]) & 255) << 8) & 16777215) | // [76543210] // [32109876________________] (((((int)in[95 + inPos]) & 255) << 16) & 16777215); } } private static final class Packer25 extends BytePacker { private Packer25() { super(25); } public final void pack8Values(final int[] in, final int inPos, final byte[] out, final int outPos) { out[ 0 + outPos] = (byte)(( // [76543210] // [_________________76543210] ((in[ 0 + inPos] & 33554431))) & 255); out[ 1 + outPos] = (byte)(( // [76543210] // [_________54321098________] ((in[ 0 + inPos] & 33554431) >>> 8)) & 255); out[ 2 + outPos] = (byte)(( // [76543210] // [_32109876________________] ((in[ 0 + inPos] & 33554431) >>> 16)) & 255); out[ 3 + outPos] = (byte)(( // [_______0] // [4________________________] ((in[ 0 + inPos] & 33554431) >>> 24) | // [7654321_] // [__________________6543210] ((in[ 1 + inPos] & 33554431) << 1)) & 255); out[ 4 + outPos] = (byte)(( // [76543210] // [__________43210987_______] ((in[ 1 + inPos] & 33554431) >>> 7)) & 255); out[ 5 + outPos] = (byte)(( // [76543210] // [__21098765_______________] ((in[ 1 + inPos] & 33554431) >>> 15)) & 255); out[ 6 + outPos] = (byte)(( // [______10] // [43_______________________] ((in[ 1 + inPos] & 33554431) >>> 23) | // [765432__] // [___________________543210] ((in[ 2 + inPos] & 33554431) << 2)) & 255); out[ 7 + outPos] = (byte)(( // [76543210] // [___________32109876______] ((in[ 2 + inPos] & 33554431) >>> 6)) & 255); out[ 8 + outPos] = (byte)(( // [76543210] // [___10987654______________] ((in[ 2 + inPos] & 33554431) >>> 14)) & 255); out[ 9 + outPos] = (byte)(( // [_____210] // [432______________________] ((in[ 2 + inPos] & 33554431) >>> 22) | // [76543___] // [____________________43210] ((in[ 3 + inPos] & 33554431) << 3)) & 255); out[10 + outPos] = (byte)(( // [76543210] // [____________21098765_____] ((in[ 3 + inPos] & 33554431) >>> 5)) & 255); out[11 + outPos] = (byte)(( // [76543210] // [____09876543_____________] ((in[ 3 + inPos] & 33554431) >>> 13)) & 255); out[12 + outPos] = (byte)(( // [____3210] // [4321_____________________] ((in[ 3 + inPos] & 33554431) >>> 21) | // [7654____] // [_____________________3210] ((in[ 4 + inPos] & 33554431) << 4)) & 255); out[13 + outPos] = (byte)(( // [76543210] // [_____________10987654____] ((in[ 4 + inPos] & 33554431) >>> 4)) & 255); out[14 + outPos] = (byte)(( // [76543210] // [_____98765432____________] ((in[ 4 + inPos] & 33554431) >>> 12)) & 255); out[15 + outPos] = (byte)(( // [___43210] // [43210____________________] ((in[ 4 + inPos] & 33554431) >>> 20) | // [765_____] // [______________________210] ((in[ 5 + inPos] & 33554431) << 5)) & 255); out[16 + outPos] = (byte)(( // [76543210] // [______________09876543___] ((in[ 5 + inPos] & 33554431) >>> 3)) & 255); out[17 + outPos] = (byte)(( // [76543210] // [______87654321___________] ((in[ 5 + inPos] & 33554431) >>> 11)) & 255); out[18 + outPos] = (byte)(( // [__543210] // [432109___________________] ((in[ 5 + inPos] & 33554431) >>> 19) | // [76______] // [_______________________10] ((in[ 6 + inPos] & 33554431) << 6)) & 255); out[19 + outPos] = (byte)(( // [76543210] // [_______________98765432__] ((in[ 6 + inPos] & 33554431) >>> 2)) & 255); out[20 + outPos] = (byte)(( // [76543210] // [_______76543210__________] ((in[ 6 + inPos] & 33554431) >>> 10)) & 255); out[21 + outPos] = (byte)(( // [_6543210] // [4321098__________________] ((in[ 6 + inPos] & 33554431) >>> 18) | // [7_______] // [________________________0] ((in[ 7 + inPos] & 33554431) << 7)) & 255); out[22 + outPos] = (byte)(( // [76543210] // [________________87654321_] ((in[ 7 + inPos] & 33554431) >>> 1)) & 255); out[23 + outPos] = (byte)(( // [76543210] // [________65432109_________] ((in[ 7 + inPos] & 33554431) >>> 9)) & 255); out[24 + outPos] = (byte)(( // [76543210] // [43210987_________________] ((in[ 7 + inPos] & 33554431) >>> 17)) & 255); } public final void pack32Values(final int[] in, final int inPos, final byte[] out, final int outPos) { out[ 0 + outPos] = (byte)(( // [76543210] // [_________________76543210] ((in[ 0 + inPos] & 33554431))) & 255); out[ 1 + outPos] = (byte)(( // [76543210] // [_________54321098________] ((in[ 0 + inPos] & 33554431) >>> 8)) & 255); out[ 2 + outPos] = (byte)(( // [76543210] // [_32109876________________] ((in[ 0 + inPos] & 33554431) >>> 16)) & 255); out[ 3 + outPos] = (byte)(( // [_______0] // [4________________________] ((in[ 0 + inPos] & 33554431) >>> 24) | // [7654321_] // [__________________6543210] ((in[ 1 + inPos] & 33554431) << 1)) & 255); out[ 4 + outPos] = (byte)(( // [76543210] // [__________43210987_______] ((in[ 1 + inPos] & 33554431) >>> 7)) & 255); out[ 5 + outPos] = (byte)(( // [76543210] // [__21098765_______________] ((in[ 1 + inPos] & 33554431) >>> 15)) & 255); out[ 6 + outPos] = (byte)(( // [______10] // [43_______________________] ((in[ 1 + inPos] & 33554431) >>> 23) | // [765432__] // [___________________543210] ((in[ 2 + inPos] & 33554431) << 2)) & 255); out[ 7 + outPos] = (byte)(( // [76543210] // [___________32109876______] ((in[ 2 + inPos] & 33554431) >>> 6)) & 255); out[ 8 + outPos] = (byte)(( // [76543210] // [___10987654______________] ((in[ 2 + inPos] & 33554431) >>> 14)) & 255); out[ 9 + outPos] = (byte)(( // [_____210] // [432______________________] ((in[ 2 + inPos] & 33554431) >>> 22) | // [76543___] // [____________________43210] ((in[ 3 + inPos] & 33554431) << 3)) & 255); out[10 + outPos] = (byte)(( // [76543210] // [____________21098765_____] ((in[ 3 + inPos] & 33554431) >>> 5)) & 255); out[11 + outPos] = (byte)(( // [76543210] // [____09876543_____________] ((in[ 3 + inPos] & 33554431) >>> 13)) & 255); out[12 + outPos] = (byte)(( // [____3210] // [4321_____________________] ((in[ 3 + inPos] & 33554431) >>> 21) | // [7654____] // [_____________________3210] ((in[ 4 + inPos] & 33554431) << 4)) & 255); out[13 + outPos] = (byte)(( // [76543210] // [_____________10987654____] ((in[ 4 + inPos] & 33554431) >>> 4)) & 255); out[14 + outPos] = (byte)(( // [76543210] // [_____98765432____________] ((in[ 4 + inPos] & 33554431) >>> 12)) & 255); out[15 + outPos] = (byte)(( // [___43210] // [43210____________________] ((in[ 4 + inPos] & 33554431) >>> 20) | // [765_____] // [______________________210] ((in[ 5 + inPos] & 33554431) << 5)) & 255); out[16 + outPos] = (byte)(( // [76543210] // [______________09876543___] ((in[ 5 + inPos] & 33554431) >>> 3)) & 255); out[17 + outPos] = (byte)(( // [76543210] // [______87654321___________] ((in[ 5 + inPos] & 33554431) >>> 11)) & 255); out[18 + outPos] = (byte)(( // [__543210] // [432109___________________] ((in[ 5 + inPos] & 33554431) >>> 19) | // [76______] // [_______________________10] ((in[ 6 + inPos] & 33554431) << 6)) & 255); out[19 + outPos] = (byte)(( // [76543210] // [_______________98765432__] ((in[ 6 + inPos] & 33554431) >>> 2)) & 255); out[20 + outPos] = (byte)(( // [76543210] // [_______76543210__________] ((in[ 6 + inPos] & 33554431) >>> 10)) & 255); out[21 + outPos] = (byte)(( // [_6543210] // [4321098__________________] ((in[ 6 + inPos] & 33554431) >>> 18) | // [7_______] // [________________________0] ((in[ 7 + inPos] & 33554431) << 7)) & 255); out[22 + outPos] = (byte)(( // [76543210] // [________________87654321_] ((in[ 7 + inPos] & 33554431) >>> 1)) & 255); out[23 + outPos] = (byte)(( // [76543210] // [________65432109_________] ((in[ 7 + inPos] & 33554431) >>> 9)) & 255); out[24 + outPos] = (byte)(( // [76543210] // [43210987_________________] ((in[ 7 + inPos] & 33554431) >>> 17)) & 255); out[25 + outPos] = (byte)(( // [76543210] // [_________________76543210] ((in[ 8 + inPos] & 33554431))) & 255); out[26 + outPos] = (byte)(( // [76543210] // [_________54321098________] ((in[ 8 + inPos] & 33554431) >>> 8)) & 255); out[27 + outPos] = (byte)(( // [76543210] // [_32109876________________] ((in[ 8 + inPos] & 33554431) >>> 16)) & 255); out[28 + outPos] = (byte)(( // [_______0] // [4________________________] ((in[ 8 + inPos] & 33554431) >>> 24) | // [7654321_] // [__________________6543210] ((in[ 9 + inPos] & 33554431) << 1)) & 255); out[29 + outPos] = (byte)(( // [76543210] // [__________43210987_______] ((in[ 9 + inPos] & 33554431) >>> 7)) & 255); out[30 + outPos] = (byte)(( // [76543210] // [__21098765_______________] ((in[ 9 + inPos] & 33554431) >>> 15)) & 255); out[31 + outPos] = (byte)(( // [______10] // [43_______________________] ((in[ 9 + inPos] & 33554431) >>> 23) | // [765432__] // [___________________543210] ((in[10 + inPos] & 33554431) << 2)) & 255); out[32 + outPos] = (byte)(( // [76543210] // [___________32109876______] ((in[10 + inPos] & 33554431) >>> 6)) & 255); out[33 + outPos] = (byte)(( // [76543210] // [___10987654______________] ((in[10 + inPos] & 33554431) >>> 14)) & 255); out[34 + outPos] = (byte)(( // [_____210] // [432______________________] ((in[10 + inPos] & 33554431) >>> 22) | // [76543___] // [____________________43210] ((in[11 + inPos] & 33554431) << 3)) & 255); out[35 + outPos] = (byte)(( // [76543210] // [____________21098765_____] ((in[11 + inPos] & 33554431) >>> 5)) & 255); out[36 + outPos] = (byte)(( // [76543210] // [____09876543_____________] ((in[11 + inPos] & 33554431) >>> 13)) & 255); out[37 + outPos] = (byte)(( // [____3210] // [4321_____________________] ((in[11 + inPos] & 33554431) >>> 21) | // [7654____] // [_____________________3210] ((in[12 + inPos] & 33554431) << 4)) & 255); out[38 + outPos] = (byte)(( // [76543210] // [_____________10987654____] ((in[12 + inPos] & 33554431) >>> 4)) & 255); out[39 + outPos] = (byte)(( // [76543210] // [_____98765432____________] ((in[12 + inPos] & 33554431) >>> 12)) & 255); out[40 + outPos] = (byte)(( // [___43210] // [43210____________________] ((in[12 + inPos] & 33554431) >>> 20) | // [765_____] // [______________________210] ((in[13 + inPos] & 33554431) << 5)) & 255); out[41 + outPos] = (byte)(( // [76543210] // [______________09876543___] ((in[13 + inPos] & 33554431) >>> 3)) & 255); out[42 + outPos] = (byte)(( // [76543210] // [______87654321___________] ((in[13 + inPos] & 33554431) >>> 11)) & 255); out[43 + outPos] = (byte)(( // [__543210] // [432109___________________] ((in[13 + inPos] & 33554431) >>> 19) | // [76______] // [_______________________10] ((in[14 + inPos] & 33554431) << 6)) & 255); out[44 + outPos] = (byte)(( // [76543210] // [_______________98765432__] ((in[14 + inPos] & 33554431) >>> 2)) & 255); out[45 + outPos] = (byte)(( // [76543210] // [_______76543210__________] ((in[14 + inPos] & 33554431) >>> 10)) & 255); out[46 + outPos] = (byte)(( // [_6543210] // [4321098__________________] ((in[14 + inPos] & 33554431) >>> 18) | // [7_______] // [________________________0] ((in[15 + inPos] & 33554431) << 7)) & 255); out[47 + outPos] = (byte)(( // [76543210] // [________________87654321_] ((in[15 + inPos] & 33554431) >>> 1)) & 255); out[48 + outPos] = (byte)(( // [76543210] // [________65432109_________] ((in[15 + inPos] & 33554431) >>> 9)) & 255); out[49 + outPos] = (byte)(( // [76543210] // [43210987_________________] ((in[15 + inPos] & 33554431) >>> 17)) & 255); out[50 + outPos] = (byte)(( // [76543210] // [_________________76543210] ((in[16 + inPos] & 33554431))) & 255); out[51 + outPos] = (byte)(( // [76543210] // [_________54321098________] ((in[16 + inPos] & 33554431) >>> 8)) & 255); out[52 + outPos] = (byte)(( // [76543210] // [_32109876________________] ((in[16 + inPos] & 33554431) >>> 16)) & 255); out[53 + outPos] = (byte)(( // [_______0] // [4________________________] ((in[16 + inPos] & 33554431) >>> 24) | // [7654321_] // [__________________6543210] ((in[17 + inPos] & 33554431) << 1)) & 255); out[54 + outPos] = (byte)(( // [76543210] // [__________43210987_______] ((in[17 + inPos] & 33554431) >>> 7)) & 255); out[55 + outPos] = (byte)(( // [76543210] // [__21098765_______________] ((in[17 + inPos] & 33554431) >>> 15)) & 255); out[56 + outPos] = (byte)(( // [______10] // [43_______________________] ((in[17 + inPos] & 33554431) >>> 23) | // [765432__] // [___________________543210] ((in[18 + inPos] & 33554431) << 2)) & 255); out[57 + outPos] = (byte)(( // [76543210] // [___________32109876______] ((in[18 + inPos] & 33554431) >>> 6)) & 255); out[58 + outPos] = (byte)(( // [76543210] // [___10987654______________] ((in[18 + inPos] & 33554431) >>> 14)) & 255); out[59 + outPos] = (byte)(( // [_____210] // [432______________________] ((in[18 + inPos] & 33554431) >>> 22) | // [76543___] // [____________________43210] ((in[19 + inPos] & 33554431) << 3)) & 255); out[60 + outPos] = (byte)(( // [76543210] // [____________21098765_____] ((in[19 + inPos] & 33554431) >>> 5)) & 255); out[61 + outPos] = (byte)(( // [76543210] // [____09876543_____________] ((in[19 + inPos] & 33554431) >>> 13)) & 255); out[62 + outPos] = (byte)(( // [____3210] // [4321_____________________] ((in[19 + inPos] & 33554431) >>> 21) | // [7654____] // [_____________________3210] ((in[20 + inPos] & 33554431) << 4)) & 255); out[63 + outPos] = (byte)(( // [76543210] // [_____________10987654____] ((in[20 + inPos] & 33554431) >>> 4)) & 255); out[64 + outPos] = (byte)(( // [76543210] // [_____98765432____________] ((in[20 + inPos] & 33554431) >>> 12)) & 255); out[65 + outPos] = (byte)(( // [___43210] // [43210____________________] ((in[20 + inPos] & 33554431) >>> 20) | // [765_____] // [______________________210] ((in[21 + inPos] & 33554431) << 5)) & 255); out[66 + outPos] = (byte)(( // [76543210] // [______________09876543___] ((in[21 + inPos] & 33554431) >>> 3)) & 255); out[67 + outPos] = (byte)(( // [76543210] // [______87654321___________] ((in[21 + inPos] & 33554431) >>> 11)) & 255); out[68 + outPos] = (byte)(( // [__543210] // [432109___________________] ((in[21 + inPos] & 33554431) >>> 19) | // [76______] // [_______________________10] ((in[22 + inPos] & 33554431) << 6)) & 255); out[69 + outPos] = (byte)(( // [76543210] // [_______________98765432__] ((in[22 + inPos] & 33554431) >>> 2)) & 255); out[70 + outPos] = (byte)(( // [76543210] // [_______76543210__________] ((in[22 + inPos] & 33554431) >>> 10)) & 255); out[71 + outPos] = (byte)(( // [_6543210] // [4321098__________________] ((in[22 + inPos] & 33554431) >>> 18) | // [7_______] // [________________________0] ((in[23 + inPos] & 33554431) << 7)) & 255); out[72 + outPos] = (byte)(( // [76543210] // [________________87654321_] ((in[23 + inPos] & 33554431) >>> 1)) & 255); out[73 + outPos] = (byte)(( // [76543210] // [________65432109_________] ((in[23 + inPos] & 33554431) >>> 9)) & 255); out[74 + outPos] = (byte)(( // [76543210] // [43210987_________________] ((in[23 + inPos] & 33554431) >>> 17)) & 255); out[75 + outPos] = (byte)(( // [76543210] // [_________________76543210] ((in[24 + inPos] & 33554431))) & 255); out[76 + outPos] = (byte)(( // [76543210] // [_________54321098________] ((in[24 + inPos] & 33554431) >>> 8)) & 255); out[77 + outPos] = (byte)(( // [76543210] // [_32109876________________] ((in[24 + inPos] & 33554431) >>> 16)) & 255); out[78 + outPos] = (byte)(( // [_______0] // [4________________________] ((in[24 + inPos] & 33554431) >>> 24) | // [7654321_] // [__________________6543210] ((in[25 + inPos] & 33554431) << 1)) & 255); out[79 + outPos] = (byte)(( // [76543210] // [__________43210987_______] ((in[25 + inPos] & 33554431) >>> 7)) & 255); out[80 + outPos] = (byte)(( // [76543210] // [__21098765_______________] ((in[25 + inPos] & 33554431) >>> 15)) & 255); out[81 + outPos] = (byte)(( // [______10] // [43_______________________] ((in[25 + inPos] & 33554431) >>> 23) | // [765432__] // [___________________543210] ((in[26 + inPos] & 33554431) << 2)) & 255); out[82 + outPos] = (byte)(( // [76543210] // [___________32109876______] ((in[26 + inPos] & 33554431) >>> 6)) & 255); out[83 + outPos] = (byte)(( // [76543210] // [___10987654______________] ((in[26 + inPos] & 33554431) >>> 14)) & 255); out[84 + outPos] = (byte)(( // [_____210] // [432______________________] ((in[26 + inPos] & 33554431) >>> 22) | // [76543___] // [____________________43210] ((in[27 + inPos] & 33554431) << 3)) & 255); out[85 + outPos] = (byte)(( // [76543210] // [____________21098765_____] ((in[27 + inPos] & 33554431) >>> 5)) & 255); out[86 + outPos] = (byte)(( // [76543210] // [____09876543_____________] ((in[27 + inPos] & 33554431) >>> 13)) & 255); out[87 + outPos] = (byte)(( // [____3210] // [4321_____________________] ((in[27 + inPos] & 33554431) >>> 21) | // [7654____] // [_____________________3210] ((in[28 + inPos] & 33554431) << 4)) & 255); out[88 + outPos] = (byte)(( // [76543210] // [_____________10987654____] ((in[28 + inPos] & 33554431) >>> 4)) & 255); out[89 + outPos] = (byte)(( // [76543210] // [_____98765432____________] ((in[28 + inPos] & 33554431) >>> 12)) & 255); out[90 + outPos] = (byte)(( // [___43210] // [43210____________________] ((in[28 + inPos] & 33554431) >>> 20) | // [765_____] // [______________________210] ((in[29 + inPos] & 33554431) << 5)) & 255); out[91 + outPos] = (byte)(( // [76543210] // [______________09876543___] ((in[29 + inPos] & 33554431) >>> 3)) & 255); out[92 + outPos] = (byte)(( // [76543210] // [______87654321___________] ((in[29 + inPos] & 33554431) >>> 11)) & 255); out[93 + outPos] = (byte)(( // [__543210] // [432109___________________] ((in[29 + inPos] & 33554431) >>> 19) | // [76______] // [_______________________10] ((in[30 + inPos] & 33554431) << 6)) & 255); out[94 + outPos] = (byte)(( // [76543210] // [_______________98765432__] ((in[30 + inPos] & 33554431) >>> 2)) & 255); out[95 + outPos] = (byte)(( // [76543210] // [_______76543210__________] ((in[30 + inPos] & 33554431) >>> 10)) & 255); out[96 + outPos] = (byte)(( // [_6543210] // [4321098__________________] ((in[30 + inPos] & 33554431) >>> 18) | // [7_______] // [________________________0] ((in[31 + inPos] & 33554431) << 7)) & 255); out[97 + outPos] = (byte)(( // [76543210] // [________________87654321_] ((in[31 + inPos] & 33554431) >>> 1)) & 255); out[98 + outPos] = (byte)(( // [76543210] // [________65432109_________] ((in[31 + inPos] & 33554431) >>> 9)) & 255); out[99 + outPos] = (byte)(( // [76543210] // [43210987_________________] ((in[31 + inPos] & 33554431) >>> 17)) & 255); } public final void unpack8Values(final byte[] in, final int inPos, final int[] out, final int outPos) { out[ 0 + outPos] = // [76543210] // [_________________76543210] (((((int)in[ 0 + inPos]) & 255) ) & 33554431) | // [76543210] // [_________54321098________] (((((int)in[ 1 + inPos]) & 255) << 8) & 33554431) | // [76543210] // [_32109876________________] (((((int)in[ 2 + inPos]) & 255) << 16) & 33554431) | // [_______0] // [4________________________] (((((int)in[ 3 + inPos]) & 255) << 24) & 33554431); out[ 1 + outPos] = // [7654321_] // [__________________6543210] (((((int)in[ 3 + inPos]) & 255) >>> 1) & 33554431) | // [76543210] // [__________43210987_______] (((((int)in[ 4 + inPos]) & 255) << 7) & 33554431) | // [76543210] // [__21098765_______________] (((((int)in[ 5 + inPos]) & 255) << 15) & 33554431) | // [______10] // [43_______________________] (((((int)in[ 6 + inPos]) & 255) << 23) & 33554431); out[ 2 + outPos] = // [765432__] // [___________________543210] (((((int)in[ 6 + inPos]) & 255) >>> 2) & 33554431) | // [76543210] // [___________32109876______] (((((int)in[ 7 + inPos]) & 255) << 6) & 33554431) | // [76543210] // [___10987654______________] (((((int)in[ 8 + inPos]) & 255) << 14) & 33554431) | // [_____210] // [432______________________] (((((int)in[ 9 + inPos]) & 255) << 22) & 33554431); out[ 3 + outPos] = // [76543___] // [____________________43210] (((((int)in[ 9 + inPos]) & 255) >>> 3) & 33554431) | // [76543210] // [____________21098765_____] (((((int)in[10 + inPos]) & 255) << 5) & 33554431) | // [76543210] // [____09876543_____________] (((((int)in[11 + inPos]) & 255) << 13) & 33554431) | // [____3210] // [4321_____________________] (((((int)in[12 + inPos]) & 255) << 21) & 33554431); out[ 4 + outPos] = // [7654____] // [_____________________3210] (((((int)in[12 + inPos]) & 255) >>> 4) & 33554431) | // [76543210] // [_____________10987654____] (((((int)in[13 + inPos]) & 255) << 4) & 33554431) | // [76543210] // [_____98765432____________] (((((int)in[14 + inPos]) & 255) << 12) & 33554431) | // [___43210] // [43210____________________] (((((int)in[15 + inPos]) & 255) << 20) & 33554431); out[ 5 + outPos] = // [765_____] // [______________________210] (((((int)in[15 + inPos]) & 255) >>> 5) & 33554431) | // [76543210] // [______________09876543___] (((((int)in[16 + inPos]) & 255) << 3) & 33554431) | // [76543210] // [______87654321___________] (((((int)in[17 + inPos]) & 255) << 11) & 33554431) | // [__543210] // [432109___________________] (((((int)in[18 + inPos]) & 255) << 19) & 33554431); out[ 6 + outPos] = // [76______] // [_______________________10] (((((int)in[18 + inPos]) & 255) >>> 6) & 33554431) | // [76543210] // [_______________98765432__] (((((int)in[19 + inPos]) & 255) << 2) & 33554431) | // [76543210] // [_______76543210__________] (((((int)in[20 + inPos]) & 255) << 10) & 33554431) | // [_6543210] // [4321098__________________] (((((int)in[21 + inPos]) & 255) << 18) & 33554431); out[ 7 + outPos] = // [7_______] // [________________________0] (((((int)in[21 + inPos]) & 255) >>> 7) & 33554431) | // [76543210] // [________________87654321_] (((((int)in[22 + inPos]) & 255) << 1) & 33554431) | // [76543210] // [________65432109_________] (((((int)in[23 + inPos]) & 255) << 9) & 33554431) | // [76543210] // [43210987_________________] (((((int)in[24 + inPos]) & 255) << 17) & 33554431); } public final void unpack32Values(final byte[] in, final int inPos, final int[] out, final int outPos) { out[ 0 + outPos] = // [76543210] // [_________________76543210] (((((int)in[ 0 + inPos]) & 255) ) & 33554431) | // [76543210] // [_________54321098________] (((((int)in[ 1 + inPos]) & 255) << 8) & 33554431) | // [76543210] // [_32109876________________] (((((int)in[ 2 + inPos]) & 255) << 16) & 33554431) | // [_______0] // [4________________________] (((((int)in[ 3 + inPos]) & 255) << 24) & 33554431); out[ 1 + outPos] = // [7654321_] // [__________________6543210] (((((int)in[ 3 + inPos]) & 255) >>> 1) & 33554431) | // [76543210] // [__________43210987_______] (((((int)in[ 4 + inPos]) & 255) << 7) & 33554431) | // [76543210] // [__21098765_______________] (((((int)in[ 5 + inPos]) & 255) << 15) & 33554431) | // [______10] // [43_______________________] (((((int)in[ 6 + inPos]) & 255) << 23) & 33554431); out[ 2 + outPos] = // [765432__] // [___________________543210] (((((int)in[ 6 + inPos]) & 255) >>> 2) & 33554431) | // [76543210] // [___________32109876______] (((((int)in[ 7 + inPos]) & 255) << 6) & 33554431) | // [76543210] // [___10987654______________] (((((int)in[ 8 + inPos]) & 255) << 14) & 33554431) | // [_____210] // [432______________________] (((((int)in[ 9 + inPos]) & 255) << 22) & 33554431); out[ 3 + outPos] = // [76543___] // [____________________43210] (((((int)in[ 9 + inPos]) & 255) >>> 3) & 33554431) | // [76543210] // [____________21098765_____] (((((int)in[10 + inPos]) & 255) << 5) & 33554431) | // [76543210] // [____09876543_____________] (((((int)in[11 + inPos]) & 255) << 13) & 33554431) | // [____3210] // [4321_____________________] (((((int)in[12 + inPos]) & 255) << 21) & 33554431); out[ 4 + outPos] = // [7654____] // [_____________________3210] (((((int)in[12 + inPos]) & 255) >>> 4) & 33554431) | // [76543210] // [_____________10987654____] (((((int)in[13 + inPos]) & 255) << 4) & 33554431) | // [76543210] // [_____98765432____________] (((((int)in[14 + inPos]) & 255) << 12) & 33554431) | // [___43210] // [43210____________________] (((((int)in[15 + inPos]) & 255) << 20) & 33554431); out[ 5 + outPos] = // [765_____] // [______________________210] (((((int)in[15 + inPos]) & 255) >>> 5) & 33554431) | // [76543210] // [______________09876543___] (((((int)in[16 + inPos]) & 255) << 3) & 33554431) | // [76543210] // [______87654321___________] (((((int)in[17 + inPos]) & 255) << 11) & 33554431) | // [__543210] // [432109___________________] (((((int)in[18 + inPos]) & 255) << 19) & 33554431); out[ 6 + outPos] = // [76______] // [_______________________10] (((((int)in[18 + inPos]) & 255) >>> 6) & 33554431) | // [76543210] // [_______________98765432__] (((((int)in[19 + inPos]) & 255) << 2) & 33554431) | // [76543210] // [_______76543210__________] (((((int)in[20 + inPos]) & 255) << 10) & 33554431) | // [_6543210] // [4321098__________________] (((((int)in[21 + inPos]) & 255) << 18) & 33554431); out[ 7 + outPos] = // [7_______] // [________________________0] (((((int)in[21 + inPos]) & 255) >>> 7) & 33554431) | // [76543210] // [________________87654321_] (((((int)in[22 + inPos]) & 255) << 1) & 33554431) | // [76543210] // [________65432109_________] (((((int)in[23 + inPos]) & 255) << 9) & 33554431) | // [76543210] // [43210987_________________] (((((int)in[24 + inPos]) & 255) << 17) & 33554431); out[ 8 + outPos] = // [76543210] // [_________________76543210] (((((int)in[25 + inPos]) & 255) ) & 33554431) | // [76543210] // [_________54321098________] (((((int)in[26 + inPos]) & 255) << 8) & 33554431) | // [76543210] // [_32109876________________] (((((int)in[27 + inPos]) & 255) << 16) & 33554431) | // [_______0] // [4________________________] (((((int)in[28 + inPos]) & 255) << 24) & 33554431); out[ 9 + outPos] = // [7654321_] // [__________________6543210] (((((int)in[28 + inPos]) & 255) >>> 1) & 33554431) | // [76543210] // [__________43210987_______] (((((int)in[29 + inPos]) & 255) << 7) & 33554431) | // [76543210] // [__21098765_______________] (((((int)in[30 + inPos]) & 255) << 15) & 33554431) | // [______10] // [43_______________________] (((((int)in[31 + inPos]) & 255) << 23) & 33554431); out[10 + outPos] = // [765432__] // [___________________543210] (((((int)in[31 + inPos]) & 255) >>> 2) & 33554431) | // [76543210] // [___________32109876______] (((((int)in[32 + inPos]) & 255) << 6) & 33554431) | // [76543210] // [___10987654______________] (((((int)in[33 + inPos]) & 255) << 14) & 33554431) | // [_____210] // [432______________________] (((((int)in[34 + inPos]) & 255) << 22) & 33554431); out[11 + outPos] = // [76543___] // [____________________43210] (((((int)in[34 + inPos]) & 255) >>> 3) & 33554431) | // [76543210] // [____________21098765_____] (((((int)in[35 + inPos]) & 255) << 5) & 33554431) | // [76543210] // [____09876543_____________] (((((int)in[36 + inPos]) & 255) << 13) & 33554431) | // [____3210] // [4321_____________________] (((((int)in[37 + inPos]) & 255) << 21) & 33554431); out[12 + outPos] = // [7654____] // [_____________________3210] (((((int)in[37 + inPos]) & 255) >>> 4) & 33554431) | // [76543210] // [_____________10987654____] (((((int)in[38 + inPos]) & 255) << 4) & 33554431) | // [76543210] // [_____98765432____________] (((((int)in[39 + inPos]) & 255) << 12) & 33554431) | // [___43210] // [43210____________________] (((((int)in[40 + inPos]) & 255) << 20) & 33554431); out[13 + outPos] = // [765_____] // [______________________210] (((((int)in[40 + inPos]) & 255) >>> 5) & 33554431) | // [76543210] // [______________09876543___] (((((int)in[41 + inPos]) & 255) << 3) & 33554431) | // [76543210] // [______87654321___________] (((((int)in[42 + inPos]) & 255) << 11) & 33554431) | // [__543210] // [432109___________________] (((((int)in[43 + inPos]) & 255) << 19) & 33554431); out[14 + outPos] = // [76______] // [_______________________10] (((((int)in[43 + inPos]) & 255) >>> 6) & 33554431) | // [76543210] // [_______________98765432__] (((((int)in[44 + inPos]) & 255) << 2) & 33554431) | // [76543210] // [_______76543210__________] (((((int)in[45 + inPos]) & 255) << 10) & 33554431) | // [_6543210] // [4321098__________________] (((((int)in[46 + inPos]) & 255) << 18) & 33554431); out[15 + outPos] = // [7_______] // [________________________0] (((((int)in[46 + inPos]) & 255) >>> 7) & 33554431) | // [76543210] // [________________87654321_] (((((int)in[47 + inPos]) & 255) << 1) & 33554431) | // [76543210] // [________65432109_________] (((((int)in[48 + inPos]) & 255) << 9) & 33554431) | // [76543210] // [43210987_________________] (((((int)in[49 + inPos]) & 255) << 17) & 33554431); out[16 + outPos] = // [76543210] // [_________________76543210] (((((int)in[50 + inPos]) & 255) ) & 33554431) | // [76543210] // [_________54321098________] (((((int)in[51 + inPos]) & 255) << 8) & 33554431) | // [76543210] // [_32109876________________] (((((int)in[52 + inPos]) & 255) << 16) & 33554431) | // [_______0] // [4________________________] (((((int)in[53 + inPos]) & 255) << 24) & 33554431); out[17 + outPos] = // [7654321_] // [__________________6543210] (((((int)in[53 + inPos]) & 255) >>> 1) & 33554431) | // [76543210] // [__________43210987_______] (((((int)in[54 + inPos]) & 255) << 7) & 33554431) | // [76543210] // [__21098765_______________] (((((int)in[55 + inPos]) & 255) << 15) & 33554431) | // [______10] // [43_______________________] (((((int)in[56 + inPos]) & 255) << 23) & 33554431); out[18 + outPos] = // [765432__] // [___________________543210] (((((int)in[56 + inPos]) & 255) >>> 2) & 33554431) | // [76543210] // [___________32109876______] (((((int)in[57 + inPos]) & 255) << 6) & 33554431) | // [76543210] // [___10987654______________] (((((int)in[58 + inPos]) & 255) << 14) & 33554431) | // [_____210] // [432______________________] (((((int)in[59 + inPos]) & 255) << 22) & 33554431); out[19 + outPos] = // [76543___] // [____________________43210] (((((int)in[59 + inPos]) & 255) >>> 3) & 33554431) | // [76543210] // [____________21098765_____] (((((int)in[60 + inPos]) & 255) << 5) & 33554431) | // [76543210] // [____09876543_____________] (((((int)in[61 + inPos]) & 255) << 13) & 33554431) | // [____3210] // [4321_____________________] (((((int)in[62 + inPos]) & 255) << 21) & 33554431); out[20 + outPos] = // [7654____] // [_____________________3210] (((((int)in[62 + inPos]) & 255) >>> 4) & 33554431) | // [76543210] // [_____________10987654____] (((((int)in[63 + inPos]) & 255) << 4) & 33554431) | // [76543210] // [_____98765432____________] (((((int)in[64 + inPos]) & 255) << 12) & 33554431) | // [___43210] // [43210____________________] (((((int)in[65 + inPos]) & 255) << 20) & 33554431); out[21 + outPos] = // [765_____] // [______________________210] (((((int)in[65 + inPos]) & 255) >>> 5) & 33554431) | // [76543210] // [______________09876543___] (((((int)in[66 + inPos]) & 255) << 3) & 33554431) | // [76543210] // [______87654321___________] (((((int)in[67 + inPos]) & 255) << 11) & 33554431) | // [__543210] // [432109___________________] (((((int)in[68 + inPos]) & 255) << 19) & 33554431); out[22 + outPos] = // [76______] // [_______________________10] (((((int)in[68 + inPos]) & 255) >>> 6) & 33554431) | // [76543210] // [_______________98765432__] (((((int)in[69 + inPos]) & 255) << 2) & 33554431) | // [76543210] // [_______76543210__________] (((((int)in[70 + inPos]) & 255) << 10) & 33554431) | // [_6543210] // [4321098__________________] (((((int)in[71 + inPos]) & 255) << 18) & 33554431); out[23 + outPos] = // [7_______] // [________________________0] (((((int)in[71 + inPos]) & 255) >>> 7) & 33554431) | // [76543210] // [________________87654321_] (((((int)in[72 + inPos]) & 255) << 1) & 33554431) | // [76543210] // [________65432109_________] (((((int)in[73 + inPos]) & 255) << 9) & 33554431) | // [76543210] // [43210987_________________] (((((int)in[74 + inPos]) & 255) << 17) & 33554431); out[24 + outPos] = // [76543210] // [_________________76543210] (((((int)in[75 + inPos]) & 255) ) & 33554431) | // [76543210] // [_________54321098________] (((((int)in[76 + inPos]) & 255) << 8) & 33554431) | // [76543210] // [_32109876________________] (((((int)in[77 + inPos]) & 255) << 16) & 33554431) | // [_______0] // [4________________________] (((((int)in[78 + inPos]) & 255) << 24) & 33554431); out[25 + outPos] = // [7654321_] // [__________________6543210] (((((int)in[78 + inPos]) & 255) >>> 1) & 33554431) | // [76543210] // [__________43210987_______] (((((int)in[79 + inPos]) & 255) << 7) & 33554431) | // [76543210] // [__21098765_______________] (((((int)in[80 + inPos]) & 255) << 15) & 33554431) | // [______10] // [43_______________________] (((((int)in[81 + inPos]) & 255) << 23) & 33554431); out[26 + outPos] = // [765432__] // [___________________543210] (((((int)in[81 + inPos]) & 255) >>> 2) & 33554431) | // [76543210] // [___________32109876______] (((((int)in[82 + inPos]) & 255) << 6) & 33554431) | // [76543210] // [___10987654______________] (((((int)in[83 + inPos]) & 255) << 14) & 33554431) | // [_____210] // [432______________________] (((((int)in[84 + inPos]) & 255) << 22) & 33554431); out[27 + outPos] = // [76543___] // [____________________43210] (((((int)in[84 + inPos]) & 255) >>> 3) & 33554431) | // [76543210] // [____________21098765_____] (((((int)in[85 + inPos]) & 255) << 5) & 33554431) | // [76543210] // [____09876543_____________] (((((int)in[86 + inPos]) & 255) << 13) & 33554431) | // [____3210] // [4321_____________________] (((((int)in[87 + inPos]) & 255) << 21) & 33554431); out[28 + outPos] = // [7654____] // [_____________________3210] (((((int)in[87 + inPos]) & 255) >>> 4) & 33554431) | // [76543210] // [_____________10987654____] (((((int)in[88 + inPos]) & 255) << 4) & 33554431) | // [76543210] // [_____98765432____________] (((((int)in[89 + inPos]) & 255) << 12) & 33554431) | // [___43210] // [43210____________________] (((((int)in[90 + inPos]) & 255) << 20) & 33554431); out[29 + outPos] = // [765_____] // [______________________210] (((((int)in[90 + inPos]) & 255) >>> 5) & 33554431) | // [76543210] // [______________09876543___] (((((int)in[91 + inPos]) & 255) << 3) & 33554431) | // [76543210] // [______87654321___________] (((((int)in[92 + inPos]) & 255) << 11) & 33554431) | // [__543210] // [432109___________________] (((((int)in[93 + inPos]) & 255) << 19) & 33554431); out[30 + outPos] = // [76______] // [_______________________10] (((((int)in[93 + inPos]) & 255) >>> 6) & 33554431) | // [76543210] // [_______________98765432__] (((((int)in[94 + inPos]) & 255) << 2) & 33554431) | // [76543210] // [_______76543210__________] (((((int)in[95 + inPos]) & 255) << 10) & 33554431) | // [_6543210] // [4321098__________________] (((((int)in[96 + inPos]) & 255) << 18) & 33554431); out[31 + outPos] = // [7_______] // [________________________0] (((((int)in[96 + inPos]) & 255) >>> 7) & 33554431) | // [76543210] // [________________87654321_] (((((int)in[97 + inPos]) & 255) << 1) & 33554431) | // [76543210] // [________65432109_________] (((((int)in[98 + inPos]) & 255) << 9) & 33554431) | // [76543210] // [43210987_________________] (((((int)in[99 + inPos]) & 255) << 17) & 33554431); } } private static final class Packer26 extends BytePacker { private Packer26() { super(26); } public final void pack8Values(final int[] in, final int inPos, final byte[] out, final int outPos) { out[ 0 + outPos] = (byte)(( // [76543210] // [__________________76543210] ((in[ 0 + inPos] & 67108863))) & 255); out[ 1 + outPos] = (byte)(( // [76543210] // [__________54321098________] ((in[ 0 + inPos] & 67108863) >>> 8)) & 255); out[ 2 + outPos] = (byte)(( // [76543210] // [__32109876________________] ((in[ 0 + inPos] & 67108863) >>> 16)) & 255); out[ 3 + outPos] = (byte)(( // [______10] // [54________________________] ((in[ 0 + inPos] & 67108863) >>> 24) | // [765432__] // [____________________543210] ((in[ 1 + inPos] & 67108863) << 2)) & 255); out[ 4 + outPos] = (byte)(( // [76543210] // [____________32109876______] ((in[ 1 + inPos] & 67108863) >>> 6)) & 255); out[ 5 + outPos] = (byte)(( // [76543210] // [____10987654______________] ((in[ 1 + inPos] & 67108863) >>> 14)) & 255); out[ 6 + outPos] = (byte)(( // [____3210] // [5432______________________] ((in[ 1 + inPos] & 67108863) >>> 22) | // [7654____] // [______________________3210] ((in[ 2 + inPos] & 67108863) << 4)) & 255); out[ 7 + outPos] = (byte)(( // [76543210] // [______________10987654____] ((in[ 2 + inPos] & 67108863) >>> 4)) & 255); out[ 8 + outPos] = (byte)(( // [76543210] // [______98765432____________] ((in[ 2 + inPos] & 67108863) >>> 12)) & 255); out[ 9 + outPos] = (byte)(( // [__543210] // [543210____________________] ((in[ 2 + inPos] & 67108863) >>> 20) | // [76______] // [________________________10] ((in[ 3 + inPos] & 67108863) << 6)) & 255); out[10 + outPos] = (byte)(( // [76543210] // [________________98765432__] ((in[ 3 + inPos] & 67108863) >>> 2)) & 255); out[11 + outPos] = (byte)(( // [76543210] // [________76543210__________] ((in[ 3 + inPos] & 67108863) >>> 10)) & 255); out[12 + outPos] = (byte)(( // [76543210] // [54321098__________________] ((in[ 3 + inPos] & 67108863) >>> 18)) & 255); out[13 + outPos] = (byte)(( // [76543210] // [__________________76543210] ((in[ 4 + inPos] & 67108863))) & 255); out[14 + outPos] = (byte)(( // [76543210] // [__________54321098________] ((in[ 4 + inPos] & 67108863) >>> 8)) & 255); out[15 + outPos] = (byte)(( // [76543210] // [__32109876________________] ((in[ 4 + inPos] & 67108863) >>> 16)) & 255); out[16 + outPos] = (byte)(( // [______10] // [54________________________] ((in[ 4 + inPos] & 67108863) >>> 24) | // [765432__] // [____________________543210] ((in[ 5 + inPos] & 67108863) << 2)) & 255); out[17 + outPos] = (byte)(( // [76543210] // [____________32109876______] ((in[ 5 + inPos] & 67108863) >>> 6)) & 255); out[18 + outPos] = (byte)(( // [76543210] // [____10987654______________] ((in[ 5 + inPos] & 67108863) >>> 14)) & 255); out[19 + outPos] = (byte)(( // [____3210] // [5432______________________] ((in[ 5 + inPos] & 67108863) >>> 22) | // [7654____] // [______________________3210] ((in[ 6 + inPos] & 67108863) << 4)) & 255); out[20 + outPos] = (byte)(( // [76543210] // [______________10987654____] ((in[ 6 + inPos] & 67108863) >>> 4)) & 255); out[21 + outPos] = (byte)(( // [76543210] // [______98765432____________] ((in[ 6 + inPos] & 67108863) >>> 12)) & 255); out[22 + outPos] = (byte)(( // [__543210] // [543210____________________] ((in[ 6 + inPos] & 67108863) >>> 20) | // [76______] // [________________________10] ((in[ 7 + inPos] & 67108863) << 6)) & 255); out[23 + outPos] = (byte)(( // [76543210] // [________________98765432__] ((in[ 7 + inPos] & 67108863) >>> 2)) & 255); out[24 + outPos] = (byte)(( // [76543210] // [________76543210__________] ((in[ 7 + inPos] & 67108863) >>> 10)) & 255); out[25 + outPos] = (byte)(( // [76543210] // [54321098__________________] ((in[ 7 + inPos] & 67108863) >>> 18)) & 255); } public final void pack32Values(final int[] in, final int inPos, final byte[] out, final int outPos) { out[ 0 + outPos] = (byte)(( // [76543210] // [__________________76543210] ((in[ 0 + inPos] & 67108863))) & 255); out[ 1 + outPos] = (byte)(( // [76543210] // [__________54321098________] ((in[ 0 + inPos] & 67108863) >>> 8)) & 255); out[ 2 + outPos] = (byte)(( // [76543210] // [__32109876________________] ((in[ 0 + inPos] & 67108863) >>> 16)) & 255); out[ 3 + outPos] = (byte)(( // [______10] // [54________________________] ((in[ 0 + inPos] & 67108863) >>> 24) | // [765432__] // [____________________543210] ((in[ 1 + inPos] & 67108863) << 2)) & 255); out[ 4 + outPos] = (byte)(( // [76543210] // [____________32109876______] ((in[ 1 + inPos] & 67108863) >>> 6)) & 255); out[ 5 + outPos] = (byte)(( // [76543210] // [____10987654______________] ((in[ 1 + inPos] & 67108863) >>> 14)) & 255); out[ 6 + outPos] = (byte)(( // [____3210] // [5432______________________] ((in[ 1 + inPos] & 67108863) >>> 22) | // [7654____] // [______________________3210] ((in[ 2 + inPos] & 67108863) << 4)) & 255); out[ 7 + outPos] = (byte)(( // [76543210] // [______________10987654____] ((in[ 2 + inPos] & 67108863) >>> 4)) & 255); out[ 8 + outPos] = (byte)(( // [76543210] // [______98765432____________] ((in[ 2 + inPos] & 67108863) >>> 12)) & 255); out[ 9 + outPos] = (byte)(( // [__543210] // [543210____________________] ((in[ 2 + inPos] & 67108863) >>> 20) | // [76______] // [________________________10] ((in[ 3 + inPos] & 67108863) << 6)) & 255); out[10 + outPos] = (byte)(( // [76543210] // [________________98765432__] ((in[ 3 + inPos] & 67108863) >>> 2)) & 255); out[11 + outPos] = (byte)(( // [76543210] // [________76543210__________] ((in[ 3 + inPos] & 67108863) >>> 10)) & 255); out[12 + outPos] = (byte)(( // [76543210] // [54321098__________________] ((in[ 3 + inPos] & 67108863) >>> 18)) & 255); out[13 + outPos] = (byte)(( // [76543210] // [__________________76543210] ((in[ 4 + inPos] & 67108863))) & 255); out[14 + outPos] = (byte)(( // [76543210] // [__________54321098________] ((in[ 4 + inPos] & 67108863) >>> 8)) & 255); out[15 + outPos] = (byte)(( // [76543210] // [__32109876________________] ((in[ 4 + inPos] & 67108863) >>> 16)) & 255); out[16 + outPos] = (byte)(( // [______10] // [54________________________] ((in[ 4 + inPos] & 67108863) >>> 24) | // [765432__] // [____________________543210] ((in[ 5 + inPos] & 67108863) << 2)) & 255); out[17 + outPos] = (byte)(( // [76543210] // [____________32109876______] ((in[ 5 + inPos] & 67108863) >>> 6)) & 255); out[18 + outPos] = (byte)(( // [76543210] // [____10987654______________] ((in[ 5 + inPos] & 67108863) >>> 14)) & 255); out[19 + outPos] = (byte)(( // [____3210] // [5432______________________] ((in[ 5 + inPos] & 67108863) >>> 22) | // [7654____] // [______________________3210] ((in[ 6 + inPos] & 67108863) << 4)) & 255); out[20 + outPos] = (byte)(( // [76543210] // [______________10987654____] ((in[ 6 + inPos] & 67108863) >>> 4)) & 255); out[21 + outPos] = (byte)(( // [76543210] // [______98765432____________] ((in[ 6 + inPos] & 67108863) >>> 12)) & 255); out[22 + outPos] = (byte)(( // [__543210] // [543210____________________] ((in[ 6 + inPos] & 67108863) >>> 20) | // [76______] // [________________________10] ((in[ 7 + inPos] & 67108863) << 6)) & 255); out[23 + outPos] = (byte)(( // [76543210] // [________________98765432__] ((in[ 7 + inPos] & 67108863) >>> 2)) & 255); out[24 + outPos] = (byte)(( // [76543210] // [________76543210__________] ((in[ 7 + inPos] & 67108863) >>> 10)) & 255); out[25 + outPos] = (byte)(( // [76543210] // [54321098__________________] ((in[ 7 + inPos] & 67108863) >>> 18)) & 255); out[26 + outPos] = (byte)(( // [76543210] // [__________________76543210] ((in[ 8 + inPos] & 67108863))) & 255); out[27 + outPos] = (byte)(( // [76543210] // [__________54321098________] ((in[ 8 + inPos] & 67108863) >>> 8)) & 255); out[28 + outPos] = (byte)(( // [76543210] // [__32109876________________] ((in[ 8 + inPos] & 67108863) >>> 16)) & 255); out[29 + outPos] = (byte)(( // [______10] // [54________________________] ((in[ 8 + inPos] & 67108863) >>> 24) | // [765432__] // [____________________543210] ((in[ 9 + inPos] & 67108863) << 2)) & 255); out[30 + outPos] = (byte)(( // [76543210] // [____________32109876______] ((in[ 9 + inPos] & 67108863) >>> 6)) & 255); out[31 + outPos] = (byte)(( // [76543210] // [____10987654______________] ((in[ 9 + inPos] & 67108863) >>> 14)) & 255); out[32 + outPos] = (byte)(( // [____3210] // [5432______________________] ((in[ 9 + inPos] & 67108863) >>> 22) | // [7654____] // [______________________3210] ((in[10 + inPos] & 67108863) << 4)) & 255); out[33 + outPos] = (byte)(( // [76543210] // [______________10987654____] ((in[10 + inPos] & 67108863) >>> 4)) & 255); out[34 + outPos] = (byte)(( // [76543210] // [______98765432____________] ((in[10 + inPos] & 67108863) >>> 12)) & 255); out[35 + outPos] = (byte)(( // [__543210] // [543210____________________] ((in[10 + inPos] & 67108863) >>> 20) | // [76______] // [________________________10] ((in[11 + inPos] & 67108863) << 6)) & 255); out[36 + outPos] = (byte)(( // [76543210] // [________________98765432__] ((in[11 + inPos] & 67108863) >>> 2)) & 255); out[37 + outPos] = (byte)(( // [76543210] // [________76543210__________] ((in[11 + inPos] & 67108863) >>> 10)) & 255); out[38 + outPos] = (byte)(( // [76543210] // [54321098__________________] ((in[11 + inPos] & 67108863) >>> 18)) & 255); out[39 + outPos] = (byte)(( // [76543210] // [__________________76543210] ((in[12 + inPos] & 67108863))) & 255); out[40 + outPos] = (byte)(( // [76543210] // [__________54321098________] ((in[12 + inPos] & 67108863) >>> 8)) & 255); out[41 + outPos] = (byte)(( // [76543210] // [__32109876________________] ((in[12 + inPos] & 67108863) >>> 16)) & 255); out[42 + outPos] = (byte)(( // [______10] // [54________________________] ((in[12 + inPos] & 67108863) >>> 24) | // [765432__] // [____________________543210] ((in[13 + inPos] & 67108863) << 2)) & 255); out[43 + outPos] = (byte)(( // [76543210] // [____________32109876______] ((in[13 + inPos] & 67108863) >>> 6)) & 255); out[44 + outPos] = (byte)(( // [76543210] // [____10987654______________] ((in[13 + inPos] & 67108863) >>> 14)) & 255); out[45 + outPos] = (byte)(( // [____3210] // [5432______________________] ((in[13 + inPos] & 67108863) >>> 22) | // [7654____] // [______________________3210] ((in[14 + inPos] & 67108863) << 4)) & 255); out[46 + outPos] = (byte)(( // [76543210] // [______________10987654____] ((in[14 + inPos] & 67108863) >>> 4)) & 255); out[47 + outPos] = (byte)(( // [76543210] // [______98765432____________] ((in[14 + inPos] & 67108863) >>> 12)) & 255); out[48 + outPos] = (byte)(( // [__543210] // [543210____________________] ((in[14 + inPos] & 67108863) >>> 20) | // [76______] // [________________________10] ((in[15 + inPos] & 67108863) << 6)) & 255); out[49 + outPos] = (byte)(( // [76543210] // [________________98765432__] ((in[15 + inPos] & 67108863) >>> 2)) & 255); out[50 + outPos] = (byte)(( // [76543210] // [________76543210__________] ((in[15 + inPos] & 67108863) >>> 10)) & 255); out[51 + outPos] = (byte)(( // [76543210] // [54321098__________________] ((in[15 + inPos] & 67108863) >>> 18)) & 255); out[52 + outPos] = (byte)(( // [76543210] // [__________________76543210] ((in[16 + inPos] & 67108863))) & 255); out[53 + outPos] = (byte)(( // [76543210] // [__________54321098________] ((in[16 + inPos] & 67108863) >>> 8)) & 255); out[54 + outPos] = (byte)(( // [76543210] // [__32109876________________] ((in[16 + inPos] & 67108863) >>> 16)) & 255); out[55 + outPos] = (byte)(( // [______10] // [54________________________] ((in[16 + inPos] & 67108863) >>> 24) | // [765432__] // [____________________543210] ((in[17 + inPos] & 67108863) << 2)) & 255); out[56 + outPos] = (byte)(( // [76543210] // [____________32109876______] ((in[17 + inPos] & 67108863) >>> 6)) & 255); out[57 + outPos] = (byte)(( // [76543210] // [____10987654______________] ((in[17 + inPos] & 67108863) >>> 14)) & 255); out[58 + outPos] = (byte)(( // [____3210] // [5432______________________] ((in[17 + inPos] & 67108863) >>> 22) | // [7654____] // [______________________3210] ((in[18 + inPos] & 67108863) << 4)) & 255); out[59 + outPos] = (byte)(( // [76543210] // [______________10987654____] ((in[18 + inPos] & 67108863) >>> 4)) & 255); out[60 + outPos] = (byte)(( // [76543210] // [______98765432____________] ((in[18 + inPos] & 67108863) >>> 12)) & 255); out[61 + outPos] = (byte)(( // [__543210] // [543210____________________] ((in[18 + inPos] & 67108863) >>> 20) | // [76______] // [________________________10] ((in[19 + inPos] & 67108863) << 6)) & 255); out[62 + outPos] = (byte)(( // [76543210] // [________________98765432__] ((in[19 + inPos] & 67108863) >>> 2)) & 255); out[63 + outPos] = (byte)(( // [76543210] // [________76543210__________] ((in[19 + inPos] & 67108863) >>> 10)) & 255); out[64 + outPos] = (byte)(( // [76543210] // [54321098__________________] ((in[19 + inPos] & 67108863) >>> 18)) & 255); out[65 + outPos] = (byte)(( // [76543210] // [__________________76543210] ((in[20 + inPos] & 67108863))) & 255); out[66 + outPos] = (byte)(( // [76543210] // [__________54321098________] ((in[20 + inPos] & 67108863) >>> 8)) & 255); out[67 + outPos] = (byte)(( // [76543210] // [__32109876________________] ((in[20 + inPos] & 67108863) >>> 16)) & 255); out[68 + outPos] = (byte)(( // [______10] // [54________________________] ((in[20 + inPos] & 67108863) >>> 24) | // [765432__] // [____________________543210] ((in[21 + inPos] & 67108863) << 2)) & 255); out[69 + outPos] = (byte)(( // [76543210] // [____________32109876______] ((in[21 + inPos] & 67108863) >>> 6)) & 255); out[70 + outPos] = (byte)(( // [76543210] // [____10987654______________] ((in[21 + inPos] & 67108863) >>> 14)) & 255); out[71 + outPos] = (byte)(( // [____3210] // [5432______________________] ((in[21 + inPos] & 67108863) >>> 22) | // [7654____] // [______________________3210] ((in[22 + inPos] & 67108863) << 4)) & 255); out[72 + outPos] = (byte)(( // [76543210] // [______________10987654____] ((in[22 + inPos] & 67108863) >>> 4)) & 255); out[73 + outPos] = (byte)(( // [76543210] // [______98765432____________] ((in[22 + inPos] & 67108863) >>> 12)) & 255); out[74 + outPos] = (byte)(( // [__543210] // [543210____________________] ((in[22 + inPos] & 67108863) >>> 20) | // [76______] // [________________________10] ((in[23 + inPos] & 67108863) << 6)) & 255); out[75 + outPos] = (byte)(( // [76543210] // [________________98765432__] ((in[23 + inPos] & 67108863) >>> 2)) & 255); out[76 + outPos] = (byte)(( // [76543210] // [________76543210__________] ((in[23 + inPos] & 67108863) >>> 10)) & 255); out[77 + outPos] = (byte)(( // [76543210] // [54321098__________________] ((in[23 + inPos] & 67108863) >>> 18)) & 255); out[78 + outPos] = (byte)(( // [76543210] // [__________________76543210] ((in[24 + inPos] & 67108863))) & 255); out[79 + outPos] = (byte)(( // [76543210] // [__________54321098________] ((in[24 + inPos] & 67108863) >>> 8)) & 255); out[80 + outPos] = (byte)(( // [76543210] // [__32109876________________] ((in[24 + inPos] & 67108863) >>> 16)) & 255); out[81 + outPos] = (byte)(( // [______10] // [54________________________] ((in[24 + inPos] & 67108863) >>> 24) | // [765432__] // [____________________543210] ((in[25 + inPos] & 67108863) << 2)) & 255); out[82 + outPos] = (byte)(( // [76543210] // [____________32109876______] ((in[25 + inPos] & 67108863) >>> 6)) & 255); out[83 + outPos] = (byte)(( // [76543210] // [____10987654______________] ((in[25 + inPos] & 67108863) >>> 14)) & 255); out[84 + outPos] = (byte)(( // [____3210] // [5432______________________] ((in[25 + inPos] & 67108863) >>> 22) | // [7654____] // [______________________3210] ((in[26 + inPos] & 67108863) << 4)) & 255); out[85 + outPos] = (byte)(( // [76543210] // [______________10987654____] ((in[26 + inPos] & 67108863) >>> 4)) & 255); out[86 + outPos] = (byte)(( // [76543210] // [______98765432____________] ((in[26 + inPos] & 67108863) >>> 12)) & 255); out[87 + outPos] = (byte)(( // [__543210] // [543210____________________] ((in[26 + inPos] & 67108863) >>> 20) | // [76______] // [________________________10] ((in[27 + inPos] & 67108863) << 6)) & 255); out[88 + outPos] = (byte)(( // [76543210] // [________________98765432__] ((in[27 + inPos] & 67108863) >>> 2)) & 255); out[89 + outPos] = (byte)(( // [76543210] // [________76543210__________] ((in[27 + inPos] & 67108863) >>> 10)) & 255); out[90 + outPos] = (byte)(( // [76543210] // [54321098__________________] ((in[27 + inPos] & 67108863) >>> 18)) & 255); out[91 + outPos] = (byte)(( // [76543210] // [__________________76543210] ((in[28 + inPos] & 67108863))) & 255); out[92 + outPos] = (byte)(( // [76543210] // [__________54321098________] ((in[28 + inPos] & 67108863) >>> 8)) & 255); out[93 + outPos] = (byte)(( // [76543210] // [__32109876________________] ((in[28 + inPos] & 67108863) >>> 16)) & 255); out[94 + outPos] = (byte)(( // [______10] // [54________________________] ((in[28 + inPos] & 67108863) >>> 24) | // [765432__] // [____________________543210] ((in[29 + inPos] & 67108863) << 2)) & 255); out[95 + outPos] = (byte)(( // [76543210] // [____________32109876______] ((in[29 + inPos] & 67108863) >>> 6)) & 255); out[96 + outPos] = (byte)(( // [76543210] // [____10987654______________] ((in[29 + inPos] & 67108863) >>> 14)) & 255); out[97 + outPos] = (byte)(( // [____3210] // [5432______________________] ((in[29 + inPos] & 67108863) >>> 22) | // [7654____] // [______________________3210] ((in[30 + inPos] & 67108863) << 4)) & 255); out[98 + outPos] = (byte)(( // [76543210] // [______________10987654____] ((in[30 + inPos] & 67108863) >>> 4)) & 255); out[99 + outPos] = (byte)(( // [76543210] // [______98765432____________] ((in[30 + inPos] & 67108863) >>> 12)) & 255); out[100 + outPos] = (byte)(( // [__543210] // [543210____________________] ((in[30 + inPos] & 67108863) >>> 20) | // [76______] // [________________________10] ((in[31 + inPos] & 67108863) << 6)) & 255); out[101 + outPos] = (byte)(( // [76543210] // [________________98765432__] ((in[31 + inPos] & 67108863) >>> 2)) & 255); out[102 + outPos] = (byte)(( // [76543210] // [________76543210__________] ((in[31 + inPos] & 67108863) >>> 10)) & 255); out[103 + outPos] = (byte)(( // [76543210] // [54321098__________________] ((in[31 + inPos] & 67108863) >>> 18)) & 255); } public final void unpack8Values(final byte[] in, final int inPos, final int[] out, final int outPos) { out[ 0 + outPos] = // [76543210] // [__________________76543210] (((((int)in[ 0 + inPos]) & 255) ) & 67108863) | // [76543210] // [__________54321098________] (((((int)in[ 1 + inPos]) & 255) << 8) & 67108863) | // [76543210] // [__32109876________________] (((((int)in[ 2 + inPos]) & 255) << 16) & 67108863) | // [______10] // [54________________________] (((((int)in[ 3 + inPos]) & 255) << 24) & 67108863); out[ 1 + outPos] = // [765432__] // [____________________543210] (((((int)in[ 3 + inPos]) & 255) >>> 2) & 67108863) | // [76543210] // [____________32109876______] (((((int)in[ 4 + inPos]) & 255) << 6) & 67108863) | // [76543210] // [____10987654______________] (((((int)in[ 5 + inPos]) & 255) << 14) & 67108863) | // [____3210] // [5432______________________] (((((int)in[ 6 + inPos]) & 255) << 22) & 67108863); out[ 2 + outPos] = // [7654____] // [______________________3210] (((((int)in[ 6 + inPos]) & 255) >>> 4) & 67108863) | // [76543210] // [______________10987654____] (((((int)in[ 7 + inPos]) & 255) << 4) & 67108863) | // [76543210] // [______98765432____________] (((((int)in[ 8 + inPos]) & 255) << 12) & 67108863) | // [__543210] // [543210____________________] (((((int)in[ 9 + inPos]) & 255) << 20) & 67108863); out[ 3 + outPos] = // [76______] // [________________________10] (((((int)in[ 9 + inPos]) & 255) >>> 6) & 67108863) | // [76543210] // [________________98765432__] (((((int)in[10 + inPos]) & 255) << 2) & 67108863) | // [76543210] // [________76543210__________] (((((int)in[11 + inPos]) & 255) << 10) & 67108863) | // [76543210] // [54321098__________________] (((((int)in[12 + inPos]) & 255) << 18) & 67108863); out[ 4 + outPos] = // [76543210] // [__________________76543210] (((((int)in[13 + inPos]) & 255) ) & 67108863) | // [76543210] // [__________54321098________] (((((int)in[14 + inPos]) & 255) << 8) & 67108863) | // [76543210] // [__32109876________________] (((((int)in[15 + inPos]) & 255) << 16) & 67108863) | // [______10] // [54________________________] (((((int)in[16 + inPos]) & 255) << 24) & 67108863); out[ 5 + outPos] = // [765432__] // [____________________543210] (((((int)in[16 + inPos]) & 255) >>> 2) & 67108863) | // [76543210] // [____________32109876______] (((((int)in[17 + inPos]) & 255) << 6) & 67108863) | // [76543210] // [____10987654______________] (((((int)in[18 + inPos]) & 255) << 14) & 67108863) | // [____3210] // [5432______________________] (((((int)in[19 + inPos]) & 255) << 22) & 67108863); out[ 6 + outPos] = // [7654____] // [______________________3210] (((((int)in[19 + inPos]) & 255) >>> 4) & 67108863) | // [76543210] // [______________10987654____] (((((int)in[20 + inPos]) & 255) << 4) & 67108863) | // [76543210] // [______98765432____________] (((((int)in[21 + inPos]) & 255) << 12) & 67108863) | // [__543210] // [543210____________________] (((((int)in[22 + inPos]) & 255) << 20) & 67108863); out[ 7 + outPos] = // [76______] // [________________________10] (((((int)in[22 + inPos]) & 255) >>> 6) & 67108863) | // [76543210] // [________________98765432__] (((((int)in[23 + inPos]) & 255) << 2) & 67108863) | // [76543210] // [________76543210__________] (((((int)in[24 + inPos]) & 255) << 10) & 67108863) | // [76543210] // [54321098__________________] (((((int)in[25 + inPos]) & 255) << 18) & 67108863); } public final void unpack32Values(final byte[] in, final int inPos, final int[] out, final int outPos) { out[ 0 + outPos] = // [76543210] // [__________________76543210] (((((int)in[ 0 + inPos]) & 255) ) & 67108863) | // [76543210] // [__________54321098________] (((((int)in[ 1 + inPos]) & 255) << 8) & 67108863) | // [76543210] // [__32109876________________] (((((int)in[ 2 + inPos]) & 255) << 16) & 67108863) | // [______10] // [54________________________] (((((int)in[ 3 + inPos]) & 255) << 24) & 67108863); out[ 1 + outPos] = // [765432__] // [____________________543210] (((((int)in[ 3 + inPos]) & 255) >>> 2) & 67108863) | // [76543210] // [____________32109876______] (((((int)in[ 4 + inPos]) & 255) << 6) & 67108863) | // [76543210] // [____10987654______________] (((((int)in[ 5 + inPos]) & 255) << 14) & 67108863) | // [____3210] // [5432______________________] (((((int)in[ 6 + inPos]) & 255) << 22) & 67108863); out[ 2 + outPos] = // [7654____] // [______________________3210] (((((int)in[ 6 + inPos]) & 255) >>> 4) & 67108863) | // [76543210] // [______________10987654____] (((((int)in[ 7 + inPos]) & 255) << 4) & 67108863) | // [76543210] // [______98765432____________] (((((int)in[ 8 + inPos]) & 255) << 12) & 67108863) | // [__543210] // [543210____________________] (((((int)in[ 9 + inPos]) & 255) << 20) & 67108863); out[ 3 + outPos] = // [76______] // [________________________10] (((((int)in[ 9 + inPos]) & 255) >>> 6) & 67108863) | // [76543210] // [________________98765432__] (((((int)in[10 + inPos]) & 255) << 2) & 67108863) | // [76543210] // [________76543210__________] (((((int)in[11 + inPos]) & 255) << 10) & 67108863) | // [76543210] // [54321098__________________] (((((int)in[12 + inPos]) & 255) << 18) & 67108863); out[ 4 + outPos] = // [76543210] // [__________________76543210] (((((int)in[13 + inPos]) & 255) ) & 67108863) | // [76543210] // [__________54321098________] (((((int)in[14 + inPos]) & 255) << 8) & 67108863) | // [76543210] // [__32109876________________] (((((int)in[15 + inPos]) & 255) << 16) & 67108863) | // [______10] // [54________________________] (((((int)in[16 + inPos]) & 255) << 24) & 67108863); out[ 5 + outPos] = // [765432__] // [____________________543210] (((((int)in[16 + inPos]) & 255) >>> 2) & 67108863) | // [76543210] // [____________32109876______] (((((int)in[17 + inPos]) & 255) << 6) & 67108863) | // [76543210] // [____10987654______________] (((((int)in[18 + inPos]) & 255) << 14) & 67108863) | // [____3210] // [5432______________________] (((((int)in[19 + inPos]) & 255) << 22) & 67108863); out[ 6 + outPos] = // [7654____] // [______________________3210] (((((int)in[19 + inPos]) & 255) >>> 4) & 67108863) | // [76543210] // [______________10987654____] (((((int)in[20 + inPos]) & 255) << 4) & 67108863) | // [76543210] // [______98765432____________] (((((int)in[21 + inPos]) & 255) << 12) & 67108863) | // [__543210] // [543210____________________] (((((int)in[22 + inPos]) & 255) << 20) & 67108863); out[ 7 + outPos] = // [76______] // [________________________10] (((((int)in[22 + inPos]) & 255) >>> 6) & 67108863) | // [76543210] // [________________98765432__] (((((int)in[23 + inPos]) & 255) << 2) & 67108863) | // [76543210] // [________76543210__________] (((((int)in[24 + inPos]) & 255) << 10) & 67108863) | // [76543210] // [54321098__________________] (((((int)in[25 + inPos]) & 255) << 18) & 67108863); out[ 8 + outPos] = // [76543210] // [__________________76543210] (((((int)in[26 + inPos]) & 255) ) & 67108863) | // [76543210] // [__________54321098________] (((((int)in[27 + inPos]) & 255) << 8) & 67108863) | // [76543210] // [__32109876________________] (((((int)in[28 + inPos]) & 255) << 16) & 67108863) | // [______10] // [54________________________] (((((int)in[29 + inPos]) & 255) << 24) & 67108863); out[ 9 + outPos] = // [765432__] // [____________________543210] (((((int)in[29 + inPos]) & 255) >>> 2) & 67108863) | // [76543210] // [____________32109876______] (((((int)in[30 + inPos]) & 255) << 6) & 67108863) | // [76543210] // [____10987654______________] (((((int)in[31 + inPos]) & 255) << 14) & 67108863) | // [____3210] // [5432______________________] (((((int)in[32 + inPos]) & 255) << 22) & 67108863); out[10 + outPos] = // [7654____] // [______________________3210] (((((int)in[32 + inPos]) & 255) >>> 4) & 67108863) | // [76543210] // [______________10987654____] (((((int)in[33 + inPos]) & 255) << 4) & 67108863) | // [76543210] // [______98765432____________] (((((int)in[34 + inPos]) & 255) << 12) & 67108863) | // [__543210] // [543210____________________] (((((int)in[35 + inPos]) & 255) << 20) & 67108863); out[11 + outPos] = // [76______] // [________________________10] (((((int)in[35 + inPos]) & 255) >>> 6) & 67108863) | // [76543210] // [________________98765432__] (((((int)in[36 + inPos]) & 255) << 2) & 67108863) | // [76543210] // [________76543210__________] (((((int)in[37 + inPos]) & 255) << 10) & 67108863) | // [76543210] // [54321098__________________] (((((int)in[38 + inPos]) & 255) << 18) & 67108863); out[12 + outPos] = // [76543210] // [__________________76543210] (((((int)in[39 + inPos]) & 255) ) & 67108863) | // [76543210] // [__________54321098________] (((((int)in[40 + inPos]) & 255) << 8) & 67108863) | // [76543210] // [__32109876________________] (((((int)in[41 + inPos]) & 255) << 16) & 67108863) | // [______10] // [54________________________] (((((int)in[42 + inPos]) & 255) << 24) & 67108863); out[13 + outPos] = // [765432__] // [____________________543210] (((((int)in[42 + inPos]) & 255) >>> 2) & 67108863) | // [76543210] // [____________32109876______] (((((int)in[43 + inPos]) & 255) << 6) & 67108863) | // [76543210] // [____10987654______________] (((((int)in[44 + inPos]) & 255) << 14) & 67108863) | // [____3210] // [5432______________________] (((((int)in[45 + inPos]) & 255) << 22) & 67108863); out[14 + outPos] = // [7654____] // [______________________3210] (((((int)in[45 + inPos]) & 255) >>> 4) & 67108863) | // [76543210] // [______________10987654____] (((((int)in[46 + inPos]) & 255) << 4) & 67108863) | // [76543210] // [______98765432____________] (((((int)in[47 + inPos]) & 255) << 12) & 67108863) | // [__543210] // [543210____________________] (((((int)in[48 + inPos]) & 255) << 20) & 67108863); out[15 + outPos] = // [76______] // [________________________10] (((((int)in[48 + inPos]) & 255) >>> 6) & 67108863) | // [76543210] // [________________98765432__] (((((int)in[49 + inPos]) & 255) << 2) & 67108863) | // [76543210] // [________76543210__________] (((((int)in[50 + inPos]) & 255) << 10) & 67108863) | // [76543210] // [54321098__________________] (((((int)in[51 + inPos]) & 255) << 18) & 67108863); out[16 + outPos] = // [76543210] // [__________________76543210] (((((int)in[52 + inPos]) & 255) ) & 67108863) | // [76543210] // [__________54321098________] (((((int)in[53 + inPos]) & 255) << 8) & 67108863) | // [76543210] // [__32109876________________] (((((int)in[54 + inPos]) & 255) << 16) & 67108863) | // [______10] // [54________________________] (((((int)in[55 + inPos]) & 255) << 24) & 67108863); out[17 + outPos] = // [765432__] // [____________________543210] (((((int)in[55 + inPos]) & 255) >>> 2) & 67108863) | // [76543210] // [____________32109876______] (((((int)in[56 + inPos]) & 255) << 6) & 67108863) | // [76543210] // [____10987654______________] (((((int)in[57 + inPos]) & 255) << 14) & 67108863) | // [____3210] // [5432______________________] (((((int)in[58 + inPos]) & 255) << 22) & 67108863); out[18 + outPos] = // [7654____] // [______________________3210] (((((int)in[58 + inPos]) & 255) >>> 4) & 67108863) | // [76543210] // [______________10987654____] (((((int)in[59 + inPos]) & 255) << 4) & 67108863) | // [76543210] // [______98765432____________] (((((int)in[60 + inPos]) & 255) << 12) & 67108863) | // [__543210] // [543210____________________] (((((int)in[61 + inPos]) & 255) << 20) & 67108863); out[19 + outPos] = // [76______] // [________________________10] (((((int)in[61 + inPos]) & 255) >>> 6) & 67108863) | // [76543210] // [________________98765432__] (((((int)in[62 + inPos]) & 255) << 2) & 67108863) | // [76543210] // [________76543210__________] (((((int)in[63 + inPos]) & 255) << 10) & 67108863) | // [76543210] // [54321098__________________] (((((int)in[64 + inPos]) & 255) << 18) & 67108863); out[20 + outPos] = // [76543210] // [__________________76543210] (((((int)in[65 + inPos]) & 255) ) & 67108863) | // [76543210] // [__________54321098________] (((((int)in[66 + inPos]) & 255) << 8) & 67108863) | // [76543210] // [__32109876________________] (((((int)in[67 + inPos]) & 255) << 16) & 67108863) | // [______10] // [54________________________] (((((int)in[68 + inPos]) & 255) << 24) & 67108863); out[21 + outPos] = // [765432__] // [____________________543210] (((((int)in[68 + inPos]) & 255) >>> 2) & 67108863) | // [76543210] // [____________32109876______] (((((int)in[69 + inPos]) & 255) << 6) & 67108863) | // [76543210] // [____10987654______________] (((((int)in[70 + inPos]) & 255) << 14) & 67108863) | // [____3210] // [5432______________________] (((((int)in[71 + inPos]) & 255) << 22) & 67108863); out[22 + outPos] = // [7654____] // [______________________3210] (((((int)in[71 + inPos]) & 255) >>> 4) & 67108863) | // [76543210] // [______________10987654____] (((((int)in[72 + inPos]) & 255) << 4) & 67108863) | // [76543210] // [______98765432____________] (((((int)in[73 + inPos]) & 255) << 12) & 67108863) | // [__543210] // [543210____________________] (((((int)in[74 + inPos]) & 255) << 20) & 67108863); out[23 + outPos] = // [76______] // [________________________10] (((((int)in[74 + inPos]) & 255) >>> 6) & 67108863) | // [76543210] // [________________98765432__] (((((int)in[75 + inPos]) & 255) << 2) & 67108863) | // [76543210] // [________76543210__________] (((((int)in[76 + inPos]) & 255) << 10) & 67108863) | // [76543210] // [54321098__________________] (((((int)in[77 + inPos]) & 255) << 18) & 67108863); out[24 + outPos] = // [76543210] // [__________________76543210] (((((int)in[78 + inPos]) & 255) ) & 67108863) | // [76543210] // [__________54321098________] (((((int)in[79 + inPos]) & 255) << 8) & 67108863) | // [76543210] // [__32109876________________] (((((int)in[80 + inPos]) & 255) << 16) & 67108863) | // [______10] // [54________________________] (((((int)in[81 + inPos]) & 255) << 24) & 67108863); out[25 + outPos] = // [765432__] // [____________________543210] (((((int)in[81 + inPos]) & 255) >>> 2) & 67108863) | // [76543210] // [____________32109876______] (((((int)in[82 + inPos]) & 255) << 6) & 67108863) | // [76543210] // [____10987654______________] (((((int)in[83 + inPos]) & 255) << 14) & 67108863) | // [____3210] // [5432______________________] (((((int)in[84 + inPos]) & 255) << 22) & 67108863); out[26 + outPos] = // [7654____] // [______________________3210] (((((int)in[84 + inPos]) & 255) >>> 4) & 67108863) | // [76543210] // [______________10987654____] (((((int)in[85 + inPos]) & 255) << 4) & 67108863) | // [76543210] // [______98765432____________] (((((int)in[86 + inPos]) & 255) << 12) & 67108863) | // [__543210] // [543210____________________] (((((int)in[87 + inPos]) & 255) << 20) & 67108863); out[27 + outPos] = // [76______] // [________________________10] (((((int)in[87 + inPos]) & 255) >>> 6) & 67108863) | // [76543210] // [________________98765432__] (((((int)in[88 + inPos]) & 255) << 2) & 67108863) | // [76543210] // [________76543210__________] (((((int)in[89 + inPos]) & 255) << 10) & 67108863) | // [76543210] // [54321098__________________] (((((int)in[90 + inPos]) & 255) << 18) & 67108863); out[28 + outPos] = // [76543210] // [__________________76543210] (((((int)in[91 + inPos]) & 255) ) & 67108863) | // [76543210] // [__________54321098________] (((((int)in[92 + inPos]) & 255) << 8) & 67108863) | // [76543210] // [__32109876________________] (((((int)in[93 + inPos]) & 255) << 16) & 67108863) | // [______10] // [54________________________] (((((int)in[94 + inPos]) & 255) << 24) & 67108863); out[29 + outPos] = // [765432__] // [____________________543210] (((((int)in[94 + inPos]) & 255) >>> 2) & 67108863) | // [76543210] // [____________32109876______] (((((int)in[95 + inPos]) & 255) << 6) & 67108863) | // [76543210] // [____10987654______________] (((((int)in[96 + inPos]) & 255) << 14) & 67108863) | // [____3210] // [5432______________________] (((((int)in[97 + inPos]) & 255) << 22) & 67108863); out[30 + outPos] = // [7654____] // [______________________3210] (((((int)in[97 + inPos]) & 255) >>> 4) & 67108863) | // [76543210] // [______________10987654____] (((((int)in[98 + inPos]) & 255) << 4) & 67108863) | // [76543210] // [______98765432____________] (((((int)in[99 + inPos]) & 255) << 12) & 67108863) | // [__543210] // [543210____________________] (((((int)in[100 + inPos]) & 255) << 20) & 67108863); out[31 + outPos] = // [76______] // [________________________10] (((((int)in[100 + inPos]) & 255) >>> 6) & 67108863) | // [76543210] // [________________98765432__] (((((int)in[101 + inPos]) & 255) << 2) & 67108863) | // [76543210] // [________76543210__________] (((((int)in[102 + inPos]) & 255) << 10) & 67108863) | // [76543210] // [54321098__________________] (((((int)in[103 + inPos]) & 255) << 18) & 67108863); } } private static final class Packer27 extends BytePacker { private Packer27() { super(27); } public final void pack8Values(final int[] in, final int inPos, final byte[] out, final int outPos) { out[ 0 + outPos] = (byte)(( // [76543210] // [___________________76543210] ((in[ 0 + inPos] & 134217727))) & 255); out[ 1 + outPos] = (byte)(( // [76543210] // [___________54321098________] ((in[ 0 + inPos] & 134217727) >>> 8)) & 255); out[ 2 + outPos] = (byte)(( // [76543210] // [___32109876________________] ((in[ 0 + inPos] & 134217727) >>> 16)) & 255); out[ 3 + outPos] = (byte)(( // [_____210] // [654________________________] ((in[ 0 + inPos] & 134217727) >>> 24) | // [76543___] // [______________________43210] ((in[ 1 + inPos] & 134217727) << 3)) & 255); out[ 4 + outPos] = (byte)(( // [76543210] // [______________21098765_____] ((in[ 1 + inPos] & 134217727) >>> 5)) & 255); out[ 5 + outPos] = (byte)(( // [76543210] // [______09876543_____________] ((in[ 1 + inPos] & 134217727) >>> 13)) & 255); out[ 6 + outPos] = (byte)(( // [__543210] // [654321_____________________] ((in[ 1 + inPos] & 134217727) >>> 21) | // [76______] // [_________________________10] ((in[ 2 + inPos] & 134217727) << 6)) & 255); out[ 7 + outPos] = (byte)(( // [76543210] // [_________________98765432__] ((in[ 2 + inPos] & 134217727) >>> 2)) & 255); out[ 8 + outPos] = (byte)(( // [76543210] // [_________76543210__________] ((in[ 2 + inPos] & 134217727) >>> 10)) & 255); out[ 9 + outPos] = (byte)(( // [76543210] // [_54321098__________________] ((in[ 2 + inPos] & 134217727) >>> 18)) & 255); out[10 + outPos] = (byte)(( // [_______0] // [6__________________________] ((in[ 2 + inPos] & 134217727) >>> 26) | // [7654321_] // [____________________6543210] ((in[ 3 + inPos] & 134217727) << 1)) & 255); out[11 + outPos] = (byte)(( // [76543210] // [____________43210987_______] ((in[ 3 + inPos] & 134217727) >>> 7)) & 255); out[12 + outPos] = (byte)(( // [76543210] // [____21098765_______________] ((in[ 3 + inPos] & 134217727) >>> 15)) & 255); out[13 + outPos] = (byte)(( // [____3210] // [6543_______________________] ((in[ 3 + inPos] & 134217727) >>> 23) | // [7654____] // [_______________________3210] ((in[ 4 + inPos] & 134217727) << 4)) & 255); out[14 + outPos] = (byte)(( // [76543210] // [_______________10987654____] ((in[ 4 + inPos] & 134217727) >>> 4)) & 255); out[15 + outPos] = (byte)(( // [76543210] // [_______98765432____________] ((in[ 4 + inPos] & 134217727) >>> 12)) & 255); out[16 + outPos] = (byte)(( // [_6543210] // [6543210____________________] ((in[ 4 + inPos] & 134217727) >>> 20) | // [7_______] // [__________________________0] ((in[ 5 + inPos] & 134217727) << 7)) & 255); out[17 + outPos] = (byte)(( // [76543210] // [__________________87654321_] ((in[ 5 + inPos] & 134217727) >>> 1)) & 255); out[18 + outPos] = (byte)(( // [76543210] // [__________65432109_________] ((in[ 5 + inPos] & 134217727) >>> 9)) & 255); out[19 + outPos] = (byte)(( // [76543210] // [__43210987_________________] ((in[ 5 + inPos] & 134217727) >>> 17)) & 255); out[20 + outPos] = (byte)(( // [______10] // [65_________________________] ((in[ 5 + inPos] & 134217727) >>> 25) | // [765432__] // [_____________________543210] ((in[ 6 + inPos] & 134217727) << 2)) & 255); out[21 + outPos] = (byte)(( // [76543210] // [_____________32109876______] ((in[ 6 + inPos] & 134217727) >>> 6)) & 255); out[22 + outPos] = (byte)(( // [76543210] // [_____10987654______________] ((in[ 6 + inPos] & 134217727) >>> 14)) & 255); out[23 + outPos] = (byte)(( // [___43210] // [65432______________________] ((in[ 6 + inPos] & 134217727) >>> 22) | // [765_____] // [________________________210] ((in[ 7 + inPos] & 134217727) << 5)) & 255); out[24 + outPos] = (byte)(( // [76543210] // [________________09876543___] ((in[ 7 + inPos] & 134217727) >>> 3)) & 255); out[25 + outPos] = (byte)(( // [76543210] // [________87654321___________] ((in[ 7 + inPos] & 134217727) >>> 11)) & 255); out[26 + outPos] = (byte)(( // [76543210] // [65432109___________________] ((in[ 7 + inPos] & 134217727) >>> 19)) & 255); } public final void pack32Values(final int[] in, final int inPos, final byte[] out, final int outPos) { out[ 0 + outPos] = (byte)(( // [76543210] // [___________________76543210] ((in[ 0 + inPos] & 134217727))) & 255); out[ 1 + outPos] = (byte)(( // [76543210] // [___________54321098________] ((in[ 0 + inPos] & 134217727) >>> 8)) & 255); out[ 2 + outPos] = (byte)(( // [76543210] // [___32109876________________] ((in[ 0 + inPos] & 134217727) >>> 16)) & 255); out[ 3 + outPos] = (byte)(( // [_____210] // [654________________________] ((in[ 0 + inPos] & 134217727) >>> 24) | // [76543___] // [______________________43210] ((in[ 1 + inPos] & 134217727) << 3)) & 255); out[ 4 + outPos] = (byte)(( // [76543210] // [______________21098765_____] ((in[ 1 + inPos] & 134217727) >>> 5)) & 255); out[ 5 + outPos] = (byte)(( // [76543210] // [______09876543_____________] ((in[ 1 + inPos] & 134217727) >>> 13)) & 255); out[ 6 + outPos] = (byte)(( // [__543210] // [654321_____________________] ((in[ 1 + inPos] & 134217727) >>> 21) | // [76______] // [_________________________10] ((in[ 2 + inPos] & 134217727) << 6)) & 255); out[ 7 + outPos] = (byte)(( // [76543210] // [_________________98765432__] ((in[ 2 + inPos] & 134217727) >>> 2)) & 255); out[ 8 + outPos] = (byte)(( // [76543210] // [_________76543210__________] ((in[ 2 + inPos] & 134217727) >>> 10)) & 255); out[ 9 + outPos] = (byte)(( // [76543210] // [_54321098__________________] ((in[ 2 + inPos] & 134217727) >>> 18)) & 255); out[10 + outPos] = (byte)(( // [_______0] // [6__________________________] ((in[ 2 + inPos] & 134217727) >>> 26) | // [7654321_] // [____________________6543210] ((in[ 3 + inPos] & 134217727) << 1)) & 255); out[11 + outPos] = (byte)(( // [76543210] // [____________43210987_______] ((in[ 3 + inPos] & 134217727) >>> 7)) & 255); out[12 + outPos] = (byte)(( // [76543210] // [____21098765_______________] ((in[ 3 + inPos] & 134217727) >>> 15)) & 255); out[13 + outPos] = (byte)(( // [____3210] // [6543_______________________] ((in[ 3 + inPos] & 134217727) >>> 23) | // [7654____] // [_______________________3210] ((in[ 4 + inPos] & 134217727) << 4)) & 255); out[14 + outPos] = (byte)(( // [76543210] // [_______________10987654____] ((in[ 4 + inPos] & 134217727) >>> 4)) & 255); out[15 + outPos] = (byte)(( // [76543210] // [_______98765432____________] ((in[ 4 + inPos] & 134217727) >>> 12)) & 255); out[16 + outPos] = (byte)(( // [_6543210] // [6543210____________________] ((in[ 4 + inPos] & 134217727) >>> 20) | // [7_______] // [__________________________0] ((in[ 5 + inPos] & 134217727) << 7)) & 255); out[17 + outPos] = (byte)(( // [76543210] // [__________________87654321_] ((in[ 5 + inPos] & 134217727) >>> 1)) & 255); out[18 + outPos] = (byte)(( // [76543210] // [__________65432109_________] ((in[ 5 + inPos] & 134217727) >>> 9)) & 255); out[19 + outPos] = (byte)(( // [76543210] // [__43210987_________________] ((in[ 5 + inPos] & 134217727) >>> 17)) & 255); out[20 + outPos] = (byte)(( // [______10] // [65_________________________] ((in[ 5 + inPos] & 134217727) >>> 25) | // [765432__] // [_____________________543210] ((in[ 6 + inPos] & 134217727) << 2)) & 255); out[21 + outPos] = (byte)(( // [76543210] // [_____________32109876______] ((in[ 6 + inPos] & 134217727) >>> 6)) & 255); out[22 + outPos] = (byte)(( // [76543210] // [_____10987654______________] ((in[ 6 + inPos] & 134217727) >>> 14)) & 255); out[23 + outPos] = (byte)(( // [___43210] // [65432______________________] ((in[ 6 + inPos] & 134217727) >>> 22) | // [765_____] // [________________________210] ((in[ 7 + inPos] & 134217727) << 5)) & 255); out[24 + outPos] = (byte)(( // [76543210] // [________________09876543___] ((in[ 7 + inPos] & 134217727) >>> 3)) & 255); out[25 + outPos] = (byte)(( // [76543210] // [________87654321___________] ((in[ 7 + inPos] & 134217727) >>> 11)) & 255); out[26 + outPos] = (byte)(( // [76543210] // [65432109___________________] ((in[ 7 + inPos] & 134217727) >>> 19)) & 255); out[27 + outPos] = (byte)(( // [76543210] // [___________________76543210] ((in[ 8 + inPos] & 134217727))) & 255); out[28 + outPos] = (byte)(( // [76543210] // [___________54321098________] ((in[ 8 + inPos] & 134217727) >>> 8)) & 255); out[29 + outPos] = (byte)(( // [76543210] // [___32109876________________] ((in[ 8 + inPos] & 134217727) >>> 16)) & 255); out[30 + outPos] = (byte)(( // [_____210] // [654________________________] ((in[ 8 + inPos] & 134217727) >>> 24) | // [76543___] // [______________________43210] ((in[ 9 + inPos] & 134217727) << 3)) & 255); out[31 + outPos] = (byte)(( // [76543210] // [______________21098765_____] ((in[ 9 + inPos] & 134217727) >>> 5)) & 255); out[32 + outPos] = (byte)(( // [76543210] // [______09876543_____________] ((in[ 9 + inPos] & 134217727) >>> 13)) & 255); out[33 + outPos] = (byte)(( // [__543210] // [654321_____________________] ((in[ 9 + inPos] & 134217727) >>> 21) | // [76______] // [_________________________10] ((in[10 + inPos] & 134217727) << 6)) & 255); out[34 + outPos] = (byte)(( // [76543210] // [_________________98765432__] ((in[10 + inPos] & 134217727) >>> 2)) & 255); out[35 + outPos] = (byte)(( // [76543210] // [_________76543210__________] ((in[10 + inPos] & 134217727) >>> 10)) & 255); out[36 + outPos] = (byte)(( // [76543210] // [_54321098__________________] ((in[10 + inPos] & 134217727) >>> 18)) & 255); out[37 + outPos] = (byte)(( // [_______0] // [6__________________________] ((in[10 + inPos] & 134217727) >>> 26) | // [7654321_] // [____________________6543210] ((in[11 + inPos] & 134217727) << 1)) & 255); out[38 + outPos] = (byte)(( // [76543210] // [____________43210987_______] ((in[11 + inPos] & 134217727) >>> 7)) & 255); out[39 + outPos] = (byte)(( // [76543210] // [____21098765_______________] ((in[11 + inPos] & 134217727) >>> 15)) & 255); out[40 + outPos] = (byte)(( // [____3210] // [6543_______________________] ((in[11 + inPos] & 134217727) >>> 23) | // [7654____] // [_______________________3210] ((in[12 + inPos] & 134217727) << 4)) & 255); out[41 + outPos] = (byte)(( // [76543210] // [_______________10987654____] ((in[12 + inPos] & 134217727) >>> 4)) & 255); out[42 + outPos] = (byte)(( // [76543210] // [_______98765432____________] ((in[12 + inPos] & 134217727) >>> 12)) & 255); out[43 + outPos] = (byte)(( // [_6543210] // [6543210____________________] ((in[12 + inPos] & 134217727) >>> 20) | // [7_______] // [__________________________0] ((in[13 + inPos] & 134217727) << 7)) & 255); out[44 + outPos] = (byte)(( // [76543210] // [__________________87654321_] ((in[13 + inPos] & 134217727) >>> 1)) & 255); out[45 + outPos] = (byte)(( // [76543210] // [__________65432109_________] ((in[13 + inPos] & 134217727) >>> 9)) & 255); out[46 + outPos] = (byte)(( // [76543210] // [__43210987_________________] ((in[13 + inPos] & 134217727) >>> 17)) & 255); out[47 + outPos] = (byte)(( // [______10] // [65_________________________] ((in[13 + inPos] & 134217727) >>> 25) | // [765432__] // [_____________________543210] ((in[14 + inPos] & 134217727) << 2)) & 255); out[48 + outPos] = (byte)(( // [76543210] // [_____________32109876______] ((in[14 + inPos] & 134217727) >>> 6)) & 255); out[49 + outPos] = (byte)(( // [76543210] // [_____10987654______________] ((in[14 + inPos] & 134217727) >>> 14)) & 255); out[50 + outPos] = (byte)(( // [___43210] // [65432______________________] ((in[14 + inPos] & 134217727) >>> 22) | // [765_____] // [________________________210] ((in[15 + inPos] & 134217727) << 5)) & 255); out[51 + outPos] = (byte)(( // [76543210] // [________________09876543___] ((in[15 + inPos] & 134217727) >>> 3)) & 255); out[52 + outPos] = (byte)(( // [76543210] // [________87654321___________] ((in[15 + inPos] & 134217727) >>> 11)) & 255); out[53 + outPos] = (byte)(( // [76543210] // [65432109___________________] ((in[15 + inPos] & 134217727) >>> 19)) & 255); out[54 + outPos] = (byte)(( // [76543210] // [___________________76543210] ((in[16 + inPos] & 134217727))) & 255); out[55 + outPos] = (byte)(( // [76543210] // [___________54321098________] ((in[16 + inPos] & 134217727) >>> 8)) & 255); out[56 + outPos] = (byte)(( // [76543210] // [___32109876________________] ((in[16 + inPos] & 134217727) >>> 16)) & 255); out[57 + outPos] = (byte)(( // [_____210] // [654________________________] ((in[16 + inPos] & 134217727) >>> 24) | // [76543___] // [______________________43210] ((in[17 + inPos] & 134217727) << 3)) & 255); out[58 + outPos] = (byte)(( // [76543210] // [______________21098765_____] ((in[17 + inPos] & 134217727) >>> 5)) & 255); out[59 + outPos] = (byte)(( // [76543210] // [______09876543_____________] ((in[17 + inPos] & 134217727) >>> 13)) & 255); out[60 + outPos] = (byte)(( // [__543210] // [654321_____________________] ((in[17 + inPos] & 134217727) >>> 21) | // [76______] // [_________________________10] ((in[18 + inPos] & 134217727) << 6)) & 255); out[61 + outPos] = (byte)(( // [76543210] // [_________________98765432__] ((in[18 + inPos] & 134217727) >>> 2)) & 255); out[62 + outPos] = (byte)(( // [76543210] // [_________76543210__________] ((in[18 + inPos] & 134217727) >>> 10)) & 255); out[63 + outPos] = (byte)(( // [76543210] // [_54321098__________________] ((in[18 + inPos] & 134217727) >>> 18)) & 255); out[64 + outPos] = (byte)(( // [_______0] // [6__________________________] ((in[18 + inPos] & 134217727) >>> 26) | // [7654321_] // [____________________6543210] ((in[19 + inPos] & 134217727) << 1)) & 255); out[65 + outPos] = (byte)(( // [76543210] // [____________43210987_______] ((in[19 + inPos] & 134217727) >>> 7)) & 255); out[66 + outPos] = (byte)(( // [76543210] // [____21098765_______________] ((in[19 + inPos] & 134217727) >>> 15)) & 255); out[67 + outPos] = (byte)(( // [____3210] // [6543_______________________] ((in[19 + inPos] & 134217727) >>> 23) | // [7654____] // [_______________________3210] ((in[20 + inPos] & 134217727) << 4)) & 255); out[68 + outPos] = (byte)(( // [76543210] // [_______________10987654____] ((in[20 + inPos] & 134217727) >>> 4)) & 255); out[69 + outPos] = (byte)(( // [76543210] // [_______98765432____________] ((in[20 + inPos] & 134217727) >>> 12)) & 255); out[70 + outPos] = (byte)(( // [_6543210] // [6543210____________________] ((in[20 + inPos] & 134217727) >>> 20) | // [7_______] // [__________________________0] ((in[21 + inPos] & 134217727) << 7)) & 255); out[71 + outPos] = (byte)(( // [76543210] // [__________________87654321_] ((in[21 + inPos] & 134217727) >>> 1)) & 255); out[72 + outPos] = (byte)(( // [76543210] // [__________65432109_________] ((in[21 + inPos] & 134217727) >>> 9)) & 255); out[73 + outPos] = (byte)(( // [76543210] // [__43210987_________________] ((in[21 + inPos] & 134217727) >>> 17)) & 255); out[74 + outPos] = (byte)(( // [______10] // [65_________________________] ((in[21 + inPos] & 134217727) >>> 25) | // [765432__] // [_____________________543210] ((in[22 + inPos] & 134217727) << 2)) & 255); out[75 + outPos] = (byte)(( // [76543210] // [_____________32109876______] ((in[22 + inPos] & 134217727) >>> 6)) & 255); out[76 + outPos] = (byte)(( // [76543210] // [_____10987654______________] ((in[22 + inPos] & 134217727) >>> 14)) & 255); out[77 + outPos] = (byte)(( // [___43210] // [65432______________________] ((in[22 + inPos] & 134217727) >>> 22) | // [765_____] // [________________________210] ((in[23 + inPos] & 134217727) << 5)) & 255); out[78 + outPos] = (byte)(( // [76543210] // [________________09876543___] ((in[23 + inPos] & 134217727) >>> 3)) & 255); out[79 + outPos] = (byte)(( // [76543210] // [________87654321___________] ((in[23 + inPos] & 134217727) >>> 11)) & 255); out[80 + outPos] = (byte)(( // [76543210] // [65432109___________________] ((in[23 + inPos] & 134217727) >>> 19)) & 255); out[81 + outPos] = (byte)(( // [76543210] // [___________________76543210] ((in[24 + inPos] & 134217727))) & 255); out[82 + outPos] = (byte)(( // [76543210] // [___________54321098________] ((in[24 + inPos] & 134217727) >>> 8)) & 255); out[83 + outPos] = (byte)(( // [76543210] // [___32109876________________] ((in[24 + inPos] & 134217727) >>> 16)) & 255); out[84 + outPos] = (byte)(( // [_____210] // [654________________________] ((in[24 + inPos] & 134217727) >>> 24) | // [76543___] // [______________________43210] ((in[25 + inPos] & 134217727) << 3)) & 255); out[85 + outPos] = (byte)(( // [76543210] // [______________21098765_____] ((in[25 + inPos] & 134217727) >>> 5)) & 255); out[86 + outPos] = (byte)(( // [76543210] // [______09876543_____________] ((in[25 + inPos] & 134217727) >>> 13)) & 255); out[87 + outPos] = (byte)(( // [__543210] // [654321_____________________] ((in[25 + inPos] & 134217727) >>> 21) | // [76______] // [_________________________10] ((in[26 + inPos] & 134217727) << 6)) & 255); out[88 + outPos] = (byte)(( // [76543210] // [_________________98765432__] ((in[26 + inPos] & 134217727) >>> 2)) & 255); out[89 + outPos] = (byte)(( // [76543210] // [_________76543210__________] ((in[26 + inPos] & 134217727) >>> 10)) & 255); out[90 + outPos] = (byte)(( // [76543210] // [_54321098__________________] ((in[26 + inPos] & 134217727) >>> 18)) & 255); out[91 + outPos] = (byte)(( // [_______0] // [6__________________________] ((in[26 + inPos] & 134217727) >>> 26) | // [7654321_] // [____________________6543210] ((in[27 + inPos] & 134217727) << 1)) & 255); out[92 + outPos] = (byte)(( // [76543210] // [____________43210987_______] ((in[27 + inPos] & 134217727) >>> 7)) & 255); out[93 + outPos] = (byte)(( // [76543210] // [____21098765_______________] ((in[27 + inPos] & 134217727) >>> 15)) & 255); out[94 + outPos] = (byte)(( // [____3210] // [6543_______________________] ((in[27 + inPos] & 134217727) >>> 23) | // [7654____] // [_______________________3210] ((in[28 + inPos] & 134217727) << 4)) & 255); out[95 + outPos] = (byte)(( // [76543210] // [_______________10987654____] ((in[28 + inPos] & 134217727) >>> 4)) & 255); out[96 + outPos] = (byte)(( // [76543210] // [_______98765432____________] ((in[28 + inPos] & 134217727) >>> 12)) & 255); out[97 + outPos] = (byte)(( // [_6543210] // [6543210____________________] ((in[28 + inPos] & 134217727) >>> 20) | // [7_______] // [__________________________0] ((in[29 + inPos] & 134217727) << 7)) & 255); out[98 + outPos] = (byte)(( // [76543210] // [__________________87654321_] ((in[29 + inPos] & 134217727) >>> 1)) & 255); out[99 + outPos] = (byte)(( // [76543210] // [__________65432109_________] ((in[29 + inPos] & 134217727) >>> 9)) & 255); out[100 + outPos] = (byte)(( // [76543210] // [__43210987_________________] ((in[29 + inPos] & 134217727) >>> 17)) & 255); out[101 + outPos] = (byte)(( // [______10] // [65_________________________] ((in[29 + inPos] & 134217727) >>> 25) | // [765432__] // [_____________________543210] ((in[30 + inPos] & 134217727) << 2)) & 255); out[102 + outPos] = (byte)(( // [76543210] // [_____________32109876______] ((in[30 + inPos] & 134217727) >>> 6)) & 255); out[103 + outPos] = (byte)(( // [76543210] // [_____10987654______________] ((in[30 + inPos] & 134217727) >>> 14)) & 255); out[104 + outPos] = (byte)(( // [___43210] // [65432______________________] ((in[30 + inPos] & 134217727) >>> 22) | // [765_____] // [________________________210] ((in[31 + inPos] & 134217727) << 5)) & 255); out[105 + outPos] = (byte)(( // [76543210] // [________________09876543___] ((in[31 + inPos] & 134217727) >>> 3)) & 255); out[106 + outPos] = (byte)(( // [76543210] // [________87654321___________] ((in[31 + inPos] & 134217727) >>> 11)) & 255); out[107 + outPos] = (byte)(( // [76543210] // [65432109___________________] ((in[31 + inPos] & 134217727) >>> 19)) & 255); } public final void unpack8Values(final byte[] in, final int inPos, final int[] out, final int outPos) { out[ 0 + outPos] = // [76543210] // [___________________76543210] (((((int)in[ 0 + inPos]) & 255) ) & 134217727) | // [76543210] // [___________54321098________] (((((int)in[ 1 + inPos]) & 255) << 8) & 134217727) | // [76543210] // [___32109876________________] (((((int)in[ 2 + inPos]) & 255) << 16) & 134217727) | // [_____210] // [654________________________] (((((int)in[ 3 + inPos]) & 255) << 24) & 134217727); out[ 1 + outPos] = // [76543___] // [______________________43210] (((((int)in[ 3 + inPos]) & 255) >>> 3) & 134217727) | // [76543210] // [______________21098765_____] (((((int)in[ 4 + inPos]) & 255) << 5) & 134217727) | // [76543210] // [______09876543_____________] (((((int)in[ 5 + inPos]) & 255) << 13) & 134217727) | // [__543210] // [654321_____________________] (((((int)in[ 6 + inPos]) & 255) << 21) & 134217727); out[ 2 + outPos] = // [76______] // [_________________________10] (((((int)in[ 6 + inPos]) & 255) >>> 6) & 134217727) | // [76543210] // [_________________98765432__] (((((int)in[ 7 + inPos]) & 255) << 2) & 134217727) | // [76543210] // [_________76543210__________] (((((int)in[ 8 + inPos]) & 255) << 10) & 134217727) | // [76543210] // [_54321098__________________] (((((int)in[ 9 + inPos]) & 255) << 18) & 134217727) | // [_______0] // [6__________________________] (((((int)in[10 + inPos]) & 255) << 26) & 134217727); out[ 3 + outPos] = // [7654321_] // [____________________6543210] (((((int)in[10 + inPos]) & 255) >>> 1) & 134217727) | // [76543210] // [____________43210987_______] (((((int)in[11 + inPos]) & 255) << 7) & 134217727) | // [76543210] // [____21098765_______________] (((((int)in[12 + inPos]) & 255) << 15) & 134217727) | // [____3210] // [6543_______________________] (((((int)in[13 + inPos]) & 255) << 23) & 134217727); out[ 4 + outPos] = // [7654____] // [_______________________3210] (((((int)in[13 + inPos]) & 255) >>> 4) & 134217727) | // [76543210] // [_______________10987654____] (((((int)in[14 + inPos]) & 255) << 4) & 134217727) | // [76543210] // [_______98765432____________] (((((int)in[15 + inPos]) & 255) << 12) & 134217727) | // [_6543210] // [6543210____________________] (((((int)in[16 + inPos]) & 255) << 20) & 134217727); out[ 5 + outPos] = // [7_______] // [__________________________0] (((((int)in[16 + inPos]) & 255) >>> 7) & 134217727) | // [76543210] // [__________________87654321_] (((((int)in[17 + inPos]) & 255) << 1) & 134217727) | // [76543210] // [__________65432109_________] (((((int)in[18 + inPos]) & 255) << 9) & 134217727) | // [76543210] // [__43210987_________________] (((((int)in[19 + inPos]) & 255) << 17) & 134217727) | // [______10] // [65_________________________] (((((int)in[20 + inPos]) & 255) << 25) & 134217727); out[ 6 + outPos] = // [765432__] // [_____________________543210] (((((int)in[20 + inPos]) & 255) >>> 2) & 134217727) | // [76543210] // [_____________32109876______] (((((int)in[21 + inPos]) & 255) << 6) & 134217727) | // [76543210] // [_____10987654______________] (((((int)in[22 + inPos]) & 255) << 14) & 134217727) | // [___43210] // [65432______________________] (((((int)in[23 + inPos]) & 255) << 22) & 134217727); out[ 7 + outPos] = // [765_____] // [________________________210] (((((int)in[23 + inPos]) & 255) >>> 5) & 134217727) | // [76543210] // [________________09876543___] (((((int)in[24 + inPos]) & 255) << 3) & 134217727) | // [76543210] // [________87654321___________] (((((int)in[25 + inPos]) & 255) << 11) & 134217727) | // [76543210] // [65432109___________________] (((((int)in[26 + inPos]) & 255) << 19) & 134217727); } public final void unpack32Values(final byte[] in, final int inPos, final int[] out, final int outPos) { out[ 0 + outPos] = // [76543210] // [___________________76543210] (((((int)in[ 0 + inPos]) & 255) ) & 134217727) | // [76543210] // [___________54321098________] (((((int)in[ 1 + inPos]) & 255) << 8) & 134217727) | // [76543210] // [___32109876________________] (((((int)in[ 2 + inPos]) & 255) << 16) & 134217727) | // [_____210] // [654________________________] (((((int)in[ 3 + inPos]) & 255) << 24) & 134217727); out[ 1 + outPos] = // [76543___] // [______________________43210] (((((int)in[ 3 + inPos]) & 255) >>> 3) & 134217727) | // [76543210] // [______________21098765_____] (((((int)in[ 4 + inPos]) & 255) << 5) & 134217727) | // [76543210] // [______09876543_____________] (((((int)in[ 5 + inPos]) & 255) << 13) & 134217727) | // [__543210] // [654321_____________________] (((((int)in[ 6 + inPos]) & 255) << 21) & 134217727); out[ 2 + outPos] = // [76______] // [_________________________10] (((((int)in[ 6 + inPos]) & 255) >>> 6) & 134217727) | // [76543210] // [_________________98765432__] (((((int)in[ 7 + inPos]) & 255) << 2) & 134217727) | // [76543210] // [_________76543210__________] (((((int)in[ 8 + inPos]) & 255) << 10) & 134217727) | // [76543210] // [_54321098__________________] (((((int)in[ 9 + inPos]) & 255) << 18) & 134217727) | // [_______0] // [6__________________________] (((((int)in[10 + inPos]) & 255) << 26) & 134217727); out[ 3 + outPos] = // [7654321_] // [____________________6543210] (((((int)in[10 + inPos]) & 255) >>> 1) & 134217727) | // [76543210] // [____________43210987_______] (((((int)in[11 + inPos]) & 255) << 7) & 134217727) | // [76543210] // [____21098765_______________] (((((int)in[12 + inPos]) & 255) << 15) & 134217727) | // [____3210] // [6543_______________________] (((((int)in[13 + inPos]) & 255) << 23) & 134217727); out[ 4 + outPos] = // [7654____] // [_______________________3210] (((((int)in[13 + inPos]) & 255) >>> 4) & 134217727) | // [76543210] // [_______________10987654____] (((((int)in[14 + inPos]) & 255) << 4) & 134217727) | // [76543210] // [_______98765432____________] (((((int)in[15 + inPos]) & 255) << 12) & 134217727) | // [_6543210] // [6543210____________________] (((((int)in[16 + inPos]) & 255) << 20) & 134217727); out[ 5 + outPos] = // [7_______] // [__________________________0] (((((int)in[16 + inPos]) & 255) >>> 7) & 134217727) | // [76543210] // [__________________87654321_] (((((int)in[17 + inPos]) & 255) << 1) & 134217727) | // [76543210] // [__________65432109_________] (((((int)in[18 + inPos]) & 255) << 9) & 134217727) | // [76543210] // [__43210987_________________] (((((int)in[19 + inPos]) & 255) << 17) & 134217727) | // [______10] // [65_________________________] (((((int)in[20 + inPos]) & 255) << 25) & 134217727); out[ 6 + outPos] = // [765432__] // [_____________________543210] (((((int)in[20 + inPos]) & 255) >>> 2) & 134217727) | // [76543210] // [_____________32109876______] (((((int)in[21 + inPos]) & 255) << 6) & 134217727) | // [76543210] // [_____10987654______________] (((((int)in[22 + inPos]) & 255) << 14) & 134217727) | // [___43210] // [65432______________________] (((((int)in[23 + inPos]) & 255) << 22) & 134217727); out[ 7 + outPos] = // [765_____] // [________________________210] (((((int)in[23 + inPos]) & 255) >>> 5) & 134217727) | // [76543210] // [________________09876543___] (((((int)in[24 + inPos]) & 255) << 3) & 134217727) | // [76543210] // [________87654321___________] (((((int)in[25 + inPos]) & 255) << 11) & 134217727) | // [76543210] // [65432109___________________] (((((int)in[26 + inPos]) & 255) << 19) & 134217727); out[ 8 + outPos] = // [76543210] // [___________________76543210] (((((int)in[27 + inPos]) & 255) ) & 134217727) | // [76543210] // [___________54321098________] (((((int)in[28 + inPos]) & 255) << 8) & 134217727) | // [76543210] // [___32109876________________] (((((int)in[29 + inPos]) & 255) << 16) & 134217727) | // [_____210] // [654________________________] (((((int)in[30 + inPos]) & 255) << 24) & 134217727); out[ 9 + outPos] = // [76543___] // [______________________43210] (((((int)in[30 + inPos]) & 255) >>> 3) & 134217727) | // [76543210] // [______________21098765_____] (((((int)in[31 + inPos]) & 255) << 5) & 134217727) | // [76543210] // [______09876543_____________] (((((int)in[32 + inPos]) & 255) << 13) & 134217727) | // [__543210] // [654321_____________________] (((((int)in[33 + inPos]) & 255) << 21) & 134217727); out[10 + outPos] = // [76______] // [_________________________10] (((((int)in[33 + inPos]) & 255) >>> 6) & 134217727) | // [76543210] // [_________________98765432__] (((((int)in[34 + inPos]) & 255) << 2) & 134217727) | // [76543210] // [_________76543210__________] (((((int)in[35 + inPos]) & 255) << 10) & 134217727) | // [76543210] // [_54321098__________________] (((((int)in[36 + inPos]) & 255) << 18) & 134217727) | // [_______0] // [6__________________________] (((((int)in[37 + inPos]) & 255) << 26) & 134217727); out[11 + outPos] = // [7654321_] // [____________________6543210] (((((int)in[37 + inPos]) & 255) >>> 1) & 134217727) | // [76543210] // [____________43210987_______] (((((int)in[38 + inPos]) & 255) << 7) & 134217727) | // [76543210] // [____21098765_______________] (((((int)in[39 + inPos]) & 255) << 15) & 134217727) | // [____3210] // [6543_______________________] (((((int)in[40 + inPos]) & 255) << 23) & 134217727); out[12 + outPos] = // [7654____] // [_______________________3210] (((((int)in[40 + inPos]) & 255) >>> 4) & 134217727) | // [76543210] // [_______________10987654____] (((((int)in[41 + inPos]) & 255) << 4) & 134217727) | // [76543210] // [_______98765432____________] (((((int)in[42 + inPos]) & 255) << 12) & 134217727) | // [_6543210] // [6543210____________________] (((((int)in[43 + inPos]) & 255) << 20) & 134217727); out[13 + outPos] = // [7_______] // [__________________________0] (((((int)in[43 + inPos]) & 255) >>> 7) & 134217727) | // [76543210] // [__________________87654321_] (((((int)in[44 + inPos]) & 255) << 1) & 134217727) | // [76543210] // [__________65432109_________] (((((int)in[45 + inPos]) & 255) << 9) & 134217727) | // [76543210] // [__43210987_________________] (((((int)in[46 + inPos]) & 255) << 17) & 134217727) | // [______10] // [65_________________________] (((((int)in[47 + inPos]) & 255) << 25) & 134217727); out[14 + outPos] = // [765432__] // [_____________________543210] (((((int)in[47 + inPos]) & 255) >>> 2) & 134217727) | // [76543210] // [_____________32109876______] (((((int)in[48 + inPos]) & 255) << 6) & 134217727) | // [76543210] // [_____10987654______________] (((((int)in[49 + inPos]) & 255) << 14) & 134217727) | // [___43210] // [65432______________________] (((((int)in[50 + inPos]) & 255) << 22) & 134217727); out[15 + outPos] = // [765_____] // [________________________210] (((((int)in[50 + inPos]) & 255) >>> 5) & 134217727) | // [76543210] // [________________09876543___] (((((int)in[51 + inPos]) & 255) << 3) & 134217727) | // [76543210] // [________87654321___________] (((((int)in[52 + inPos]) & 255) << 11) & 134217727) | // [76543210] // [65432109___________________] (((((int)in[53 + inPos]) & 255) << 19) & 134217727); out[16 + outPos] = // [76543210] // [___________________76543210] (((((int)in[54 + inPos]) & 255) ) & 134217727) | // [76543210] // [___________54321098________] (((((int)in[55 + inPos]) & 255) << 8) & 134217727) | // [76543210] // [___32109876________________] (((((int)in[56 + inPos]) & 255) << 16) & 134217727) | // [_____210] // [654________________________] (((((int)in[57 + inPos]) & 255) << 24) & 134217727); out[17 + outPos] = // [76543___] // [______________________43210] (((((int)in[57 + inPos]) & 255) >>> 3) & 134217727) | // [76543210] // [______________21098765_____] (((((int)in[58 + inPos]) & 255) << 5) & 134217727) | // [76543210] // [______09876543_____________] (((((int)in[59 + inPos]) & 255) << 13) & 134217727) | // [__543210] // [654321_____________________] (((((int)in[60 + inPos]) & 255) << 21) & 134217727); out[18 + outPos] = // [76______] // [_________________________10] (((((int)in[60 + inPos]) & 255) >>> 6) & 134217727) | // [76543210] // [_________________98765432__] (((((int)in[61 + inPos]) & 255) << 2) & 134217727) | // [76543210] // [_________76543210__________] (((((int)in[62 + inPos]) & 255) << 10) & 134217727) | // [76543210] // [_54321098__________________] (((((int)in[63 + inPos]) & 255) << 18) & 134217727) | // [_______0] // [6__________________________] (((((int)in[64 + inPos]) & 255) << 26) & 134217727); out[19 + outPos] = // [7654321_] // [____________________6543210] (((((int)in[64 + inPos]) & 255) >>> 1) & 134217727) | // [76543210] // [____________43210987_______] (((((int)in[65 + inPos]) & 255) << 7) & 134217727) | // [76543210] // [____21098765_______________] (((((int)in[66 + inPos]) & 255) << 15) & 134217727) | // [____3210] // [6543_______________________] (((((int)in[67 + inPos]) & 255) << 23) & 134217727); out[20 + outPos] = // [7654____] // [_______________________3210] (((((int)in[67 + inPos]) & 255) >>> 4) & 134217727) | // [76543210] // [_______________10987654____] (((((int)in[68 + inPos]) & 255) << 4) & 134217727) | // [76543210] // [_______98765432____________] (((((int)in[69 + inPos]) & 255) << 12) & 134217727) | // [_6543210] // [6543210____________________] (((((int)in[70 + inPos]) & 255) << 20) & 134217727); out[21 + outPos] = // [7_______] // [__________________________0] (((((int)in[70 + inPos]) & 255) >>> 7) & 134217727) | // [76543210] // [__________________87654321_] (((((int)in[71 + inPos]) & 255) << 1) & 134217727) | // [76543210] // [__________65432109_________] (((((int)in[72 + inPos]) & 255) << 9) & 134217727) | // [76543210] // [__43210987_________________] (((((int)in[73 + inPos]) & 255) << 17) & 134217727) | // [______10] // [65_________________________] (((((int)in[74 + inPos]) & 255) << 25) & 134217727); out[22 + outPos] = // [765432__] // [_____________________543210] (((((int)in[74 + inPos]) & 255) >>> 2) & 134217727) | // [76543210] // [_____________32109876______] (((((int)in[75 + inPos]) & 255) << 6) & 134217727) | // [76543210] // [_____10987654______________] (((((int)in[76 + inPos]) & 255) << 14) & 134217727) | // [___43210] // [65432______________________] (((((int)in[77 + inPos]) & 255) << 22) & 134217727); out[23 + outPos] = // [765_____] // [________________________210] (((((int)in[77 + inPos]) & 255) >>> 5) & 134217727) | // [76543210] // [________________09876543___] (((((int)in[78 + inPos]) & 255) << 3) & 134217727) | // [76543210] // [________87654321___________] (((((int)in[79 + inPos]) & 255) << 11) & 134217727) | // [76543210] // [65432109___________________] (((((int)in[80 + inPos]) & 255) << 19) & 134217727); out[24 + outPos] = // [76543210] // [___________________76543210] (((((int)in[81 + inPos]) & 255) ) & 134217727) | // [76543210] // [___________54321098________] (((((int)in[82 + inPos]) & 255) << 8) & 134217727) | // [76543210] // [___32109876________________] (((((int)in[83 + inPos]) & 255) << 16) & 134217727) | // [_____210] // [654________________________] (((((int)in[84 + inPos]) & 255) << 24) & 134217727); out[25 + outPos] = // [76543___] // [______________________43210] (((((int)in[84 + inPos]) & 255) >>> 3) & 134217727) | // [76543210] // [______________21098765_____] (((((int)in[85 + inPos]) & 255) << 5) & 134217727) | // [76543210] // [______09876543_____________] (((((int)in[86 + inPos]) & 255) << 13) & 134217727) | // [__543210] // [654321_____________________] (((((int)in[87 + inPos]) & 255) << 21) & 134217727); out[26 + outPos] = // [76______] // [_________________________10] (((((int)in[87 + inPos]) & 255) >>> 6) & 134217727) | // [76543210] // [_________________98765432__] (((((int)in[88 + inPos]) & 255) << 2) & 134217727) | // [76543210] // [_________76543210__________] (((((int)in[89 + inPos]) & 255) << 10) & 134217727) | // [76543210] // [_54321098__________________] (((((int)in[90 + inPos]) & 255) << 18) & 134217727) | // [_______0] // [6__________________________] (((((int)in[91 + inPos]) & 255) << 26) & 134217727); out[27 + outPos] = // [7654321_] // [____________________6543210] (((((int)in[91 + inPos]) & 255) >>> 1) & 134217727) | // [76543210] // [____________43210987_______] (((((int)in[92 + inPos]) & 255) << 7) & 134217727) | // [76543210] // [____21098765_______________] (((((int)in[93 + inPos]) & 255) << 15) & 134217727) | // [____3210] // [6543_______________________] (((((int)in[94 + inPos]) & 255) << 23) & 134217727); out[28 + outPos] = // [7654____] // [_______________________3210] (((((int)in[94 + inPos]) & 255) >>> 4) & 134217727) | // [76543210] // [_______________10987654____] (((((int)in[95 + inPos]) & 255) << 4) & 134217727) | // [76543210] // [_______98765432____________] (((((int)in[96 + inPos]) & 255) << 12) & 134217727) | // [_6543210] // [6543210____________________] (((((int)in[97 + inPos]) & 255) << 20) & 134217727); out[29 + outPos] = // [7_______] // [__________________________0] (((((int)in[97 + inPos]) & 255) >>> 7) & 134217727) | // [76543210] // [__________________87654321_] (((((int)in[98 + inPos]) & 255) << 1) & 134217727) | // [76543210] // [__________65432109_________] (((((int)in[99 + inPos]) & 255) << 9) & 134217727) | // [76543210] // [__43210987_________________] (((((int)in[100 + inPos]) & 255) << 17) & 134217727) | // [______10] // [65_________________________] (((((int)in[101 + inPos]) & 255) << 25) & 134217727); out[30 + outPos] = // [765432__] // [_____________________543210] (((((int)in[101 + inPos]) & 255) >>> 2) & 134217727) | // [76543210] // [_____________32109876______] (((((int)in[102 + inPos]) & 255) << 6) & 134217727) | // [76543210] // [_____10987654______________] (((((int)in[103 + inPos]) & 255) << 14) & 134217727) | // [___43210] // [65432______________________] (((((int)in[104 + inPos]) & 255) << 22) & 134217727); out[31 + outPos] = // [765_____] // [________________________210] (((((int)in[104 + inPos]) & 255) >>> 5) & 134217727) | // [76543210] // [________________09876543___] (((((int)in[105 + inPos]) & 255) << 3) & 134217727) | // [76543210] // [________87654321___________] (((((int)in[106 + inPos]) & 255) << 11) & 134217727) | // [76543210] // [65432109___________________] (((((int)in[107 + inPos]) & 255) << 19) & 134217727); } } private static final class Packer28 extends BytePacker { private Packer28() { super(28); } public final void pack8Values(final int[] in, final int inPos, final byte[] out, final int outPos) { out[ 0 + outPos] = (byte)(( // [76543210] // [____________________76543210] ((in[ 0 + inPos] & 268435455))) & 255); out[ 1 + outPos] = (byte)(( // [76543210] // [____________54321098________] ((in[ 0 + inPos] & 268435455) >>> 8)) & 255); out[ 2 + outPos] = (byte)(( // [76543210] // [____32109876________________] ((in[ 0 + inPos] & 268435455) >>> 16)) & 255); out[ 3 + outPos] = (byte)(( // [____3210] // [7654________________________] ((in[ 0 + inPos] & 268435455) >>> 24) | // [7654____] // [________________________3210] ((in[ 1 + inPos] & 268435455) << 4)) & 255); out[ 4 + outPos] = (byte)(( // [76543210] // [________________10987654____] ((in[ 1 + inPos] & 268435455) >>> 4)) & 255); out[ 5 + outPos] = (byte)(( // [76543210] // [________98765432____________] ((in[ 1 + inPos] & 268435455) >>> 12)) & 255); out[ 6 + outPos] = (byte)(( // [76543210] // [76543210____________________] ((in[ 1 + inPos] & 268435455) >>> 20)) & 255); out[ 7 + outPos] = (byte)(( // [76543210] // [____________________76543210] ((in[ 2 + inPos] & 268435455))) & 255); out[ 8 + outPos] = (byte)(( // [76543210] // [____________54321098________] ((in[ 2 + inPos] & 268435455) >>> 8)) & 255); out[ 9 + outPos] = (byte)(( // [76543210] // [____32109876________________] ((in[ 2 + inPos] & 268435455) >>> 16)) & 255); out[10 + outPos] = (byte)(( // [____3210] // [7654________________________] ((in[ 2 + inPos] & 268435455) >>> 24) | // [7654____] // [________________________3210] ((in[ 3 + inPos] & 268435455) << 4)) & 255); out[11 + outPos] = (byte)(( // [76543210] // [________________10987654____] ((in[ 3 + inPos] & 268435455) >>> 4)) & 255); out[12 + outPos] = (byte)(( // [76543210] // [________98765432____________] ((in[ 3 + inPos] & 268435455) >>> 12)) & 255); out[13 + outPos] = (byte)(( // [76543210] // [76543210____________________] ((in[ 3 + inPos] & 268435455) >>> 20)) & 255); out[14 + outPos] = (byte)(( // [76543210] // [____________________76543210] ((in[ 4 + inPos] & 268435455))) & 255); out[15 + outPos] = (byte)(( // [76543210] // [____________54321098________] ((in[ 4 + inPos] & 268435455) >>> 8)) & 255); out[16 + outPos] = (byte)(( // [76543210] // [____32109876________________] ((in[ 4 + inPos] & 268435455) >>> 16)) & 255); out[17 + outPos] = (byte)(( // [____3210] // [7654________________________] ((in[ 4 + inPos] & 268435455) >>> 24) | // [7654____] // [________________________3210] ((in[ 5 + inPos] & 268435455) << 4)) & 255); out[18 + outPos] = (byte)(( // [76543210] // [________________10987654____] ((in[ 5 + inPos] & 268435455) >>> 4)) & 255); out[19 + outPos] = (byte)(( // [76543210] // [________98765432____________] ((in[ 5 + inPos] & 268435455) >>> 12)) & 255); out[20 + outPos] = (byte)(( // [76543210] // [76543210____________________] ((in[ 5 + inPos] & 268435455) >>> 20)) & 255); out[21 + outPos] = (byte)(( // [76543210] // [____________________76543210] ((in[ 6 + inPos] & 268435455))) & 255); out[22 + outPos] = (byte)(( // [76543210] // [____________54321098________] ((in[ 6 + inPos] & 268435455) >>> 8)) & 255); out[23 + outPos] = (byte)(( // [76543210] // [____32109876________________] ((in[ 6 + inPos] & 268435455) >>> 16)) & 255); out[24 + outPos] = (byte)(( // [____3210] // [7654________________________] ((in[ 6 + inPos] & 268435455) >>> 24) | // [7654____] // [________________________3210] ((in[ 7 + inPos] & 268435455) << 4)) & 255); out[25 + outPos] = (byte)(( // [76543210] // [________________10987654____] ((in[ 7 + inPos] & 268435455) >>> 4)) & 255); out[26 + outPos] = (byte)(( // [76543210] // [________98765432____________] ((in[ 7 + inPos] & 268435455) >>> 12)) & 255); out[27 + outPos] = (byte)(( // [76543210] // [76543210____________________] ((in[ 7 + inPos] & 268435455) >>> 20)) & 255); } public final void pack32Values(final int[] in, final int inPos, final byte[] out, final int outPos) { out[ 0 + outPos] = (byte)(( // [76543210] // [____________________76543210] ((in[ 0 + inPos] & 268435455))) & 255); out[ 1 + outPos] = (byte)(( // [76543210] // [____________54321098________] ((in[ 0 + inPos] & 268435455) >>> 8)) & 255); out[ 2 + outPos] = (byte)(( // [76543210] // [____32109876________________] ((in[ 0 + inPos] & 268435455) >>> 16)) & 255); out[ 3 + outPos] = (byte)(( // [____3210] // [7654________________________] ((in[ 0 + inPos] & 268435455) >>> 24) | // [7654____] // [________________________3210] ((in[ 1 + inPos] & 268435455) << 4)) & 255); out[ 4 + outPos] = (byte)(( // [76543210] // [________________10987654____] ((in[ 1 + inPos] & 268435455) >>> 4)) & 255); out[ 5 + outPos] = (byte)(( // [76543210] // [________98765432____________] ((in[ 1 + inPos] & 268435455) >>> 12)) & 255); out[ 6 + outPos] = (byte)(( // [76543210] // [76543210____________________] ((in[ 1 + inPos] & 268435455) >>> 20)) & 255); out[ 7 + outPos] = (byte)(( // [76543210] // [____________________76543210] ((in[ 2 + inPos] & 268435455))) & 255); out[ 8 + outPos] = (byte)(( // [76543210] // [____________54321098________] ((in[ 2 + inPos] & 268435455) >>> 8)) & 255); out[ 9 + outPos] = (byte)(( // [76543210] // [____32109876________________] ((in[ 2 + inPos] & 268435455) >>> 16)) & 255); out[10 + outPos] = (byte)(( // [____3210] // [7654________________________] ((in[ 2 + inPos] & 268435455) >>> 24) | // [7654____] // [________________________3210] ((in[ 3 + inPos] & 268435455) << 4)) & 255); out[11 + outPos] = (byte)(( // [76543210] // [________________10987654____] ((in[ 3 + inPos] & 268435455) >>> 4)) & 255); out[12 + outPos] = (byte)(( // [76543210] // [________98765432____________] ((in[ 3 + inPos] & 268435455) >>> 12)) & 255); out[13 + outPos] = (byte)(( // [76543210] // [76543210____________________] ((in[ 3 + inPos] & 268435455) >>> 20)) & 255); out[14 + outPos] = (byte)(( // [76543210] // [____________________76543210] ((in[ 4 + inPos] & 268435455))) & 255); out[15 + outPos] = (byte)(( // [76543210] // [____________54321098________] ((in[ 4 + inPos] & 268435455) >>> 8)) & 255); out[16 + outPos] = (byte)(( // [76543210] // [____32109876________________] ((in[ 4 + inPos] & 268435455) >>> 16)) & 255); out[17 + outPos] = (byte)(( // [____3210] // [7654________________________] ((in[ 4 + inPos] & 268435455) >>> 24) | // [7654____] // [________________________3210] ((in[ 5 + inPos] & 268435455) << 4)) & 255); out[18 + outPos] = (byte)(( // [76543210] // [________________10987654____] ((in[ 5 + inPos] & 268435455) >>> 4)) & 255); out[19 + outPos] = (byte)(( // [76543210] // [________98765432____________] ((in[ 5 + inPos] & 268435455) >>> 12)) & 255); out[20 + outPos] = (byte)(( // [76543210] // [76543210____________________] ((in[ 5 + inPos] & 268435455) >>> 20)) & 255); out[21 + outPos] = (byte)(( // [76543210] // [____________________76543210] ((in[ 6 + inPos] & 268435455))) & 255); out[22 + outPos] = (byte)(( // [76543210] // [____________54321098________] ((in[ 6 + inPos] & 268435455) >>> 8)) & 255); out[23 + outPos] = (byte)(( // [76543210] // [____32109876________________] ((in[ 6 + inPos] & 268435455) >>> 16)) & 255); out[24 + outPos] = (byte)(( // [____3210] // [7654________________________] ((in[ 6 + inPos] & 268435455) >>> 24) | // [7654____] // [________________________3210] ((in[ 7 + inPos] & 268435455) << 4)) & 255); out[25 + outPos] = (byte)(( // [76543210] // [________________10987654____] ((in[ 7 + inPos] & 268435455) >>> 4)) & 255); out[26 + outPos] = (byte)(( // [76543210] // [________98765432____________] ((in[ 7 + inPos] & 268435455) >>> 12)) & 255); out[27 + outPos] = (byte)(( // [76543210] // [76543210____________________] ((in[ 7 + inPos] & 268435455) >>> 20)) & 255); out[28 + outPos] = (byte)(( // [76543210] // [____________________76543210] ((in[ 8 + inPos] & 268435455))) & 255); out[29 + outPos] = (byte)(( // [76543210] // [____________54321098________] ((in[ 8 + inPos] & 268435455) >>> 8)) & 255); out[30 + outPos] = (byte)(( // [76543210] // [____32109876________________] ((in[ 8 + inPos] & 268435455) >>> 16)) & 255); out[31 + outPos] = (byte)(( // [____3210] // [7654________________________] ((in[ 8 + inPos] & 268435455) >>> 24) | // [7654____] // [________________________3210] ((in[ 9 + inPos] & 268435455) << 4)) & 255); out[32 + outPos] = (byte)(( // [76543210] // [________________10987654____] ((in[ 9 + inPos] & 268435455) >>> 4)) & 255); out[33 + outPos] = (byte)(( // [76543210] // [________98765432____________] ((in[ 9 + inPos] & 268435455) >>> 12)) & 255); out[34 + outPos] = (byte)(( // [76543210] // [76543210____________________] ((in[ 9 + inPos] & 268435455) >>> 20)) & 255); out[35 + outPos] = (byte)(( // [76543210] // [____________________76543210] ((in[10 + inPos] & 268435455))) & 255); out[36 + outPos] = (byte)(( // [76543210] // [____________54321098________] ((in[10 + inPos] & 268435455) >>> 8)) & 255); out[37 + outPos] = (byte)(( // [76543210] // [____32109876________________] ((in[10 + inPos] & 268435455) >>> 16)) & 255); out[38 + outPos] = (byte)(( // [____3210] // [7654________________________] ((in[10 + inPos] & 268435455) >>> 24) | // [7654____] // [________________________3210] ((in[11 + inPos] & 268435455) << 4)) & 255); out[39 + outPos] = (byte)(( // [76543210] // [________________10987654____] ((in[11 + inPos] & 268435455) >>> 4)) & 255); out[40 + outPos] = (byte)(( // [76543210] // [________98765432____________] ((in[11 + inPos] & 268435455) >>> 12)) & 255); out[41 + outPos] = (byte)(( // [76543210] // [76543210____________________] ((in[11 + inPos] & 268435455) >>> 20)) & 255); out[42 + outPos] = (byte)(( // [76543210] // [____________________76543210] ((in[12 + inPos] & 268435455))) & 255); out[43 + outPos] = (byte)(( // [76543210] // [____________54321098________] ((in[12 + inPos] & 268435455) >>> 8)) & 255); out[44 + outPos] = (byte)(( // [76543210] // [____32109876________________] ((in[12 + inPos] & 268435455) >>> 16)) & 255); out[45 + outPos] = (byte)(( // [____3210] // [7654________________________] ((in[12 + inPos] & 268435455) >>> 24) | // [7654____] // [________________________3210] ((in[13 + inPos] & 268435455) << 4)) & 255); out[46 + outPos] = (byte)(( // [76543210] // [________________10987654____] ((in[13 + inPos] & 268435455) >>> 4)) & 255); out[47 + outPos] = (byte)(( // [76543210] // [________98765432____________] ((in[13 + inPos] & 268435455) >>> 12)) & 255); out[48 + outPos] = (byte)(( // [76543210] // [76543210____________________] ((in[13 + inPos] & 268435455) >>> 20)) & 255); out[49 + outPos] = (byte)(( // [76543210] // [____________________76543210] ((in[14 + inPos] & 268435455))) & 255); out[50 + outPos] = (byte)(( // [76543210] // [____________54321098________] ((in[14 + inPos] & 268435455) >>> 8)) & 255); out[51 + outPos] = (byte)(( // [76543210] // [____32109876________________] ((in[14 + inPos] & 268435455) >>> 16)) & 255); out[52 + outPos] = (byte)(( // [____3210] // [7654________________________] ((in[14 + inPos] & 268435455) >>> 24) | // [7654____] // [________________________3210] ((in[15 + inPos] & 268435455) << 4)) & 255); out[53 + outPos] = (byte)(( // [76543210] // [________________10987654____] ((in[15 + inPos] & 268435455) >>> 4)) & 255); out[54 + outPos] = (byte)(( // [76543210] // [________98765432____________] ((in[15 + inPos] & 268435455) >>> 12)) & 255); out[55 + outPos] = (byte)(( // [76543210] // [76543210____________________] ((in[15 + inPos] & 268435455) >>> 20)) & 255); out[56 + outPos] = (byte)(( // [76543210] // [____________________76543210] ((in[16 + inPos] & 268435455))) & 255); out[57 + outPos] = (byte)(( // [76543210] // [____________54321098________] ((in[16 + inPos] & 268435455) >>> 8)) & 255); out[58 + outPos] = (byte)(( // [76543210] // [____32109876________________] ((in[16 + inPos] & 268435455) >>> 16)) & 255); out[59 + outPos] = (byte)(( // [____3210] // [7654________________________] ((in[16 + inPos] & 268435455) >>> 24) | // [7654____] // [________________________3210] ((in[17 + inPos] & 268435455) << 4)) & 255); out[60 + outPos] = (byte)(( // [76543210] // [________________10987654____] ((in[17 + inPos] & 268435455) >>> 4)) & 255); out[61 + outPos] = (byte)(( // [76543210] // [________98765432____________] ((in[17 + inPos] & 268435455) >>> 12)) & 255); out[62 + outPos] = (byte)(( // [76543210] // [76543210____________________] ((in[17 + inPos] & 268435455) >>> 20)) & 255); out[63 + outPos] = (byte)(( // [76543210] // [____________________76543210] ((in[18 + inPos] & 268435455))) & 255); out[64 + outPos] = (byte)(( // [76543210] // [____________54321098________] ((in[18 + inPos] & 268435455) >>> 8)) & 255); out[65 + outPos] = (byte)(( // [76543210] // [____32109876________________] ((in[18 + inPos] & 268435455) >>> 16)) & 255); out[66 + outPos] = (byte)(( // [____3210] // [7654________________________] ((in[18 + inPos] & 268435455) >>> 24) | // [7654____] // [________________________3210] ((in[19 + inPos] & 268435455) << 4)) & 255); out[67 + outPos] = (byte)(( // [76543210] // [________________10987654____] ((in[19 + inPos] & 268435455) >>> 4)) & 255); out[68 + outPos] = (byte)(( // [76543210] // [________98765432____________] ((in[19 + inPos] & 268435455) >>> 12)) & 255); out[69 + outPos] = (byte)(( // [76543210] // [76543210____________________] ((in[19 + inPos] & 268435455) >>> 20)) & 255); out[70 + outPos] = (byte)(( // [76543210] // [____________________76543210] ((in[20 + inPos] & 268435455))) & 255); out[71 + outPos] = (byte)(( // [76543210] // [____________54321098________] ((in[20 + inPos] & 268435455) >>> 8)) & 255); out[72 + outPos] = (byte)(( // [76543210] // [____32109876________________] ((in[20 + inPos] & 268435455) >>> 16)) & 255); out[73 + outPos] = (byte)(( // [____3210] // [7654________________________] ((in[20 + inPos] & 268435455) >>> 24) | // [7654____] // [________________________3210] ((in[21 + inPos] & 268435455) << 4)) & 255); out[74 + outPos] = (byte)(( // [76543210] // [________________10987654____] ((in[21 + inPos] & 268435455) >>> 4)) & 255); out[75 + outPos] = (byte)(( // [76543210] // [________98765432____________] ((in[21 + inPos] & 268435455) >>> 12)) & 255); out[76 + outPos] = (byte)(( // [76543210] // [76543210____________________] ((in[21 + inPos] & 268435455) >>> 20)) & 255); out[77 + outPos] = (byte)(( // [76543210] // [____________________76543210] ((in[22 + inPos] & 268435455))) & 255); out[78 + outPos] = (byte)(( // [76543210] // [____________54321098________] ((in[22 + inPos] & 268435455) >>> 8)) & 255); out[79 + outPos] = (byte)(( // [76543210] // [____32109876________________] ((in[22 + inPos] & 268435455) >>> 16)) & 255); out[80 + outPos] = (byte)(( // [____3210] // [7654________________________] ((in[22 + inPos] & 268435455) >>> 24) | // [7654____] // [________________________3210] ((in[23 + inPos] & 268435455) << 4)) & 255); out[81 + outPos] = (byte)(( // [76543210] // [________________10987654____] ((in[23 + inPos] & 268435455) >>> 4)) & 255); out[82 + outPos] = (byte)(( // [76543210] // [________98765432____________] ((in[23 + inPos] & 268435455) >>> 12)) & 255); out[83 + outPos] = (byte)(( // [76543210] // [76543210____________________] ((in[23 + inPos] & 268435455) >>> 20)) & 255); out[84 + outPos] = (byte)(( // [76543210] // [____________________76543210] ((in[24 + inPos] & 268435455))) & 255); out[85 + outPos] = (byte)(( // [76543210] // [____________54321098________] ((in[24 + inPos] & 268435455) >>> 8)) & 255); out[86 + outPos] = (byte)(( // [76543210] // [____32109876________________] ((in[24 + inPos] & 268435455) >>> 16)) & 255); out[87 + outPos] = (byte)(( // [____3210] // [7654________________________] ((in[24 + inPos] & 268435455) >>> 24) | // [7654____] // [________________________3210] ((in[25 + inPos] & 268435455) << 4)) & 255); out[88 + outPos] = (byte)(( // [76543210] // [________________10987654____] ((in[25 + inPos] & 268435455) >>> 4)) & 255); out[89 + outPos] = (byte)(( // [76543210] // [________98765432____________] ((in[25 + inPos] & 268435455) >>> 12)) & 255); out[90 + outPos] = (byte)(( // [76543210] // [76543210____________________] ((in[25 + inPos] & 268435455) >>> 20)) & 255); out[91 + outPos] = (byte)(( // [76543210] // [____________________76543210] ((in[26 + inPos] & 268435455))) & 255); out[92 + outPos] = (byte)(( // [76543210] // [____________54321098________] ((in[26 + inPos] & 268435455) >>> 8)) & 255); out[93 + outPos] = (byte)(( // [76543210] // [____32109876________________] ((in[26 + inPos] & 268435455) >>> 16)) & 255); out[94 + outPos] = (byte)(( // [____3210] // [7654________________________] ((in[26 + inPos] & 268435455) >>> 24) | // [7654____] // [________________________3210] ((in[27 + inPos] & 268435455) << 4)) & 255); out[95 + outPos] = (byte)(( // [76543210] // [________________10987654____] ((in[27 + inPos] & 268435455) >>> 4)) & 255); out[96 + outPos] = (byte)(( // [76543210] // [________98765432____________] ((in[27 + inPos] & 268435455) >>> 12)) & 255); out[97 + outPos] = (byte)(( // [76543210] // [76543210____________________] ((in[27 + inPos] & 268435455) >>> 20)) & 255); out[98 + outPos] = (byte)(( // [76543210] // [____________________76543210] ((in[28 + inPos] & 268435455))) & 255); out[99 + outPos] = (byte)(( // [76543210] // [____________54321098________] ((in[28 + inPos] & 268435455) >>> 8)) & 255); out[100 + outPos] = (byte)(( // [76543210] // [____32109876________________] ((in[28 + inPos] & 268435455) >>> 16)) & 255); out[101 + outPos] = (byte)(( // [____3210] // [7654________________________] ((in[28 + inPos] & 268435455) >>> 24) | // [7654____] // [________________________3210] ((in[29 + inPos] & 268435455) << 4)) & 255); out[102 + outPos] = (byte)(( // [76543210] // [________________10987654____] ((in[29 + inPos] & 268435455) >>> 4)) & 255); out[103 + outPos] = (byte)(( // [76543210] // [________98765432____________] ((in[29 + inPos] & 268435455) >>> 12)) & 255); out[104 + outPos] = (byte)(( // [76543210] // [76543210____________________] ((in[29 + inPos] & 268435455) >>> 20)) & 255); out[105 + outPos] = (byte)(( // [76543210] // [____________________76543210] ((in[30 + inPos] & 268435455))) & 255); out[106 + outPos] = (byte)(( // [76543210] // [____________54321098________] ((in[30 + inPos] & 268435455) >>> 8)) & 255); out[107 + outPos] = (byte)(( // [76543210] // [____32109876________________] ((in[30 + inPos] & 268435455) >>> 16)) & 255); out[108 + outPos] = (byte)(( // [____3210] // [7654________________________] ((in[30 + inPos] & 268435455) >>> 24) | // [7654____] // [________________________3210] ((in[31 + inPos] & 268435455) << 4)) & 255); out[109 + outPos] = (byte)(( // [76543210] // [________________10987654____] ((in[31 + inPos] & 268435455) >>> 4)) & 255); out[110 + outPos] = (byte)(( // [76543210] // [________98765432____________] ((in[31 + inPos] & 268435455) >>> 12)) & 255); out[111 + outPos] = (byte)(( // [76543210] // [76543210____________________] ((in[31 + inPos] & 268435455) >>> 20)) & 255); } public final void unpack8Values(final byte[] in, final int inPos, final int[] out, final int outPos) { out[ 0 + outPos] = // [76543210] // [____________________76543210] (((((int)in[ 0 + inPos]) & 255) ) & 268435455) | // [76543210] // [____________54321098________] (((((int)in[ 1 + inPos]) & 255) << 8) & 268435455) | // [76543210] // [____32109876________________] (((((int)in[ 2 + inPos]) & 255) << 16) & 268435455) | // [____3210] // [7654________________________] (((((int)in[ 3 + inPos]) & 255) << 24) & 268435455); out[ 1 + outPos] = // [7654____] // [________________________3210] (((((int)in[ 3 + inPos]) & 255) >>> 4) & 268435455) | // [76543210] // [________________10987654____] (((((int)in[ 4 + inPos]) & 255) << 4) & 268435455) | // [76543210] // [________98765432____________] (((((int)in[ 5 + inPos]) & 255) << 12) & 268435455) | // [76543210] // [76543210____________________] (((((int)in[ 6 + inPos]) & 255) << 20) & 268435455); out[ 2 + outPos] = // [76543210] // [____________________76543210] (((((int)in[ 7 + inPos]) & 255) ) & 268435455) | // [76543210] // [____________54321098________] (((((int)in[ 8 + inPos]) & 255) << 8) & 268435455) | // [76543210] // [____32109876________________] (((((int)in[ 9 + inPos]) & 255) << 16) & 268435455) | // [____3210] // [7654________________________] (((((int)in[10 + inPos]) & 255) << 24) & 268435455); out[ 3 + outPos] = // [7654____] // [________________________3210] (((((int)in[10 + inPos]) & 255) >>> 4) & 268435455) | // [76543210] // [________________10987654____] (((((int)in[11 + inPos]) & 255) << 4) & 268435455) | // [76543210] // [________98765432____________] (((((int)in[12 + inPos]) & 255) << 12) & 268435455) | // [76543210] // [76543210____________________] (((((int)in[13 + inPos]) & 255) << 20) & 268435455); out[ 4 + outPos] = // [76543210] // [____________________76543210] (((((int)in[14 + inPos]) & 255) ) & 268435455) | // [76543210] // [____________54321098________] (((((int)in[15 + inPos]) & 255) << 8) & 268435455) | // [76543210] // [____32109876________________] (((((int)in[16 + inPos]) & 255) << 16) & 268435455) | // [____3210] // [7654________________________] (((((int)in[17 + inPos]) & 255) << 24) & 268435455); out[ 5 + outPos] = // [7654____] // [________________________3210] (((((int)in[17 + inPos]) & 255) >>> 4) & 268435455) | // [76543210] // [________________10987654____] (((((int)in[18 + inPos]) & 255) << 4) & 268435455) | // [76543210] // [________98765432____________] (((((int)in[19 + inPos]) & 255) << 12) & 268435455) | // [76543210] // [76543210____________________] (((((int)in[20 + inPos]) & 255) << 20) & 268435455); out[ 6 + outPos] = // [76543210] // [____________________76543210] (((((int)in[21 + inPos]) & 255) ) & 268435455) | // [76543210] // [____________54321098________] (((((int)in[22 + inPos]) & 255) << 8) & 268435455) | // [76543210] // [____32109876________________] (((((int)in[23 + inPos]) & 255) << 16) & 268435455) | // [____3210] // [7654________________________] (((((int)in[24 + inPos]) & 255) << 24) & 268435455); out[ 7 + outPos] = // [7654____] // [________________________3210] (((((int)in[24 + inPos]) & 255) >>> 4) & 268435455) | // [76543210] // [________________10987654____] (((((int)in[25 + inPos]) & 255) << 4) & 268435455) | // [76543210] // [________98765432____________] (((((int)in[26 + inPos]) & 255) << 12) & 268435455) | // [76543210] // [76543210____________________] (((((int)in[27 + inPos]) & 255) << 20) & 268435455); } public final void unpack32Values(final byte[] in, final int inPos, final int[] out, final int outPos) { out[ 0 + outPos] = // [76543210] // [____________________76543210] (((((int)in[ 0 + inPos]) & 255) ) & 268435455) | // [76543210] // [____________54321098________] (((((int)in[ 1 + inPos]) & 255) << 8) & 268435455) | // [76543210] // [____32109876________________] (((((int)in[ 2 + inPos]) & 255) << 16) & 268435455) | // [____3210] // [7654________________________] (((((int)in[ 3 + inPos]) & 255) << 24) & 268435455); out[ 1 + outPos] = // [7654____] // [________________________3210] (((((int)in[ 3 + inPos]) & 255) >>> 4) & 268435455) | // [76543210] // [________________10987654____] (((((int)in[ 4 + inPos]) & 255) << 4) & 268435455) | // [76543210] // [________98765432____________] (((((int)in[ 5 + inPos]) & 255) << 12) & 268435455) | // [76543210] // [76543210____________________] (((((int)in[ 6 + inPos]) & 255) << 20) & 268435455); out[ 2 + outPos] = // [76543210] // [____________________76543210] (((((int)in[ 7 + inPos]) & 255) ) & 268435455) | // [76543210] // [____________54321098________] (((((int)in[ 8 + inPos]) & 255) << 8) & 268435455) | // [76543210] // [____32109876________________] (((((int)in[ 9 + inPos]) & 255) << 16) & 268435455) | // [____3210] // [7654________________________] (((((int)in[10 + inPos]) & 255) << 24) & 268435455); out[ 3 + outPos] = // [7654____] // [________________________3210] (((((int)in[10 + inPos]) & 255) >>> 4) & 268435455) | // [76543210] // [________________10987654____] (((((int)in[11 + inPos]) & 255) << 4) & 268435455) | // [76543210] // [________98765432____________] (((((int)in[12 + inPos]) & 255) << 12) & 268435455) | // [76543210] // [76543210____________________] (((((int)in[13 + inPos]) & 255) << 20) & 268435455); out[ 4 + outPos] = // [76543210] // [____________________76543210] (((((int)in[14 + inPos]) & 255) ) & 268435455) | // [76543210] // [____________54321098________] (((((int)in[15 + inPos]) & 255) << 8) & 268435455) | // [76543210] // [____32109876________________] (((((int)in[16 + inPos]) & 255) << 16) & 268435455) | // [____3210] // [7654________________________] (((((int)in[17 + inPos]) & 255) << 24) & 268435455); out[ 5 + outPos] = // [7654____] // [________________________3210] (((((int)in[17 + inPos]) & 255) >>> 4) & 268435455) | // [76543210] // [________________10987654____] (((((int)in[18 + inPos]) & 255) << 4) & 268435455) | // [76543210] // [________98765432____________] (((((int)in[19 + inPos]) & 255) << 12) & 268435455) | // [76543210] // [76543210____________________] (((((int)in[20 + inPos]) & 255) << 20) & 268435455); out[ 6 + outPos] = // [76543210] // [____________________76543210] (((((int)in[21 + inPos]) & 255) ) & 268435455) | // [76543210] // [____________54321098________] (((((int)in[22 + inPos]) & 255) << 8) & 268435455) | // [76543210] // [____32109876________________] (((((int)in[23 + inPos]) & 255) << 16) & 268435455) | // [____3210] // [7654________________________] (((((int)in[24 + inPos]) & 255) << 24) & 268435455); out[ 7 + outPos] = // [7654____] // [________________________3210] (((((int)in[24 + inPos]) & 255) >>> 4) & 268435455) | // [76543210] // [________________10987654____] (((((int)in[25 + inPos]) & 255) << 4) & 268435455) | // [76543210] // [________98765432____________] (((((int)in[26 + inPos]) & 255) << 12) & 268435455) | // [76543210] // [76543210____________________] (((((int)in[27 + inPos]) & 255) << 20) & 268435455); out[ 8 + outPos] = // [76543210] // [____________________76543210] (((((int)in[28 + inPos]) & 255) ) & 268435455) | // [76543210] // [____________54321098________] (((((int)in[29 + inPos]) & 255) << 8) & 268435455) | // [76543210] // [____32109876________________] (((((int)in[30 + inPos]) & 255) << 16) & 268435455) | // [____3210] // [7654________________________] (((((int)in[31 + inPos]) & 255) << 24) & 268435455); out[ 9 + outPos] = // [7654____] // [________________________3210] (((((int)in[31 + inPos]) & 255) >>> 4) & 268435455) | // [76543210] // [________________10987654____] (((((int)in[32 + inPos]) & 255) << 4) & 268435455) | // [76543210] // [________98765432____________] (((((int)in[33 + inPos]) & 255) << 12) & 268435455) | // [76543210] // [76543210____________________] (((((int)in[34 + inPos]) & 255) << 20) & 268435455); out[10 + outPos] = // [76543210] // [____________________76543210] (((((int)in[35 + inPos]) & 255) ) & 268435455) | // [76543210] // [____________54321098________] (((((int)in[36 + inPos]) & 255) << 8) & 268435455) | // [76543210] // [____32109876________________] (((((int)in[37 + inPos]) & 255) << 16) & 268435455) | // [____3210] // [7654________________________] (((((int)in[38 + inPos]) & 255) << 24) & 268435455); out[11 + outPos] = // [7654____] // [________________________3210] (((((int)in[38 + inPos]) & 255) >>> 4) & 268435455) | // [76543210] // [________________10987654____] (((((int)in[39 + inPos]) & 255) << 4) & 268435455) | // [76543210] // [________98765432____________] (((((int)in[40 + inPos]) & 255) << 12) & 268435455) | // [76543210] // [76543210____________________] (((((int)in[41 + inPos]) & 255) << 20) & 268435455); out[12 + outPos] = // [76543210] // [____________________76543210] (((((int)in[42 + inPos]) & 255) ) & 268435455) | // [76543210] // [____________54321098________] (((((int)in[43 + inPos]) & 255) << 8) & 268435455) | // [76543210] // [____32109876________________] (((((int)in[44 + inPos]) & 255) << 16) & 268435455) | // [____3210] // [7654________________________] (((((int)in[45 + inPos]) & 255) << 24) & 268435455); out[13 + outPos] = // [7654____] // [________________________3210] (((((int)in[45 + inPos]) & 255) >>> 4) & 268435455) | // [76543210] // [________________10987654____] (((((int)in[46 + inPos]) & 255) << 4) & 268435455) | // [76543210] // [________98765432____________] (((((int)in[47 + inPos]) & 255) << 12) & 268435455) | // [76543210] // [76543210____________________] (((((int)in[48 + inPos]) & 255) << 20) & 268435455); out[14 + outPos] = // [76543210] // [____________________76543210] (((((int)in[49 + inPos]) & 255) ) & 268435455) | // [76543210] // [____________54321098________] (((((int)in[50 + inPos]) & 255) << 8) & 268435455) | // [76543210] // [____32109876________________] (((((int)in[51 + inPos]) & 255) << 16) & 268435455) | // [____3210] // [7654________________________] (((((int)in[52 + inPos]) & 255) << 24) & 268435455); out[15 + outPos] = // [7654____] // [________________________3210] (((((int)in[52 + inPos]) & 255) >>> 4) & 268435455) | // [76543210] // [________________10987654____] (((((int)in[53 + inPos]) & 255) << 4) & 268435455) | // [76543210] // [________98765432____________] (((((int)in[54 + inPos]) & 255) << 12) & 268435455) | // [76543210] // [76543210____________________] (((((int)in[55 + inPos]) & 255) << 20) & 268435455); out[16 + outPos] = // [76543210] // [____________________76543210] (((((int)in[56 + inPos]) & 255) ) & 268435455) | // [76543210] // [____________54321098________] (((((int)in[57 + inPos]) & 255) << 8) & 268435455) | // [76543210] // [____32109876________________] (((((int)in[58 + inPos]) & 255) << 16) & 268435455) | // [____3210] // [7654________________________] (((((int)in[59 + inPos]) & 255) << 24) & 268435455); out[17 + outPos] = // [7654____] // [________________________3210] (((((int)in[59 + inPos]) & 255) >>> 4) & 268435455) | // [76543210] // [________________10987654____] (((((int)in[60 + inPos]) & 255) << 4) & 268435455) | // [76543210] // [________98765432____________] (((((int)in[61 + inPos]) & 255) << 12) & 268435455) | // [76543210] // [76543210____________________] (((((int)in[62 + inPos]) & 255) << 20) & 268435455); out[18 + outPos] = // [76543210] // [____________________76543210] (((((int)in[63 + inPos]) & 255) ) & 268435455) | // [76543210] // [____________54321098________] (((((int)in[64 + inPos]) & 255) << 8) & 268435455) | // [76543210] // [____32109876________________] (((((int)in[65 + inPos]) & 255) << 16) & 268435455) | // [____3210] // [7654________________________] (((((int)in[66 + inPos]) & 255) << 24) & 268435455); out[19 + outPos] = // [7654____] // [________________________3210] (((((int)in[66 + inPos]) & 255) >>> 4) & 268435455) | // [76543210] // [________________10987654____] (((((int)in[67 + inPos]) & 255) << 4) & 268435455) | // [76543210] // [________98765432____________] (((((int)in[68 + inPos]) & 255) << 12) & 268435455) | // [76543210] // [76543210____________________] (((((int)in[69 + inPos]) & 255) << 20) & 268435455); out[20 + outPos] = // [76543210] // [____________________76543210] (((((int)in[70 + inPos]) & 255) ) & 268435455) | // [76543210] // [____________54321098________] (((((int)in[71 + inPos]) & 255) << 8) & 268435455) | // [76543210] // [____32109876________________] (((((int)in[72 + inPos]) & 255) << 16) & 268435455) | // [____3210] // [7654________________________] (((((int)in[73 + inPos]) & 255) << 24) & 268435455); out[21 + outPos] = // [7654____] // [________________________3210] (((((int)in[73 + inPos]) & 255) >>> 4) & 268435455) | // [76543210] // [________________10987654____] (((((int)in[74 + inPos]) & 255) << 4) & 268435455) | // [76543210] // [________98765432____________] (((((int)in[75 + inPos]) & 255) << 12) & 268435455) | // [76543210] // [76543210____________________] (((((int)in[76 + inPos]) & 255) << 20) & 268435455); out[22 + outPos] = // [76543210] // [____________________76543210] (((((int)in[77 + inPos]) & 255) ) & 268435455) | // [76543210] // [____________54321098________] (((((int)in[78 + inPos]) & 255) << 8) & 268435455) | // [76543210] // [____32109876________________] (((((int)in[79 + inPos]) & 255) << 16) & 268435455) | // [____3210] // [7654________________________] (((((int)in[80 + inPos]) & 255) << 24) & 268435455); out[23 + outPos] = // [7654____] // [________________________3210] (((((int)in[80 + inPos]) & 255) >>> 4) & 268435455) | // [76543210] // [________________10987654____] (((((int)in[81 + inPos]) & 255) << 4) & 268435455) | // [76543210] // [________98765432____________] (((((int)in[82 + inPos]) & 255) << 12) & 268435455) | // [76543210] // [76543210____________________] (((((int)in[83 + inPos]) & 255) << 20) & 268435455); out[24 + outPos] = // [76543210] // [____________________76543210] (((((int)in[84 + inPos]) & 255) ) & 268435455) | // [76543210] // [____________54321098________] (((((int)in[85 + inPos]) & 255) << 8) & 268435455) | // [76543210] // [____32109876________________] (((((int)in[86 + inPos]) & 255) << 16) & 268435455) | // [____3210] // [7654________________________] (((((int)in[87 + inPos]) & 255) << 24) & 268435455); out[25 + outPos] = // [7654____] // [________________________3210] (((((int)in[87 + inPos]) & 255) >>> 4) & 268435455) | // [76543210] // [________________10987654____] (((((int)in[88 + inPos]) & 255) << 4) & 268435455) | // [76543210] // [________98765432____________] (((((int)in[89 + inPos]) & 255) << 12) & 268435455) | // [76543210] // [76543210____________________] (((((int)in[90 + inPos]) & 255) << 20) & 268435455); out[26 + outPos] = // [76543210] // [____________________76543210] (((((int)in[91 + inPos]) & 255) ) & 268435455) | // [76543210] // [____________54321098________] (((((int)in[92 + inPos]) & 255) << 8) & 268435455) | // [76543210] // [____32109876________________] (((((int)in[93 + inPos]) & 255) << 16) & 268435455) | // [____3210] // [7654________________________] (((((int)in[94 + inPos]) & 255) << 24) & 268435455); out[27 + outPos] = // [7654____] // [________________________3210] (((((int)in[94 + inPos]) & 255) >>> 4) & 268435455) | // [76543210] // [________________10987654____] (((((int)in[95 + inPos]) & 255) << 4) & 268435455) | // [76543210] // [________98765432____________] (((((int)in[96 + inPos]) & 255) << 12) & 268435455) | // [76543210] // [76543210____________________] (((((int)in[97 + inPos]) & 255) << 20) & 268435455); out[28 + outPos] = // [76543210] // [____________________76543210] (((((int)in[98 + inPos]) & 255) ) & 268435455) | // [76543210] // [____________54321098________] (((((int)in[99 + inPos]) & 255) << 8) & 268435455) | // [76543210] // [____32109876________________] (((((int)in[100 + inPos]) & 255) << 16) & 268435455) | // [____3210] // [7654________________________] (((((int)in[101 + inPos]) & 255) << 24) & 268435455); out[29 + outPos] = // [7654____] // [________________________3210] (((((int)in[101 + inPos]) & 255) >>> 4) & 268435455) | // [76543210] // [________________10987654____] (((((int)in[102 + inPos]) & 255) << 4) & 268435455) | // [76543210] // [________98765432____________] (((((int)in[103 + inPos]) & 255) << 12) & 268435455) | // [76543210] // [76543210____________________] (((((int)in[104 + inPos]) & 255) << 20) & 268435455); out[30 + outPos] = // [76543210] // [____________________76543210] (((((int)in[105 + inPos]) & 255) ) & 268435455) | // [76543210] // [____________54321098________] (((((int)in[106 + inPos]) & 255) << 8) & 268435455) | // [76543210] // [____32109876________________] (((((int)in[107 + inPos]) & 255) << 16) & 268435455) | // [____3210] // [7654________________________] (((((int)in[108 + inPos]) & 255) << 24) & 268435455); out[31 + outPos] = // [7654____] // [________________________3210] (((((int)in[108 + inPos]) & 255) >>> 4) & 268435455) | // [76543210] // [________________10987654____] (((((int)in[109 + inPos]) & 255) << 4) & 268435455) | // [76543210] // [________98765432____________] (((((int)in[110 + inPos]) & 255) << 12) & 268435455) | // [76543210] // [76543210____________________] (((((int)in[111 + inPos]) & 255) << 20) & 268435455); } } private static final class Packer29 extends BytePacker { private Packer29() { super(29); } public final void pack8Values(final int[] in, final int inPos, final byte[] out, final int outPos) { out[ 0 + outPos] = (byte)(( // [76543210] // [_____________________76543210] ((in[ 0 + inPos] & 536870911))) & 255); out[ 1 + outPos] = (byte)(( // [76543210] // [_____________54321098________] ((in[ 0 + inPos] & 536870911) >>> 8)) & 255); out[ 2 + outPos] = (byte)(( // [76543210] // [_____32109876________________] ((in[ 0 + inPos] & 536870911) >>> 16)) & 255); out[ 3 + outPos] = (byte)(( // [___43210] // [87654________________________] ((in[ 0 + inPos] & 536870911) >>> 24) | // [765_____] // [__________________________210] ((in[ 1 + inPos] & 536870911) << 5)) & 255); out[ 4 + outPos] = (byte)(( // [76543210] // [__________________09876543___] ((in[ 1 + inPos] & 536870911) >>> 3)) & 255); out[ 5 + outPos] = (byte)(( // [76543210] // [__________87654321___________] ((in[ 1 + inPos] & 536870911) >>> 11)) & 255); out[ 6 + outPos] = (byte)(( // [76543210] // [__65432109___________________] ((in[ 1 + inPos] & 536870911) >>> 19)) & 255); out[ 7 + outPos] = (byte)(( // [______10] // [87___________________________] ((in[ 1 + inPos] & 536870911) >>> 27) | // [765432__] // [_______________________543210] ((in[ 2 + inPos] & 536870911) << 2)) & 255); out[ 8 + outPos] = (byte)(( // [76543210] // [_______________32109876______] ((in[ 2 + inPos] & 536870911) >>> 6)) & 255); out[ 9 + outPos] = (byte)(( // [76543210] // [_______10987654______________] ((in[ 2 + inPos] & 536870911) >>> 14)) & 255); out[10 + outPos] = (byte)(( // [_6543210] // [8765432______________________] ((in[ 2 + inPos] & 536870911) >>> 22) | // [7_______] // [____________________________0] ((in[ 3 + inPos] & 536870911) << 7)) & 255); out[11 + outPos] = (byte)(( // [76543210] // [____________________87654321_] ((in[ 3 + inPos] & 536870911) >>> 1)) & 255); out[12 + outPos] = (byte)(( // [76543210] // [____________65432109_________] ((in[ 3 + inPos] & 536870911) >>> 9)) & 255); out[13 + outPos] = (byte)(( // [76543210] // [____43210987_________________] ((in[ 3 + inPos] & 536870911) >>> 17)) & 255); out[14 + outPos] = (byte)(( // [____3210] // [8765_________________________] ((in[ 3 + inPos] & 536870911) >>> 25) | // [7654____] // [_________________________3210] ((in[ 4 + inPos] & 536870911) << 4)) & 255); out[15 + outPos] = (byte)(( // [76543210] // [_________________10987654____] ((in[ 4 + inPos] & 536870911) >>> 4)) & 255); out[16 + outPos] = (byte)(( // [76543210] // [_________98765432____________] ((in[ 4 + inPos] & 536870911) >>> 12)) & 255); out[17 + outPos] = (byte)(( // [76543210] // [_76543210____________________] ((in[ 4 + inPos] & 536870911) >>> 20)) & 255); out[18 + outPos] = (byte)(( // [_______0] // [8____________________________] ((in[ 4 + inPos] & 536870911) >>> 28) | // [7654321_] // [______________________6543210] ((in[ 5 + inPos] & 536870911) << 1)) & 255); out[19 + outPos] = (byte)(( // [76543210] // [______________43210987_______] ((in[ 5 + inPos] & 536870911) >>> 7)) & 255); out[20 + outPos] = (byte)(( // [76543210] // [______21098765_______________] ((in[ 5 + inPos] & 536870911) >>> 15)) & 255); out[21 + outPos] = (byte)(( // [__543210] // [876543_______________________] ((in[ 5 + inPos] & 536870911) >>> 23) | // [76______] // [___________________________10] ((in[ 6 + inPos] & 536870911) << 6)) & 255); out[22 + outPos] = (byte)(( // [76543210] // [___________________98765432__] ((in[ 6 + inPos] & 536870911) >>> 2)) & 255); out[23 + outPos] = (byte)(( // [76543210] // [___________76543210__________] ((in[ 6 + inPos] & 536870911) >>> 10)) & 255); out[24 + outPos] = (byte)(( // [76543210] // [___54321098__________________] ((in[ 6 + inPos] & 536870911) >>> 18)) & 255); out[25 + outPos] = (byte)(( // [_____210] // [876__________________________] ((in[ 6 + inPos] & 536870911) >>> 26) | // [76543___] // [________________________43210] ((in[ 7 + inPos] & 536870911) << 3)) & 255); out[26 + outPos] = (byte)(( // [76543210] // [________________21098765_____] ((in[ 7 + inPos] & 536870911) >>> 5)) & 255); out[27 + outPos] = (byte)(( // [76543210] // [________09876543_____________] ((in[ 7 + inPos] & 536870911) >>> 13)) & 255); out[28 + outPos] = (byte)(( // [76543210] // [87654321_____________________] ((in[ 7 + inPos] & 536870911) >>> 21)) & 255); } public final void pack32Values(final int[] in, final int inPos, final byte[] out, final int outPos) { out[ 0 + outPos] = (byte)(( // [76543210] // [_____________________76543210] ((in[ 0 + inPos] & 536870911))) & 255); out[ 1 + outPos] = (byte)(( // [76543210] // [_____________54321098________] ((in[ 0 + inPos] & 536870911) >>> 8)) & 255); out[ 2 + outPos] = (byte)(( // [76543210] // [_____32109876________________] ((in[ 0 + inPos] & 536870911) >>> 16)) & 255); out[ 3 + outPos] = (byte)(( // [___43210] // [87654________________________] ((in[ 0 + inPos] & 536870911) >>> 24) | // [765_____] // [__________________________210] ((in[ 1 + inPos] & 536870911) << 5)) & 255); out[ 4 + outPos] = (byte)(( // [76543210] // [__________________09876543___] ((in[ 1 + inPos] & 536870911) >>> 3)) & 255); out[ 5 + outPos] = (byte)(( // [76543210] // [__________87654321___________] ((in[ 1 + inPos] & 536870911) >>> 11)) & 255); out[ 6 + outPos] = (byte)(( // [76543210] // [__65432109___________________] ((in[ 1 + inPos] & 536870911) >>> 19)) & 255); out[ 7 + outPos] = (byte)(( // [______10] // [87___________________________] ((in[ 1 + inPos] & 536870911) >>> 27) | // [765432__] // [_______________________543210] ((in[ 2 + inPos] & 536870911) << 2)) & 255); out[ 8 + outPos] = (byte)(( // [76543210] // [_______________32109876______] ((in[ 2 + inPos] & 536870911) >>> 6)) & 255); out[ 9 + outPos] = (byte)(( // [76543210] // [_______10987654______________] ((in[ 2 + inPos] & 536870911) >>> 14)) & 255); out[10 + outPos] = (byte)(( // [_6543210] // [8765432______________________] ((in[ 2 + inPos] & 536870911) >>> 22) | // [7_______] // [____________________________0] ((in[ 3 + inPos] & 536870911) << 7)) & 255); out[11 + outPos] = (byte)(( // [76543210] // [____________________87654321_] ((in[ 3 + inPos] & 536870911) >>> 1)) & 255); out[12 + outPos] = (byte)(( // [76543210] // [____________65432109_________] ((in[ 3 + inPos] & 536870911) >>> 9)) & 255); out[13 + outPos] = (byte)(( // [76543210] // [____43210987_________________] ((in[ 3 + inPos] & 536870911) >>> 17)) & 255); out[14 + outPos] = (byte)(( // [____3210] // [8765_________________________] ((in[ 3 + inPos] & 536870911) >>> 25) | // [7654____] // [_________________________3210] ((in[ 4 + inPos] & 536870911) << 4)) & 255); out[15 + outPos] = (byte)(( // [76543210] // [_________________10987654____] ((in[ 4 + inPos] & 536870911) >>> 4)) & 255); out[16 + outPos] = (byte)(( // [76543210] // [_________98765432____________] ((in[ 4 + inPos] & 536870911) >>> 12)) & 255); out[17 + outPos] = (byte)(( // [76543210] // [_76543210____________________] ((in[ 4 + inPos] & 536870911) >>> 20)) & 255); out[18 + outPos] = (byte)(( // [_______0] // [8____________________________] ((in[ 4 + inPos] & 536870911) >>> 28) | // [7654321_] // [______________________6543210] ((in[ 5 + inPos] & 536870911) << 1)) & 255); out[19 + outPos] = (byte)(( // [76543210] // [______________43210987_______] ((in[ 5 + inPos] & 536870911) >>> 7)) & 255); out[20 + outPos] = (byte)(( // [76543210] // [______21098765_______________] ((in[ 5 + inPos] & 536870911) >>> 15)) & 255); out[21 + outPos] = (byte)(( // [__543210] // [876543_______________________] ((in[ 5 + inPos] & 536870911) >>> 23) | // [76______] // [___________________________10] ((in[ 6 + inPos] & 536870911) << 6)) & 255); out[22 + outPos] = (byte)(( // [76543210] // [___________________98765432__] ((in[ 6 + inPos] & 536870911) >>> 2)) & 255); out[23 + outPos] = (byte)(( // [76543210] // [___________76543210__________] ((in[ 6 + inPos] & 536870911) >>> 10)) & 255); out[24 + outPos] = (byte)(( // [76543210] // [___54321098__________________] ((in[ 6 + inPos] & 536870911) >>> 18)) & 255); out[25 + outPos] = (byte)(( // [_____210] // [876__________________________] ((in[ 6 + inPos] & 536870911) >>> 26) | // [76543___] // [________________________43210] ((in[ 7 + inPos] & 536870911) << 3)) & 255); out[26 + outPos] = (byte)(( // [76543210] // [________________21098765_____] ((in[ 7 + inPos] & 536870911) >>> 5)) & 255); out[27 + outPos] = (byte)(( // [76543210] // [________09876543_____________] ((in[ 7 + inPos] & 536870911) >>> 13)) & 255); out[28 + outPos] = (byte)(( // [76543210] // [87654321_____________________] ((in[ 7 + inPos] & 536870911) >>> 21)) & 255); out[29 + outPos] = (byte)(( // [76543210] // [_____________________76543210] ((in[ 8 + inPos] & 536870911))) & 255); out[30 + outPos] = (byte)(( // [76543210] // [_____________54321098________] ((in[ 8 + inPos] & 536870911) >>> 8)) & 255); out[31 + outPos] = (byte)(( // [76543210] // [_____32109876________________] ((in[ 8 + inPos] & 536870911) >>> 16)) & 255); out[32 + outPos] = (byte)(( // [___43210] // [87654________________________] ((in[ 8 + inPos] & 536870911) >>> 24) | // [765_____] // [__________________________210] ((in[ 9 + inPos] & 536870911) << 5)) & 255); out[33 + outPos] = (byte)(( // [76543210] // [__________________09876543___] ((in[ 9 + inPos] & 536870911) >>> 3)) & 255); out[34 + outPos] = (byte)(( // [76543210] // [__________87654321___________] ((in[ 9 + inPos] & 536870911) >>> 11)) & 255); out[35 + outPos] = (byte)(( // [76543210] // [__65432109___________________] ((in[ 9 + inPos] & 536870911) >>> 19)) & 255); out[36 + outPos] = (byte)(( // [______10] // [87___________________________] ((in[ 9 + inPos] & 536870911) >>> 27) | // [765432__] // [_______________________543210] ((in[10 + inPos] & 536870911) << 2)) & 255); out[37 + outPos] = (byte)(( // [76543210] // [_______________32109876______] ((in[10 + inPos] & 536870911) >>> 6)) & 255); out[38 + outPos] = (byte)(( // [76543210] // [_______10987654______________] ((in[10 + inPos] & 536870911) >>> 14)) & 255); out[39 + outPos] = (byte)(( // [_6543210] // [8765432______________________] ((in[10 + inPos] & 536870911) >>> 22) | // [7_______] // [____________________________0] ((in[11 + inPos] & 536870911) << 7)) & 255); out[40 + outPos] = (byte)(( // [76543210] // [____________________87654321_] ((in[11 + inPos] & 536870911) >>> 1)) & 255); out[41 + outPos] = (byte)(( // [76543210] // [____________65432109_________] ((in[11 + inPos] & 536870911) >>> 9)) & 255); out[42 + outPos] = (byte)(( // [76543210] // [____43210987_________________] ((in[11 + inPos] & 536870911) >>> 17)) & 255); out[43 + outPos] = (byte)(( // [____3210] // [8765_________________________] ((in[11 + inPos] & 536870911) >>> 25) | // [7654____] // [_________________________3210] ((in[12 + inPos] & 536870911) << 4)) & 255); out[44 + outPos] = (byte)(( // [76543210] // [_________________10987654____] ((in[12 + inPos] & 536870911) >>> 4)) & 255); out[45 + outPos] = (byte)(( // [76543210] // [_________98765432____________] ((in[12 + inPos] & 536870911) >>> 12)) & 255); out[46 + outPos] = (byte)(( // [76543210] // [_76543210____________________] ((in[12 + inPos] & 536870911) >>> 20)) & 255); out[47 + outPos] = (byte)(( // [_______0] // [8____________________________] ((in[12 + inPos] & 536870911) >>> 28) | // [7654321_] // [______________________6543210] ((in[13 + inPos] & 536870911) << 1)) & 255); out[48 + outPos] = (byte)(( // [76543210] // [______________43210987_______] ((in[13 + inPos] & 536870911) >>> 7)) & 255); out[49 + outPos] = (byte)(( // [76543210] // [______21098765_______________] ((in[13 + inPos] & 536870911) >>> 15)) & 255); out[50 + outPos] = (byte)(( // [__543210] // [876543_______________________] ((in[13 + inPos] & 536870911) >>> 23) | // [76______] // [___________________________10] ((in[14 + inPos] & 536870911) << 6)) & 255); out[51 + outPos] = (byte)(( // [76543210] // [___________________98765432__] ((in[14 + inPos] & 536870911) >>> 2)) & 255); out[52 + outPos] = (byte)(( // [76543210] // [___________76543210__________] ((in[14 + inPos] & 536870911) >>> 10)) & 255); out[53 + outPos] = (byte)(( // [76543210] // [___54321098__________________] ((in[14 + inPos] & 536870911) >>> 18)) & 255); out[54 + outPos] = (byte)(( // [_____210] // [876__________________________] ((in[14 + inPos] & 536870911) >>> 26) | // [76543___] // [________________________43210] ((in[15 + inPos] & 536870911) << 3)) & 255); out[55 + outPos] = (byte)(( // [76543210] // [________________21098765_____] ((in[15 + inPos] & 536870911) >>> 5)) & 255); out[56 + outPos] = (byte)(( // [76543210] // [________09876543_____________] ((in[15 + inPos] & 536870911) >>> 13)) & 255); out[57 + outPos] = (byte)(( // [76543210] // [87654321_____________________] ((in[15 + inPos] & 536870911) >>> 21)) & 255); out[58 + outPos] = (byte)(( // [76543210] // [_____________________76543210] ((in[16 + inPos] & 536870911))) & 255); out[59 + outPos] = (byte)(( // [76543210] // [_____________54321098________] ((in[16 + inPos] & 536870911) >>> 8)) & 255); out[60 + outPos] = (byte)(( // [76543210] // [_____32109876________________] ((in[16 + inPos] & 536870911) >>> 16)) & 255); out[61 + outPos] = (byte)(( // [___43210] // [87654________________________] ((in[16 + inPos] & 536870911) >>> 24) | // [765_____] // [__________________________210] ((in[17 + inPos] & 536870911) << 5)) & 255); out[62 + outPos] = (byte)(( // [76543210] // [__________________09876543___] ((in[17 + inPos] & 536870911) >>> 3)) & 255); out[63 + outPos] = (byte)(( // [76543210] // [__________87654321___________] ((in[17 + inPos] & 536870911) >>> 11)) & 255); out[64 + outPos] = (byte)(( // [76543210] // [__65432109___________________] ((in[17 + inPos] & 536870911) >>> 19)) & 255); out[65 + outPos] = (byte)(( // [______10] // [87___________________________] ((in[17 + inPos] & 536870911) >>> 27) | // [765432__] // [_______________________543210] ((in[18 + inPos] & 536870911) << 2)) & 255); out[66 + outPos] = (byte)(( // [76543210] // [_______________32109876______] ((in[18 + inPos] & 536870911) >>> 6)) & 255); out[67 + outPos] = (byte)(( // [76543210] // [_______10987654______________] ((in[18 + inPos] & 536870911) >>> 14)) & 255); out[68 + outPos] = (byte)(( // [_6543210] // [8765432______________________] ((in[18 + inPos] & 536870911) >>> 22) | // [7_______] // [____________________________0] ((in[19 + inPos] & 536870911) << 7)) & 255); out[69 + outPos] = (byte)(( // [76543210] // [____________________87654321_] ((in[19 + inPos] & 536870911) >>> 1)) & 255); out[70 + outPos] = (byte)(( // [76543210] // [____________65432109_________] ((in[19 + inPos] & 536870911) >>> 9)) & 255); out[71 + outPos] = (byte)(( // [76543210] // [____43210987_________________] ((in[19 + inPos] & 536870911) >>> 17)) & 255); out[72 + outPos] = (byte)(( // [____3210] // [8765_________________________] ((in[19 + inPos] & 536870911) >>> 25) | // [7654____] // [_________________________3210] ((in[20 + inPos] & 536870911) << 4)) & 255); out[73 + outPos] = (byte)(( // [76543210] // [_________________10987654____] ((in[20 + inPos] & 536870911) >>> 4)) & 255); out[74 + outPos] = (byte)(( // [76543210] // [_________98765432____________] ((in[20 + inPos] & 536870911) >>> 12)) & 255); out[75 + outPos] = (byte)(( // [76543210] // [_76543210____________________] ((in[20 + inPos] & 536870911) >>> 20)) & 255); out[76 + outPos] = (byte)(( // [_______0] // [8____________________________] ((in[20 + inPos] & 536870911) >>> 28) | // [7654321_] // [______________________6543210] ((in[21 + inPos] & 536870911) << 1)) & 255); out[77 + outPos] = (byte)(( // [76543210] // [______________43210987_______] ((in[21 + inPos] & 536870911) >>> 7)) & 255); out[78 + outPos] = (byte)(( // [76543210] // [______21098765_______________] ((in[21 + inPos] & 536870911) >>> 15)) & 255); out[79 + outPos] = (byte)(( // [__543210] // [876543_______________________] ((in[21 + inPos] & 536870911) >>> 23) | // [76______] // [___________________________10] ((in[22 + inPos] & 536870911) << 6)) & 255); out[80 + outPos] = (byte)(( // [76543210] // [___________________98765432__] ((in[22 + inPos] & 536870911) >>> 2)) & 255); out[81 + outPos] = (byte)(( // [76543210] // [___________76543210__________] ((in[22 + inPos] & 536870911) >>> 10)) & 255); out[82 + outPos] = (byte)(( // [76543210] // [___54321098__________________] ((in[22 + inPos] & 536870911) >>> 18)) & 255); out[83 + outPos] = (byte)(( // [_____210] // [876__________________________] ((in[22 + inPos] & 536870911) >>> 26) | // [76543___] // [________________________43210] ((in[23 + inPos] & 536870911) << 3)) & 255); out[84 + outPos] = (byte)(( // [76543210] // [________________21098765_____] ((in[23 + inPos] & 536870911) >>> 5)) & 255); out[85 + outPos] = (byte)(( // [76543210] // [________09876543_____________] ((in[23 + inPos] & 536870911) >>> 13)) & 255); out[86 + outPos] = (byte)(( // [76543210] // [87654321_____________________] ((in[23 + inPos] & 536870911) >>> 21)) & 255); out[87 + outPos] = (byte)(( // [76543210] // [_____________________76543210] ((in[24 + inPos] & 536870911))) & 255); out[88 + outPos] = (byte)(( // [76543210] // [_____________54321098________] ((in[24 + inPos] & 536870911) >>> 8)) & 255); out[89 + outPos] = (byte)(( // [76543210] // [_____32109876________________] ((in[24 + inPos] & 536870911) >>> 16)) & 255); out[90 + outPos] = (byte)(( // [___43210] // [87654________________________] ((in[24 + inPos] & 536870911) >>> 24) | // [765_____] // [__________________________210] ((in[25 + inPos] & 536870911) << 5)) & 255); out[91 + outPos] = (byte)(( // [76543210] // [__________________09876543___] ((in[25 + inPos] & 536870911) >>> 3)) & 255); out[92 + outPos] = (byte)(( // [76543210] // [__________87654321___________] ((in[25 + inPos] & 536870911) >>> 11)) & 255); out[93 + outPos] = (byte)(( // [76543210] // [__65432109___________________] ((in[25 + inPos] & 536870911) >>> 19)) & 255); out[94 + outPos] = (byte)(( // [______10] // [87___________________________] ((in[25 + inPos] & 536870911) >>> 27) | // [765432__] // [_______________________543210] ((in[26 + inPos] & 536870911) << 2)) & 255); out[95 + outPos] = (byte)(( // [76543210] // [_______________32109876______] ((in[26 + inPos] & 536870911) >>> 6)) & 255); out[96 + outPos] = (byte)(( // [76543210] // [_______10987654______________] ((in[26 + inPos] & 536870911) >>> 14)) & 255); out[97 + outPos] = (byte)(( // [_6543210] // [8765432______________________] ((in[26 + inPos] & 536870911) >>> 22) | // [7_______] // [____________________________0] ((in[27 + inPos] & 536870911) << 7)) & 255); out[98 + outPos] = (byte)(( // [76543210] // [____________________87654321_] ((in[27 + inPos] & 536870911) >>> 1)) & 255); out[99 + outPos] = (byte)(( // [76543210] // [____________65432109_________] ((in[27 + inPos] & 536870911) >>> 9)) & 255); out[100 + outPos] = (byte)(( // [76543210] // [____43210987_________________] ((in[27 + inPos] & 536870911) >>> 17)) & 255); out[101 + outPos] = (byte)(( // [____3210] // [8765_________________________] ((in[27 + inPos] & 536870911) >>> 25) | // [7654____] // [_________________________3210] ((in[28 + inPos] & 536870911) << 4)) & 255); out[102 + outPos] = (byte)(( // [76543210] // [_________________10987654____] ((in[28 + inPos] & 536870911) >>> 4)) & 255); out[103 + outPos] = (byte)(( // [76543210] // [_________98765432____________] ((in[28 + inPos] & 536870911) >>> 12)) & 255); out[104 + outPos] = (byte)(( // [76543210] // [_76543210____________________] ((in[28 + inPos] & 536870911) >>> 20)) & 255); out[105 + outPos] = (byte)(( // [_______0] // [8____________________________] ((in[28 + inPos] & 536870911) >>> 28) | // [7654321_] // [______________________6543210] ((in[29 + inPos] & 536870911) << 1)) & 255); out[106 + outPos] = (byte)(( // [76543210] // [______________43210987_______] ((in[29 + inPos] & 536870911) >>> 7)) & 255); out[107 + outPos] = (byte)(( // [76543210] // [______21098765_______________] ((in[29 + inPos] & 536870911) >>> 15)) & 255); out[108 + outPos] = (byte)(( // [__543210] // [876543_______________________] ((in[29 + inPos] & 536870911) >>> 23) | // [76______] // [___________________________10] ((in[30 + inPos] & 536870911) << 6)) & 255); out[109 + outPos] = (byte)(( // [76543210] // [___________________98765432__] ((in[30 + inPos] & 536870911) >>> 2)) & 255); out[110 + outPos] = (byte)(( // [76543210] // [___________76543210__________] ((in[30 + inPos] & 536870911) >>> 10)) & 255); out[111 + outPos] = (byte)(( // [76543210] // [___54321098__________________] ((in[30 + inPos] & 536870911) >>> 18)) & 255); out[112 + outPos] = (byte)(( // [_____210] // [876__________________________] ((in[30 + inPos] & 536870911) >>> 26) | // [76543___] // [________________________43210] ((in[31 + inPos] & 536870911) << 3)) & 255); out[113 + outPos] = (byte)(( // [76543210] // [________________21098765_____] ((in[31 + inPos] & 536870911) >>> 5)) & 255); out[114 + outPos] = (byte)(( // [76543210] // [________09876543_____________] ((in[31 + inPos] & 536870911) >>> 13)) & 255); out[115 + outPos] = (byte)(( // [76543210] // [87654321_____________________] ((in[31 + inPos] & 536870911) >>> 21)) & 255); } public final void unpack8Values(final byte[] in, final int inPos, final int[] out, final int outPos) { out[ 0 + outPos] = // [76543210] // [_____________________76543210] (((((int)in[ 0 + inPos]) & 255) ) & 536870911) | // [76543210] // [_____________54321098________] (((((int)in[ 1 + inPos]) & 255) << 8) & 536870911) | // [76543210] // [_____32109876________________] (((((int)in[ 2 + inPos]) & 255) << 16) & 536870911) | // [___43210] // [87654________________________] (((((int)in[ 3 + inPos]) & 255) << 24) & 536870911); out[ 1 + outPos] = // [765_____] // [__________________________210] (((((int)in[ 3 + inPos]) & 255) >>> 5) & 536870911) | // [76543210] // [__________________09876543___] (((((int)in[ 4 + inPos]) & 255) << 3) & 536870911) | // [76543210] // [__________87654321___________] (((((int)in[ 5 + inPos]) & 255) << 11) & 536870911) | // [76543210] // [__65432109___________________] (((((int)in[ 6 + inPos]) & 255) << 19) & 536870911) | // [______10] // [87___________________________] (((((int)in[ 7 + inPos]) & 255) << 27) & 536870911); out[ 2 + outPos] = // [765432__] // [_______________________543210] (((((int)in[ 7 + inPos]) & 255) >>> 2) & 536870911) | // [76543210] // [_______________32109876______] (((((int)in[ 8 + inPos]) & 255) << 6) & 536870911) | // [76543210] // [_______10987654______________] (((((int)in[ 9 + inPos]) & 255) << 14) & 536870911) | // [_6543210] // [8765432______________________] (((((int)in[10 + inPos]) & 255) << 22) & 536870911); out[ 3 + outPos] = // [7_______] // [____________________________0] (((((int)in[10 + inPos]) & 255) >>> 7) & 536870911) | // [76543210] // [____________________87654321_] (((((int)in[11 + inPos]) & 255) << 1) & 536870911) | // [76543210] // [____________65432109_________] (((((int)in[12 + inPos]) & 255) << 9) & 536870911) | // [76543210] // [____43210987_________________] (((((int)in[13 + inPos]) & 255) << 17) & 536870911) | // [____3210] // [8765_________________________] (((((int)in[14 + inPos]) & 255) << 25) & 536870911); out[ 4 + outPos] = // [7654____] // [_________________________3210] (((((int)in[14 + inPos]) & 255) >>> 4) & 536870911) | // [76543210] // [_________________10987654____] (((((int)in[15 + inPos]) & 255) << 4) & 536870911) | // [76543210] // [_________98765432____________] (((((int)in[16 + inPos]) & 255) << 12) & 536870911) | // [76543210] // [_76543210____________________] (((((int)in[17 + inPos]) & 255) << 20) & 536870911) | // [_______0] // [8____________________________] (((((int)in[18 + inPos]) & 255) << 28) & 536870911); out[ 5 + outPos] = // [7654321_] // [______________________6543210] (((((int)in[18 + inPos]) & 255) >>> 1) & 536870911) | // [76543210] // [______________43210987_______] (((((int)in[19 + inPos]) & 255) << 7) & 536870911) | // [76543210] // [______21098765_______________] (((((int)in[20 + inPos]) & 255) << 15) & 536870911) | // [__543210] // [876543_______________________] (((((int)in[21 + inPos]) & 255) << 23) & 536870911); out[ 6 + outPos] = // [76______] // [___________________________10] (((((int)in[21 + inPos]) & 255) >>> 6) & 536870911) | // [76543210] // [___________________98765432__] (((((int)in[22 + inPos]) & 255) << 2) & 536870911) | // [76543210] // [___________76543210__________] (((((int)in[23 + inPos]) & 255) << 10) & 536870911) | // [76543210] // [___54321098__________________] (((((int)in[24 + inPos]) & 255) << 18) & 536870911) | // [_____210] // [876__________________________] (((((int)in[25 + inPos]) & 255) << 26) & 536870911); out[ 7 + outPos] = // [76543___] // [________________________43210] (((((int)in[25 + inPos]) & 255) >>> 3) & 536870911) | // [76543210] // [________________21098765_____] (((((int)in[26 + inPos]) & 255) << 5) & 536870911) | // [76543210] // [________09876543_____________] (((((int)in[27 + inPos]) & 255) << 13) & 536870911) | // [76543210] // [87654321_____________________] (((((int)in[28 + inPos]) & 255) << 21) & 536870911); } public final void unpack32Values(final byte[] in, final int inPos, final int[] out, final int outPos) { out[ 0 + outPos] = // [76543210] // [_____________________76543210] (((((int)in[ 0 + inPos]) & 255) ) & 536870911) | // [76543210] // [_____________54321098________] (((((int)in[ 1 + inPos]) & 255) << 8) & 536870911) | // [76543210] // [_____32109876________________] (((((int)in[ 2 + inPos]) & 255) << 16) & 536870911) | // [___43210] // [87654________________________] (((((int)in[ 3 + inPos]) & 255) << 24) & 536870911); out[ 1 + outPos] = // [765_____] // [__________________________210] (((((int)in[ 3 + inPos]) & 255) >>> 5) & 536870911) | // [76543210] // [__________________09876543___] (((((int)in[ 4 + inPos]) & 255) << 3) & 536870911) | // [76543210] // [__________87654321___________] (((((int)in[ 5 + inPos]) & 255) << 11) & 536870911) | // [76543210] // [__65432109___________________] (((((int)in[ 6 + inPos]) & 255) << 19) & 536870911) | // [______10] // [87___________________________] (((((int)in[ 7 + inPos]) & 255) << 27) & 536870911); out[ 2 + outPos] = // [765432__] // [_______________________543210] (((((int)in[ 7 + inPos]) & 255) >>> 2) & 536870911) | // [76543210] // [_______________32109876______] (((((int)in[ 8 + inPos]) & 255) << 6) & 536870911) | // [76543210] // [_______10987654______________] (((((int)in[ 9 + inPos]) & 255) << 14) & 536870911) | // [_6543210] // [8765432______________________] (((((int)in[10 + inPos]) & 255) << 22) & 536870911); out[ 3 + outPos] = // [7_______] // [____________________________0] (((((int)in[10 + inPos]) & 255) >>> 7) & 536870911) | // [76543210] // [____________________87654321_] (((((int)in[11 + inPos]) & 255) << 1) & 536870911) | // [76543210] // [____________65432109_________] (((((int)in[12 + inPos]) & 255) << 9) & 536870911) | // [76543210] // [____43210987_________________] (((((int)in[13 + inPos]) & 255) << 17) & 536870911) | // [____3210] // [8765_________________________] (((((int)in[14 + inPos]) & 255) << 25) & 536870911); out[ 4 + outPos] = // [7654____] // [_________________________3210] (((((int)in[14 + inPos]) & 255) >>> 4) & 536870911) | // [76543210] // [_________________10987654____] (((((int)in[15 + inPos]) & 255) << 4) & 536870911) | // [76543210] // [_________98765432____________] (((((int)in[16 + inPos]) & 255) << 12) & 536870911) | // [76543210] // [_76543210____________________] (((((int)in[17 + inPos]) & 255) << 20) & 536870911) | // [_______0] // [8____________________________] (((((int)in[18 + inPos]) & 255) << 28) & 536870911); out[ 5 + outPos] = // [7654321_] // [______________________6543210] (((((int)in[18 + inPos]) & 255) >>> 1) & 536870911) | // [76543210] // [______________43210987_______] (((((int)in[19 + inPos]) & 255) << 7) & 536870911) | // [76543210] // [______21098765_______________] (((((int)in[20 + inPos]) & 255) << 15) & 536870911) | // [__543210] // [876543_______________________] (((((int)in[21 + inPos]) & 255) << 23) & 536870911); out[ 6 + outPos] = // [76______] // [___________________________10] (((((int)in[21 + inPos]) & 255) >>> 6) & 536870911) | // [76543210] // [___________________98765432__] (((((int)in[22 + inPos]) & 255) << 2) & 536870911) | // [76543210] // [___________76543210__________] (((((int)in[23 + inPos]) & 255) << 10) & 536870911) | // [76543210] // [___54321098__________________] (((((int)in[24 + inPos]) & 255) << 18) & 536870911) | // [_____210] // [876__________________________] (((((int)in[25 + inPos]) & 255) << 26) & 536870911); out[ 7 + outPos] = // [76543___] // [________________________43210] (((((int)in[25 + inPos]) & 255) >>> 3) & 536870911) | // [76543210] // [________________21098765_____] (((((int)in[26 + inPos]) & 255) << 5) & 536870911) | // [76543210] // [________09876543_____________] (((((int)in[27 + inPos]) & 255) << 13) & 536870911) | // [76543210] // [87654321_____________________] (((((int)in[28 + inPos]) & 255) << 21) & 536870911); out[ 8 + outPos] = // [76543210] // [_____________________76543210] (((((int)in[29 + inPos]) & 255) ) & 536870911) | // [76543210] // [_____________54321098________] (((((int)in[30 + inPos]) & 255) << 8) & 536870911) | // [76543210] // [_____32109876________________] (((((int)in[31 + inPos]) & 255) << 16) & 536870911) | // [___43210] // [87654________________________] (((((int)in[32 + inPos]) & 255) << 24) & 536870911); out[ 9 + outPos] = // [765_____] // [__________________________210] (((((int)in[32 + inPos]) & 255) >>> 5) & 536870911) | // [76543210] // [__________________09876543___] (((((int)in[33 + inPos]) & 255) << 3) & 536870911) | // [76543210] // [__________87654321___________] (((((int)in[34 + inPos]) & 255) << 11) & 536870911) | // [76543210] // [__65432109___________________] (((((int)in[35 + inPos]) & 255) << 19) & 536870911) | // [______10] // [87___________________________] (((((int)in[36 + inPos]) & 255) << 27) & 536870911); out[10 + outPos] = // [765432__] // [_______________________543210] (((((int)in[36 + inPos]) & 255) >>> 2) & 536870911) | // [76543210] // [_______________32109876______] (((((int)in[37 + inPos]) & 255) << 6) & 536870911) | // [76543210] // [_______10987654______________] (((((int)in[38 + inPos]) & 255) << 14) & 536870911) | // [_6543210] // [8765432______________________] (((((int)in[39 + inPos]) & 255) << 22) & 536870911); out[11 + outPos] = // [7_______] // [____________________________0] (((((int)in[39 + inPos]) & 255) >>> 7) & 536870911) | // [76543210] // [____________________87654321_] (((((int)in[40 + inPos]) & 255) << 1) & 536870911) | // [76543210] // [____________65432109_________] (((((int)in[41 + inPos]) & 255) << 9) & 536870911) | // [76543210] // [____43210987_________________] (((((int)in[42 + inPos]) & 255) << 17) & 536870911) | // [____3210] // [8765_________________________] (((((int)in[43 + inPos]) & 255) << 25) & 536870911); out[12 + outPos] = // [7654____] // [_________________________3210] (((((int)in[43 + inPos]) & 255) >>> 4) & 536870911) | // [76543210] // [_________________10987654____] (((((int)in[44 + inPos]) & 255) << 4) & 536870911) | // [76543210] // [_________98765432____________] (((((int)in[45 + inPos]) & 255) << 12) & 536870911) | // [76543210] // [_76543210____________________] (((((int)in[46 + inPos]) & 255) << 20) & 536870911) | // [_______0] // [8____________________________] (((((int)in[47 + inPos]) & 255) << 28) & 536870911); out[13 + outPos] = // [7654321_] // [______________________6543210] (((((int)in[47 + inPos]) & 255) >>> 1) & 536870911) | // [76543210] // [______________43210987_______] (((((int)in[48 + inPos]) & 255) << 7) & 536870911) | // [76543210] // [______21098765_______________] (((((int)in[49 + inPos]) & 255) << 15) & 536870911) | // [__543210] // [876543_______________________] (((((int)in[50 + inPos]) & 255) << 23) & 536870911); out[14 + outPos] = // [76______] // [___________________________10] (((((int)in[50 + inPos]) & 255) >>> 6) & 536870911) | // [76543210] // [___________________98765432__] (((((int)in[51 + inPos]) & 255) << 2) & 536870911) | // [76543210] // [___________76543210__________] (((((int)in[52 + inPos]) & 255) << 10) & 536870911) | // [76543210] // [___54321098__________________] (((((int)in[53 + inPos]) & 255) << 18) & 536870911) | // [_____210] // [876__________________________] (((((int)in[54 + inPos]) & 255) << 26) & 536870911); out[15 + outPos] = // [76543___] // [________________________43210] (((((int)in[54 + inPos]) & 255) >>> 3) & 536870911) | // [76543210] // [________________21098765_____] (((((int)in[55 + inPos]) & 255) << 5) & 536870911) | // [76543210] // [________09876543_____________] (((((int)in[56 + inPos]) & 255) << 13) & 536870911) | // [76543210] // [87654321_____________________] (((((int)in[57 + inPos]) & 255) << 21) & 536870911); out[16 + outPos] = // [76543210] // [_____________________76543210] (((((int)in[58 + inPos]) & 255) ) & 536870911) | // [76543210] // [_____________54321098________] (((((int)in[59 + inPos]) & 255) << 8) & 536870911) | // [76543210] // [_____32109876________________] (((((int)in[60 + inPos]) & 255) << 16) & 536870911) | // [___43210] // [87654________________________] (((((int)in[61 + inPos]) & 255) << 24) & 536870911); out[17 + outPos] = // [765_____] // [__________________________210] (((((int)in[61 + inPos]) & 255) >>> 5) & 536870911) | // [76543210] // [__________________09876543___] (((((int)in[62 + inPos]) & 255) << 3) & 536870911) | // [76543210] // [__________87654321___________] (((((int)in[63 + inPos]) & 255) << 11) & 536870911) | // [76543210] // [__65432109___________________] (((((int)in[64 + inPos]) & 255) << 19) & 536870911) | // [______10] // [87___________________________] (((((int)in[65 + inPos]) & 255) << 27) & 536870911); out[18 + outPos] = // [765432__] // [_______________________543210] (((((int)in[65 + inPos]) & 255) >>> 2) & 536870911) | // [76543210] // [_______________32109876______] (((((int)in[66 + inPos]) & 255) << 6) & 536870911) | // [76543210] // [_______10987654______________] (((((int)in[67 + inPos]) & 255) << 14) & 536870911) | // [_6543210] // [8765432______________________] (((((int)in[68 + inPos]) & 255) << 22) & 536870911); out[19 + outPos] = // [7_______] // [____________________________0] (((((int)in[68 + inPos]) & 255) >>> 7) & 536870911) | // [76543210] // [____________________87654321_] (((((int)in[69 + inPos]) & 255) << 1) & 536870911) | // [76543210] // [____________65432109_________] (((((int)in[70 + inPos]) & 255) << 9) & 536870911) | // [76543210] // [____43210987_________________] (((((int)in[71 + inPos]) & 255) << 17) & 536870911) | // [____3210] // [8765_________________________] (((((int)in[72 + inPos]) & 255) << 25) & 536870911); out[20 + outPos] = // [7654____] // [_________________________3210] (((((int)in[72 + inPos]) & 255) >>> 4) & 536870911) | // [76543210] // [_________________10987654____] (((((int)in[73 + inPos]) & 255) << 4) & 536870911) | // [76543210] // [_________98765432____________] (((((int)in[74 + inPos]) & 255) << 12) & 536870911) | // [76543210] // [_76543210____________________] (((((int)in[75 + inPos]) & 255) << 20) & 536870911) | // [_______0] // [8____________________________] (((((int)in[76 + inPos]) & 255) << 28) & 536870911); out[21 + outPos] = // [7654321_] // [______________________6543210] (((((int)in[76 + inPos]) & 255) >>> 1) & 536870911) | // [76543210] // [______________43210987_______] (((((int)in[77 + inPos]) & 255) << 7) & 536870911) | // [76543210] // [______21098765_______________] (((((int)in[78 + inPos]) & 255) << 15) & 536870911) | // [__543210] // [876543_______________________] (((((int)in[79 + inPos]) & 255) << 23) & 536870911); out[22 + outPos] = // [76______] // [___________________________10] (((((int)in[79 + inPos]) & 255) >>> 6) & 536870911) | // [76543210] // [___________________98765432__] (((((int)in[80 + inPos]) & 255) << 2) & 536870911) | // [76543210] // [___________76543210__________] (((((int)in[81 + inPos]) & 255) << 10) & 536870911) | // [76543210] // [___54321098__________________] (((((int)in[82 + inPos]) & 255) << 18) & 536870911) | // [_____210] // [876__________________________] (((((int)in[83 + inPos]) & 255) << 26) & 536870911); out[23 + outPos] = // [76543___] // [________________________43210] (((((int)in[83 + inPos]) & 255) >>> 3) & 536870911) | // [76543210] // [________________21098765_____] (((((int)in[84 + inPos]) & 255) << 5) & 536870911) | // [76543210] // [________09876543_____________] (((((int)in[85 + inPos]) & 255) << 13) & 536870911) | // [76543210] // [87654321_____________________] (((((int)in[86 + inPos]) & 255) << 21) & 536870911); out[24 + outPos] = // [76543210] // [_____________________76543210] (((((int)in[87 + inPos]) & 255) ) & 536870911) | // [76543210] // [_____________54321098________] (((((int)in[88 + inPos]) & 255) << 8) & 536870911) | // [76543210] // [_____32109876________________] (((((int)in[89 + inPos]) & 255) << 16) & 536870911) | // [___43210] // [87654________________________] (((((int)in[90 + inPos]) & 255) << 24) & 536870911); out[25 + outPos] = // [765_____] // [__________________________210] (((((int)in[90 + inPos]) & 255) >>> 5) & 536870911) | // [76543210] // [__________________09876543___] (((((int)in[91 + inPos]) & 255) << 3) & 536870911) | // [76543210] // [__________87654321___________] (((((int)in[92 + inPos]) & 255) << 11) & 536870911) | // [76543210] // [__65432109___________________] (((((int)in[93 + inPos]) & 255) << 19) & 536870911) | // [______10] // [87___________________________] (((((int)in[94 + inPos]) & 255) << 27) & 536870911); out[26 + outPos] = // [765432__] // [_______________________543210] (((((int)in[94 + inPos]) & 255) >>> 2) & 536870911) | // [76543210] // [_______________32109876______] (((((int)in[95 + inPos]) & 255) << 6) & 536870911) | // [76543210] // [_______10987654______________] (((((int)in[96 + inPos]) & 255) << 14) & 536870911) | // [_6543210] // [8765432______________________] (((((int)in[97 + inPos]) & 255) << 22) & 536870911); out[27 + outPos] = // [7_______] // [____________________________0] (((((int)in[97 + inPos]) & 255) >>> 7) & 536870911) | // [76543210] // [____________________87654321_] (((((int)in[98 + inPos]) & 255) << 1) & 536870911) | // [76543210] // [____________65432109_________] (((((int)in[99 + inPos]) & 255) << 9) & 536870911) | // [76543210] // [____43210987_________________] (((((int)in[100 + inPos]) & 255) << 17) & 536870911) | // [____3210] // [8765_________________________] (((((int)in[101 + inPos]) & 255) << 25) & 536870911); out[28 + outPos] = // [7654____] // [_________________________3210] (((((int)in[101 + inPos]) & 255) >>> 4) & 536870911) | // [76543210] // [_________________10987654____] (((((int)in[102 + inPos]) & 255) << 4) & 536870911) | // [76543210] // [_________98765432____________] (((((int)in[103 + inPos]) & 255) << 12) & 536870911) | // [76543210] // [_76543210____________________] (((((int)in[104 + inPos]) & 255) << 20) & 536870911) | // [_______0] // [8____________________________] (((((int)in[105 + inPos]) & 255) << 28) & 536870911); out[29 + outPos] = // [7654321_] // [______________________6543210] (((((int)in[105 + inPos]) & 255) >>> 1) & 536870911) | // [76543210] // [______________43210987_______] (((((int)in[106 + inPos]) & 255) << 7) & 536870911) | // [76543210] // [______21098765_______________] (((((int)in[107 + inPos]) & 255) << 15) & 536870911) | // [__543210] // [876543_______________________] (((((int)in[108 + inPos]) & 255) << 23) & 536870911); out[30 + outPos] = // [76______] // [___________________________10] (((((int)in[108 + inPos]) & 255) >>> 6) & 536870911) | // [76543210] // [___________________98765432__] (((((int)in[109 + inPos]) & 255) << 2) & 536870911) | // [76543210] // [___________76543210__________] (((((int)in[110 + inPos]) & 255) << 10) & 536870911) | // [76543210] // [___54321098__________________] (((((int)in[111 + inPos]) & 255) << 18) & 536870911) | // [_____210] // [876__________________________] (((((int)in[112 + inPos]) & 255) << 26) & 536870911); out[31 + outPos] = // [76543___] // [________________________43210] (((((int)in[112 + inPos]) & 255) >>> 3) & 536870911) | // [76543210] // [________________21098765_____] (((((int)in[113 + inPos]) & 255) << 5) & 536870911) | // [76543210] // [________09876543_____________] (((((int)in[114 + inPos]) & 255) << 13) & 536870911) | // [76543210] // [87654321_____________________] (((((int)in[115 + inPos]) & 255) << 21) & 536870911); } } private static final class Packer30 extends BytePacker { private Packer30() { super(30); } public final void pack8Values(final int[] in, final int inPos, final byte[] out, final int outPos) { out[ 0 + outPos] = (byte)(( // [76543210] // [______________________76543210] ((in[ 0 + inPos] & 1073741823))) & 255); out[ 1 + outPos] = (byte)(( // [76543210] // [______________54321098________] ((in[ 0 + inPos] & 1073741823) >>> 8)) & 255); out[ 2 + outPos] = (byte)(( // [76543210] // [______32109876________________] ((in[ 0 + inPos] & 1073741823) >>> 16)) & 255); out[ 3 + outPos] = (byte)(( // [__543210] // [987654________________________] ((in[ 0 + inPos] & 1073741823) >>> 24) | // [76______] // [____________________________10] ((in[ 1 + inPos] & 1073741823) << 6)) & 255); out[ 4 + outPos] = (byte)(( // [76543210] // [____________________98765432__] ((in[ 1 + inPos] & 1073741823) >>> 2)) & 255); out[ 5 + outPos] = (byte)(( // [76543210] // [____________76543210__________] ((in[ 1 + inPos] & 1073741823) >>> 10)) & 255); out[ 6 + outPos] = (byte)(( // [76543210] // [____54321098__________________] ((in[ 1 + inPos] & 1073741823) >>> 18)) & 255); out[ 7 + outPos] = (byte)(( // [____3210] // [9876__________________________] ((in[ 1 + inPos] & 1073741823) >>> 26) | // [7654____] // [__________________________3210] ((in[ 2 + inPos] & 1073741823) << 4)) & 255); out[ 8 + outPos] = (byte)(( // [76543210] // [__________________10987654____] ((in[ 2 + inPos] & 1073741823) >>> 4)) & 255); out[ 9 + outPos] = (byte)(( // [76543210] // [__________98765432____________] ((in[ 2 + inPos] & 1073741823) >>> 12)) & 255); out[10 + outPos] = (byte)(( // [76543210] // [__76543210____________________] ((in[ 2 + inPos] & 1073741823) >>> 20)) & 255); out[11 + outPos] = (byte)(( // [______10] // [98____________________________] ((in[ 2 + inPos] & 1073741823) >>> 28) | // [765432__] // [________________________543210] ((in[ 3 + inPos] & 1073741823) << 2)) & 255); out[12 + outPos] = (byte)(( // [76543210] // [________________32109876______] ((in[ 3 + inPos] & 1073741823) >>> 6)) & 255); out[13 + outPos] = (byte)(( // [76543210] // [________10987654______________] ((in[ 3 + inPos] & 1073741823) >>> 14)) & 255); out[14 + outPos] = (byte)(( // [76543210] // [98765432______________________] ((in[ 3 + inPos] & 1073741823) >>> 22)) & 255); out[15 + outPos] = (byte)(( // [76543210] // [______________________76543210] ((in[ 4 + inPos] & 1073741823))) & 255); out[16 + outPos] = (byte)(( // [76543210] // [______________54321098________] ((in[ 4 + inPos] & 1073741823) >>> 8)) & 255); out[17 + outPos] = (byte)(( // [76543210] // [______32109876________________] ((in[ 4 + inPos] & 1073741823) >>> 16)) & 255); out[18 + outPos] = (byte)(( // [__543210] // [987654________________________] ((in[ 4 + inPos] & 1073741823) >>> 24) | // [76______] // [____________________________10] ((in[ 5 + inPos] & 1073741823) << 6)) & 255); out[19 + outPos] = (byte)(( // [76543210] // [____________________98765432__] ((in[ 5 + inPos] & 1073741823) >>> 2)) & 255); out[20 + outPos] = (byte)(( // [76543210] // [____________76543210__________] ((in[ 5 + inPos] & 1073741823) >>> 10)) & 255); out[21 + outPos] = (byte)(( // [76543210] // [____54321098__________________] ((in[ 5 + inPos] & 1073741823) >>> 18)) & 255); out[22 + outPos] = (byte)(( // [____3210] // [9876__________________________] ((in[ 5 + inPos] & 1073741823) >>> 26) | // [7654____] // [__________________________3210] ((in[ 6 + inPos] & 1073741823) << 4)) & 255); out[23 + outPos] = (byte)(( // [76543210] // [__________________10987654____] ((in[ 6 + inPos] & 1073741823) >>> 4)) & 255); out[24 + outPos] = (byte)(( // [76543210] // [__________98765432____________] ((in[ 6 + inPos] & 1073741823) >>> 12)) & 255); out[25 + outPos] = (byte)(( // [76543210] // [__76543210____________________] ((in[ 6 + inPos] & 1073741823) >>> 20)) & 255); out[26 + outPos] = (byte)(( // [______10] // [98____________________________] ((in[ 6 + inPos] & 1073741823) >>> 28) | // [765432__] // [________________________543210] ((in[ 7 + inPos] & 1073741823) << 2)) & 255); out[27 + outPos] = (byte)(( // [76543210] // [________________32109876______] ((in[ 7 + inPos] & 1073741823) >>> 6)) & 255); out[28 + outPos] = (byte)(( // [76543210] // [________10987654______________] ((in[ 7 + inPos] & 1073741823) >>> 14)) & 255); out[29 + outPos] = (byte)(( // [76543210] // [98765432______________________] ((in[ 7 + inPos] & 1073741823) >>> 22)) & 255); } public final void pack32Values(final int[] in, final int inPos, final byte[] out, final int outPos) { out[ 0 + outPos] = (byte)(( // [76543210] // [______________________76543210] ((in[ 0 + inPos] & 1073741823))) & 255); out[ 1 + outPos] = (byte)(( // [76543210] // [______________54321098________] ((in[ 0 + inPos] & 1073741823) >>> 8)) & 255); out[ 2 + outPos] = (byte)(( // [76543210] // [______32109876________________] ((in[ 0 + inPos] & 1073741823) >>> 16)) & 255); out[ 3 + outPos] = (byte)(( // [__543210] // [987654________________________] ((in[ 0 + inPos] & 1073741823) >>> 24) | // [76______] // [____________________________10] ((in[ 1 + inPos] & 1073741823) << 6)) & 255); out[ 4 + outPos] = (byte)(( // [76543210] // [____________________98765432__] ((in[ 1 + inPos] & 1073741823) >>> 2)) & 255); out[ 5 + outPos] = (byte)(( // [76543210] // [____________76543210__________] ((in[ 1 + inPos] & 1073741823) >>> 10)) & 255); out[ 6 + outPos] = (byte)(( // [76543210] // [____54321098__________________] ((in[ 1 + inPos] & 1073741823) >>> 18)) & 255); out[ 7 + outPos] = (byte)(( // [____3210] // [9876__________________________] ((in[ 1 + inPos] & 1073741823) >>> 26) | // [7654____] // [__________________________3210] ((in[ 2 + inPos] & 1073741823) << 4)) & 255); out[ 8 + outPos] = (byte)(( // [76543210] // [__________________10987654____] ((in[ 2 + inPos] & 1073741823) >>> 4)) & 255); out[ 9 + outPos] = (byte)(( // [76543210] // [__________98765432____________] ((in[ 2 + inPos] & 1073741823) >>> 12)) & 255); out[10 + outPos] = (byte)(( // [76543210] // [__76543210____________________] ((in[ 2 + inPos] & 1073741823) >>> 20)) & 255); out[11 + outPos] = (byte)(( // [______10] // [98____________________________] ((in[ 2 + inPos] & 1073741823) >>> 28) | // [765432__] // [________________________543210] ((in[ 3 + inPos] & 1073741823) << 2)) & 255); out[12 + outPos] = (byte)(( // [76543210] // [________________32109876______] ((in[ 3 + inPos] & 1073741823) >>> 6)) & 255); out[13 + outPos] = (byte)(( // [76543210] // [________10987654______________] ((in[ 3 + inPos] & 1073741823) >>> 14)) & 255); out[14 + outPos] = (byte)(( // [76543210] // [98765432______________________] ((in[ 3 + inPos] & 1073741823) >>> 22)) & 255); out[15 + outPos] = (byte)(( // [76543210] // [______________________76543210] ((in[ 4 + inPos] & 1073741823))) & 255); out[16 + outPos] = (byte)(( // [76543210] // [______________54321098________] ((in[ 4 + inPos] & 1073741823) >>> 8)) & 255); out[17 + outPos] = (byte)(( // [76543210] // [______32109876________________] ((in[ 4 + inPos] & 1073741823) >>> 16)) & 255); out[18 + outPos] = (byte)(( // [__543210] // [987654________________________] ((in[ 4 + inPos] & 1073741823) >>> 24) | // [76______] // [____________________________10] ((in[ 5 + inPos] & 1073741823) << 6)) & 255); out[19 + outPos] = (byte)(( // [76543210] // [____________________98765432__] ((in[ 5 + inPos] & 1073741823) >>> 2)) & 255); out[20 + outPos] = (byte)(( // [76543210] // [____________76543210__________] ((in[ 5 + inPos] & 1073741823) >>> 10)) & 255); out[21 + outPos] = (byte)(( // [76543210] // [____54321098__________________] ((in[ 5 + inPos] & 1073741823) >>> 18)) & 255); out[22 + outPos] = (byte)(( // [____3210] // [9876__________________________] ((in[ 5 + inPos] & 1073741823) >>> 26) | // [7654____] // [__________________________3210] ((in[ 6 + inPos] & 1073741823) << 4)) & 255); out[23 + outPos] = (byte)(( // [76543210] // [__________________10987654____] ((in[ 6 + inPos] & 1073741823) >>> 4)) & 255); out[24 + outPos] = (byte)(( // [76543210] // [__________98765432____________] ((in[ 6 + inPos] & 1073741823) >>> 12)) & 255); out[25 + outPos] = (byte)(( // [76543210] // [__76543210____________________] ((in[ 6 + inPos] & 1073741823) >>> 20)) & 255); out[26 + outPos] = (byte)(( // [______10] // [98____________________________] ((in[ 6 + inPos] & 1073741823) >>> 28) | // [765432__] // [________________________543210] ((in[ 7 + inPos] & 1073741823) << 2)) & 255); out[27 + outPos] = (byte)(( // [76543210] // [________________32109876______] ((in[ 7 + inPos] & 1073741823) >>> 6)) & 255); out[28 + outPos] = (byte)(( // [76543210] // [________10987654______________] ((in[ 7 + inPos] & 1073741823) >>> 14)) & 255); out[29 + outPos] = (byte)(( // [76543210] // [98765432______________________] ((in[ 7 + inPos] & 1073741823) >>> 22)) & 255); out[30 + outPos] = (byte)(( // [76543210] // [______________________76543210] ((in[ 8 + inPos] & 1073741823))) & 255); out[31 + outPos] = (byte)(( // [76543210] // [______________54321098________] ((in[ 8 + inPos] & 1073741823) >>> 8)) & 255); out[32 + outPos] = (byte)(( // [76543210] // [______32109876________________] ((in[ 8 + inPos] & 1073741823) >>> 16)) & 255); out[33 + outPos] = (byte)(( // [__543210] // [987654________________________] ((in[ 8 + inPos] & 1073741823) >>> 24) | // [76______] // [____________________________10] ((in[ 9 + inPos] & 1073741823) << 6)) & 255); out[34 + outPos] = (byte)(( // [76543210] // [____________________98765432__] ((in[ 9 + inPos] & 1073741823) >>> 2)) & 255); out[35 + outPos] = (byte)(( // [76543210] // [____________76543210__________] ((in[ 9 + inPos] & 1073741823) >>> 10)) & 255); out[36 + outPos] = (byte)(( // [76543210] // [____54321098__________________] ((in[ 9 + inPos] & 1073741823) >>> 18)) & 255); out[37 + outPos] = (byte)(( // [____3210] // [9876__________________________] ((in[ 9 + inPos] & 1073741823) >>> 26) | // [7654____] // [__________________________3210] ((in[10 + inPos] & 1073741823) << 4)) & 255); out[38 + outPos] = (byte)(( // [76543210] // [__________________10987654____] ((in[10 + inPos] & 1073741823) >>> 4)) & 255); out[39 + outPos] = (byte)(( // [76543210] // [__________98765432____________] ((in[10 + inPos] & 1073741823) >>> 12)) & 255); out[40 + outPos] = (byte)(( // [76543210] // [__76543210____________________] ((in[10 + inPos] & 1073741823) >>> 20)) & 255); out[41 + outPos] = (byte)(( // [______10] // [98____________________________] ((in[10 + inPos] & 1073741823) >>> 28) | // [765432__] // [________________________543210] ((in[11 + inPos] & 1073741823) << 2)) & 255); out[42 + outPos] = (byte)(( // [76543210] // [________________32109876______] ((in[11 + inPos] & 1073741823) >>> 6)) & 255); out[43 + outPos] = (byte)(( // [76543210] // [________10987654______________] ((in[11 + inPos] & 1073741823) >>> 14)) & 255); out[44 + outPos] = (byte)(( // [76543210] // [98765432______________________] ((in[11 + inPos] & 1073741823) >>> 22)) & 255); out[45 + outPos] = (byte)(( // [76543210] // [______________________76543210] ((in[12 + inPos] & 1073741823))) & 255); out[46 + outPos] = (byte)(( // [76543210] // [______________54321098________] ((in[12 + inPos] & 1073741823) >>> 8)) & 255); out[47 + outPos] = (byte)(( // [76543210] // [______32109876________________] ((in[12 + inPos] & 1073741823) >>> 16)) & 255); out[48 + outPos] = (byte)(( // [__543210] // [987654________________________] ((in[12 + inPos] & 1073741823) >>> 24) | // [76______] // [____________________________10] ((in[13 + inPos] & 1073741823) << 6)) & 255); out[49 + outPos] = (byte)(( // [76543210] // [____________________98765432__] ((in[13 + inPos] & 1073741823) >>> 2)) & 255); out[50 + outPos] = (byte)(( // [76543210] // [____________76543210__________] ((in[13 + inPos] & 1073741823) >>> 10)) & 255); out[51 + outPos] = (byte)(( // [76543210] // [____54321098__________________] ((in[13 + inPos] & 1073741823) >>> 18)) & 255); out[52 + outPos] = (byte)(( // [____3210] // [9876__________________________] ((in[13 + inPos] & 1073741823) >>> 26) | // [7654____] // [__________________________3210] ((in[14 + inPos] & 1073741823) << 4)) & 255); out[53 + outPos] = (byte)(( // [76543210] // [__________________10987654____] ((in[14 + inPos] & 1073741823) >>> 4)) & 255); out[54 + outPos] = (byte)(( // [76543210] // [__________98765432____________] ((in[14 + inPos] & 1073741823) >>> 12)) & 255); out[55 + outPos] = (byte)(( // [76543210] // [__76543210____________________] ((in[14 + inPos] & 1073741823) >>> 20)) & 255); out[56 + outPos] = (byte)(( // [______10] // [98____________________________] ((in[14 + inPos] & 1073741823) >>> 28) | // [765432__] // [________________________543210] ((in[15 + inPos] & 1073741823) << 2)) & 255); out[57 + outPos] = (byte)(( // [76543210] // [________________32109876______] ((in[15 + inPos] & 1073741823) >>> 6)) & 255); out[58 + outPos] = (byte)(( // [76543210] // [________10987654______________] ((in[15 + inPos] & 1073741823) >>> 14)) & 255); out[59 + outPos] = (byte)(( // [76543210] // [98765432______________________] ((in[15 + inPos] & 1073741823) >>> 22)) & 255); out[60 + outPos] = (byte)(( // [76543210] // [______________________76543210] ((in[16 + inPos] & 1073741823))) & 255); out[61 + outPos] = (byte)(( // [76543210] // [______________54321098________] ((in[16 + inPos] & 1073741823) >>> 8)) & 255); out[62 + outPos] = (byte)(( // [76543210] // [______32109876________________] ((in[16 + inPos] & 1073741823) >>> 16)) & 255); out[63 + outPos] = (byte)(( // [__543210] // [987654________________________] ((in[16 + inPos] & 1073741823) >>> 24) | // [76______] // [____________________________10] ((in[17 + inPos] & 1073741823) << 6)) & 255); out[64 + outPos] = (byte)(( // [76543210] // [____________________98765432__] ((in[17 + inPos] & 1073741823) >>> 2)) & 255); out[65 + outPos] = (byte)(( // [76543210] // [____________76543210__________] ((in[17 + inPos] & 1073741823) >>> 10)) & 255); out[66 + outPos] = (byte)(( // [76543210] // [____54321098__________________] ((in[17 + inPos] & 1073741823) >>> 18)) & 255); out[67 + outPos] = (byte)(( // [____3210] // [9876__________________________] ((in[17 + inPos] & 1073741823) >>> 26) | // [7654____] // [__________________________3210] ((in[18 + inPos] & 1073741823) << 4)) & 255); out[68 + outPos] = (byte)(( // [76543210] // [__________________10987654____] ((in[18 + inPos] & 1073741823) >>> 4)) & 255); out[69 + outPos] = (byte)(( // [76543210] // [__________98765432____________] ((in[18 + inPos] & 1073741823) >>> 12)) & 255); out[70 + outPos] = (byte)(( // [76543210] // [__76543210____________________] ((in[18 + inPos] & 1073741823) >>> 20)) & 255); out[71 + outPos] = (byte)(( // [______10] // [98____________________________] ((in[18 + inPos] & 1073741823) >>> 28) | // [765432__] // [________________________543210] ((in[19 + inPos] & 1073741823) << 2)) & 255); out[72 + outPos] = (byte)(( // [76543210] // [________________32109876______] ((in[19 + inPos] & 1073741823) >>> 6)) & 255); out[73 + outPos] = (byte)(( // [76543210] // [________10987654______________] ((in[19 + inPos] & 1073741823) >>> 14)) & 255); out[74 + outPos] = (byte)(( // [76543210] // [98765432______________________] ((in[19 + inPos] & 1073741823) >>> 22)) & 255); out[75 + outPos] = (byte)(( // [76543210] // [______________________76543210] ((in[20 + inPos] & 1073741823))) & 255); out[76 + outPos] = (byte)(( // [76543210] // [______________54321098________] ((in[20 + inPos] & 1073741823) >>> 8)) & 255); out[77 + outPos] = (byte)(( // [76543210] // [______32109876________________] ((in[20 + inPos] & 1073741823) >>> 16)) & 255); out[78 + outPos] = (byte)(( // [__543210] // [987654________________________] ((in[20 + inPos] & 1073741823) >>> 24) | // [76______] // [____________________________10] ((in[21 + inPos] & 1073741823) << 6)) & 255); out[79 + outPos] = (byte)(( // [76543210] // [____________________98765432__] ((in[21 + inPos] & 1073741823) >>> 2)) & 255); out[80 + outPos] = (byte)(( // [76543210] // [____________76543210__________] ((in[21 + inPos] & 1073741823) >>> 10)) & 255); out[81 + outPos] = (byte)(( // [76543210] // [____54321098__________________] ((in[21 + inPos] & 1073741823) >>> 18)) & 255); out[82 + outPos] = (byte)(( // [____3210] // [9876__________________________] ((in[21 + inPos] & 1073741823) >>> 26) | // [7654____] // [__________________________3210] ((in[22 + inPos] & 1073741823) << 4)) & 255); out[83 + outPos] = (byte)(( // [76543210] // [__________________10987654____] ((in[22 + inPos] & 1073741823) >>> 4)) & 255); out[84 + outPos] = (byte)(( // [76543210] // [__________98765432____________] ((in[22 + inPos] & 1073741823) >>> 12)) & 255); out[85 + outPos] = (byte)(( // [76543210] // [__76543210____________________] ((in[22 + inPos] & 1073741823) >>> 20)) & 255); out[86 + outPos] = (byte)(( // [______10] // [98____________________________] ((in[22 + inPos] & 1073741823) >>> 28) | // [765432__] // [________________________543210] ((in[23 + inPos] & 1073741823) << 2)) & 255); out[87 + outPos] = (byte)(( // [76543210] // [________________32109876______] ((in[23 + inPos] & 1073741823) >>> 6)) & 255); out[88 + outPos] = (byte)(( // [76543210] // [________10987654______________] ((in[23 + inPos] & 1073741823) >>> 14)) & 255); out[89 + outPos] = (byte)(( // [76543210] // [98765432______________________] ((in[23 + inPos] & 1073741823) >>> 22)) & 255); out[90 + outPos] = (byte)(( // [76543210] // [______________________76543210] ((in[24 + inPos] & 1073741823))) & 255); out[91 + outPos] = (byte)(( // [76543210] // [______________54321098________] ((in[24 + inPos] & 1073741823) >>> 8)) & 255); out[92 + outPos] = (byte)(( // [76543210] // [______32109876________________] ((in[24 + inPos] & 1073741823) >>> 16)) & 255); out[93 + outPos] = (byte)(( // [__543210] // [987654________________________] ((in[24 + inPos] & 1073741823) >>> 24) | // [76______] // [____________________________10] ((in[25 + inPos] & 1073741823) << 6)) & 255); out[94 + outPos] = (byte)(( // [76543210] // [____________________98765432__] ((in[25 + inPos] & 1073741823) >>> 2)) & 255); out[95 + outPos] = (byte)(( // [76543210] // [____________76543210__________] ((in[25 + inPos] & 1073741823) >>> 10)) & 255); out[96 + outPos] = (byte)(( // [76543210] // [____54321098__________________] ((in[25 + inPos] & 1073741823) >>> 18)) & 255); out[97 + outPos] = (byte)(( // [____3210] // [9876__________________________] ((in[25 + inPos] & 1073741823) >>> 26) | // [7654____] // [__________________________3210] ((in[26 + inPos] & 1073741823) << 4)) & 255); out[98 + outPos] = (byte)(( // [76543210] // [__________________10987654____] ((in[26 + inPos] & 1073741823) >>> 4)) & 255); out[99 + outPos] = (byte)(( // [76543210] // [__________98765432____________] ((in[26 + inPos] & 1073741823) >>> 12)) & 255); out[100 + outPos] = (byte)(( // [76543210] // [__76543210____________________] ((in[26 + inPos] & 1073741823) >>> 20)) & 255); out[101 + outPos] = (byte)(( // [______10] // [98____________________________] ((in[26 + inPos] & 1073741823) >>> 28) | // [765432__] // [________________________543210] ((in[27 + inPos] & 1073741823) << 2)) & 255); out[102 + outPos] = (byte)(( // [76543210] // [________________32109876______] ((in[27 + inPos] & 1073741823) >>> 6)) & 255); out[103 + outPos] = (byte)(( // [76543210] // [________10987654______________] ((in[27 + inPos] & 1073741823) >>> 14)) & 255); out[104 + outPos] = (byte)(( // [76543210] // [98765432______________________] ((in[27 + inPos] & 1073741823) >>> 22)) & 255); out[105 + outPos] = (byte)(( // [76543210] // [______________________76543210] ((in[28 + inPos] & 1073741823))) & 255); out[106 + outPos] = (byte)(( // [76543210] // [______________54321098________] ((in[28 + inPos] & 1073741823) >>> 8)) & 255); out[107 + outPos] = (byte)(( // [76543210] // [______32109876________________] ((in[28 + inPos] & 1073741823) >>> 16)) & 255); out[108 + outPos] = (byte)(( // [__543210] // [987654________________________] ((in[28 + inPos] & 1073741823) >>> 24) | // [76______] // [____________________________10] ((in[29 + inPos] & 1073741823) << 6)) & 255); out[109 + outPos] = (byte)(( // [76543210] // [____________________98765432__] ((in[29 + inPos] & 1073741823) >>> 2)) & 255); out[110 + outPos] = (byte)(( // [76543210] // [____________76543210__________] ((in[29 + inPos] & 1073741823) >>> 10)) & 255); out[111 + outPos] = (byte)(( // [76543210] // [____54321098__________________] ((in[29 + inPos] & 1073741823) >>> 18)) & 255); out[112 + outPos] = (byte)(( // [____3210] // [9876__________________________] ((in[29 + inPos] & 1073741823) >>> 26) | // [7654____] // [__________________________3210] ((in[30 + inPos] & 1073741823) << 4)) & 255); out[113 + outPos] = (byte)(( // [76543210] // [__________________10987654____] ((in[30 + inPos] & 1073741823) >>> 4)) & 255); out[114 + outPos] = (byte)(( // [76543210] // [__________98765432____________] ((in[30 + inPos] & 1073741823) >>> 12)) & 255); out[115 + outPos] = (byte)(( // [76543210] // [__76543210____________________] ((in[30 + inPos] & 1073741823) >>> 20)) & 255); out[116 + outPos] = (byte)(( // [______10] // [98____________________________] ((in[30 + inPos] & 1073741823) >>> 28) | // [765432__] // [________________________543210] ((in[31 + inPos] & 1073741823) << 2)) & 255); out[117 + outPos] = (byte)(( // [76543210] // [________________32109876______] ((in[31 + inPos] & 1073741823) >>> 6)) & 255); out[118 + outPos] = (byte)(( // [76543210] // [________10987654______________] ((in[31 + inPos] & 1073741823) >>> 14)) & 255); out[119 + outPos] = (byte)(( // [76543210] // [98765432______________________] ((in[31 + inPos] & 1073741823) >>> 22)) & 255); } public final void unpack8Values(final byte[] in, final int inPos, final int[] out, final int outPos) { out[ 0 + outPos] = // [76543210] // [______________________76543210] (((((int)in[ 0 + inPos]) & 255) ) & 1073741823) | // [76543210] // [______________54321098________] (((((int)in[ 1 + inPos]) & 255) << 8) & 1073741823) | // [76543210] // [______32109876________________] (((((int)in[ 2 + inPos]) & 255) << 16) & 1073741823) | // [__543210] // [987654________________________] (((((int)in[ 3 + inPos]) & 255) << 24) & 1073741823); out[ 1 + outPos] = // [76______] // [____________________________10] (((((int)in[ 3 + inPos]) & 255) >>> 6) & 1073741823) | // [76543210] // [____________________98765432__] (((((int)in[ 4 + inPos]) & 255) << 2) & 1073741823) | // [76543210] // [____________76543210__________] (((((int)in[ 5 + inPos]) & 255) << 10) & 1073741823) | // [76543210] // [____54321098__________________] (((((int)in[ 6 + inPos]) & 255) << 18) & 1073741823) | // [____3210] // [9876__________________________] (((((int)in[ 7 + inPos]) & 255) << 26) & 1073741823); out[ 2 + outPos] = // [7654____] // [__________________________3210] (((((int)in[ 7 + inPos]) & 255) >>> 4) & 1073741823) | // [76543210] // [__________________10987654____] (((((int)in[ 8 + inPos]) & 255) << 4) & 1073741823) | // [76543210] // [__________98765432____________] (((((int)in[ 9 + inPos]) & 255) << 12) & 1073741823) | // [76543210] // [__76543210____________________] (((((int)in[10 + inPos]) & 255) << 20) & 1073741823) | // [______10] // [98____________________________] (((((int)in[11 + inPos]) & 255) << 28) & 1073741823); out[ 3 + outPos] = // [765432__] // [________________________543210] (((((int)in[11 + inPos]) & 255) >>> 2) & 1073741823) | // [76543210] // [________________32109876______] (((((int)in[12 + inPos]) & 255) << 6) & 1073741823) | // [76543210] // [________10987654______________] (((((int)in[13 + inPos]) & 255) << 14) & 1073741823) | // [76543210] // [98765432______________________] (((((int)in[14 + inPos]) & 255) << 22) & 1073741823); out[ 4 + outPos] = // [76543210] // [______________________76543210] (((((int)in[15 + inPos]) & 255) ) & 1073741823) | // [76543210] // [______________54321098________] (((((int)in[16 + inPos]) & 255) << 8) & 1073741823) | // [76543210] // [______32109876________________] (((((int)in[17 + inPos]) & 255) << 16) & 1073741823) | // [__543210] // [987654________________________] (((((int)in[18 + inPos]) & 255) << 24) & 1073741823); out[ 5 + outPos] = // [76______] // [____________________________10] (((((int)in[18 + inPos]) & 255) >>> 6) & 1073741823) | // [76543210] // [____________________98765432__] (((((int)in[19 + inPos]) & 255) << 2) & 1073741823) | // [76543210] // [____________76543210__________] (((((int)in[20 + inPos]) & 255) << 10) & 1073741823) | // [76543210] // [____54321098__________________] (((((int)in[21 + inPos]) & 255) << 18) & 1073741823) | // [____3210] // [9876__________________________] (((((int)in[22 + inPos]) & 255) << 26) & 1073741823); out[ 6 + outPos] = // [7654____] // [__________________________3210] (((((int)in[22 + inPos]) & 255) >>> 4) & 1073741823) | // [76543210] // [__________________10987654____] (((((int)in[23 + inPos]) & 255) << 4) & 1073741823) | // [76543210] // [__________98765432____________] (((((int)in[24 + inPos]) & 255) << 12) & 1073741823) | // [76543210] // [__76543210____________________] (((((int)in[25 + inPos]) & 255) << 20) & 1073741823) | // [______10] // [98____________________________] (((((int)in[26 + inPos]) & 255) << 28) & 1073741823); out[ 7 + outPos] = // [765432__] // [________________________543210] (((((int)in[26 + inPos]) & 255) >>> 2) & 1073741823) | // [76543210] // [________________32109876______] (((((int)in[27 + inPos]) & 255) << 6) & 1073741823) | // [76543210] // [________10987654______________] (((((int)in[28 + inPos]) & 255) << 14) & 1073741823) | // [76543210] // [98765432______________________] (((((int)in[29 + inPos]) & 255) << 22) & 1073741823); } public final void unpack32Values(final byte[] in, final int inPos, final int[] out, final int outPos) { out[ 0 + outPos] = // [76543210] // [______________________76543210] (((((int)in[ 0 + inPos]) & 255) ) & 1073741823) | // [76543210] // [______________54321098________] (((((int)in[ 1 + inPos]) & 255) << 8) & 1073741823) | // [76543210] // [______32109876________________] (((((int)in[ 2 + inPos]) & 255) << 16) & 1073741823) | // [__543210] // [987654________________________] (((((int)in[ 3 + inPos]) & 255) << 24) & 1073741823); out[ 1 + outPos] = // [76______] // [____________________________10] (((((int)in[ 3 + inPos]) & 255) >>> 6) & 1073741823) | // [76543210] // [____________________98765432__] (((((int)in[ 4 + inPos]) & 255) << 2) & 1073741823) | // [76543210] // [____________76543210__________] (((((int)in[ 5 + inPos]) & 255) << 10) & 1073741823) | // [76543210] // [____54321098__________________] (((((int)in[ 6 + inPos]) & 255) << 18) & 1073741823) | // [____3210] // [9876__________________________] (((((int)in[ 7 + inPos]) & 255) << 26) & 1073741823); out[ 2 + outPos] = // [7654____] // [__________________________3210] (((((int)in[ 7 + inPos]) & 255) >>> 4) & 1073741823) | // [76543210] // [__________________10987654____] (((((int)in[ 8 + inPos]) & 255) << 4) & 1073741823) | // [76543210] // [__________98765432____________] (((((int)in[ 9 + inPos]) & 255) << 12) & 1073741823) | // [76543210] // [__76543210____________________] (((((int)in[10 + inPos]) & 255) << 20) & 1073741823) | // [______10] // [98____________________________] (((((int)in[11 + inPos]) & 255) << 28) & 1073741823); out[ 3 + outPos] = // [765432__] // [________________________543210] (((((int)in[11 + inPos]) & 255) >>> 2) & 1073741823) | // [76543210] // [________________32109876______] (((((int)in[12 + inPos]) & 255) << 6) & 1073741823) | // [76543210] // [________10987654______________] (((((int)in[13 + inPos]) & 255) << 14) & 1073741823) | // [76543210] // [98765432______________________] (((((int)in[14 + inPos]) & 255) << 22) & 1073741823); out[ 4 + outPos] = // [76543210] // [______________________76543210] (((((int)in[15 + inPos]) & 255) ) & 1073741823) | // [76543210] // [______________54321098________] (((((int)in[16 + inPos]) & 255) << 8) & 1073741823) | // [76543210] // [______32109876________________] (((((int)in[17 + inPos]) & 255) << 16) & 1073741823) | // [__543210] // [987654________________________] (((((int)in[18 + inPos]) & 255) << 24) & 1073741823); out[ 5 + outPos] = // [76______] // [____________________________10] (((((int)in[18 + inPos]) & 255) >>> 6) & 1073741823) | // [76543210] // [____________________98765432__] (((((int)in[19 + inPos]) & 255) << 2) & 1073741823) | // [76543210] // [____________76543210__________] (((((int)in[20 + inPos]) & 255) << 10) & 1073741823) | // [76543210] // [____54321098__________________] (((((int)in[21 + inPos]) & 255) << 18) & 1073741823) | // [____3210] // [9876__________________________] (((((int)in[22 + inPos]) & 255) << 26) & 1073741823); out[ 6 + outPos] = // [7654____] // [__________________________3210] (((((int)in[22 + inPos]) & 255) >>> 4) & 1073741823) | // [76543210] // [__________________10987654____] (((((int)in[23 + inPos]) & 255) << 4) & 1073741823) | // [76543210] // [__________98765432____________] (((((int)in[24 + inPos]) & 255) << 12) & 1073741823) | // [76543210] // [__76543210____________________] (((((int)in[25 + inPos]) & 255) << 20) & 1073741823) | // [______10] // [98____________________________] (((((int)in[26 + inPos]) & 255) << 28) & 1073741823); out[ 7 + outPos] = // [765432__] // [________________________543210] (((((int)in[26 + inPos]) & 255) >>> 2) & 1073741823) | // [76543210] // [________________32109876______] (((((int)in[27 + inPos]) & 255) << 6) & 1073741823) | // [76543210] // [________10987654______________] (((((int)in[28 + inPos]) & 255) << 14) & 1073741823) | // [76543210] // [98765432______________________] (((((int)in[29 + inPos]) & 255) << 22) & 1073741823); out[ 8 + outPos] = // [76543210] // [______________________76543210] (((((int)in[30 + inPos]) & 255) ) & 1073741823) | // [76543210] // [______________54321098________] (((((int)in[31 + inPos]) & 255) << 8) & 1073741823) | // [76543210] // [______32109876________________] (((((int)in[32 + inPos]) & 255) << 16) & 1073741823) | // [__543210] // [987654________________________] (((((int)in[33 + inPos]) & 255) << 24) & 1073741823); out[ 9 + outPos] = // [76______] // [____________________________10] (((((int)in[33 + inPos]) & 255) >>> 6) & 1073741823) | // [76543210] // [____________________98765432__] (((((int)in[34 + inPos]) & 255) << 2) & 1073741823) | // [76543210] // [____________76543210__________] (((((int)in[35 + inPos]) & 255) << 10) & 1073741823) | // [76543210] // [____54321098__________________] (((((int)in[36 + inPos]) & 255) << 18) & 1073741823) | // [____3210] // [9876__________________________] (((((int)in[37 + inPos]) & 255) << 26) & 1073741823); out[10 + outPos] = // [7654____] // [__________________________3210] (((((int)in[37 + inPos]) & 255) >>> 4) & 1073741823) | // [76543210] // [__________________10987654____] (((((int)in[38 + inPos]) & 255) << 4) & 1073741823) | // [76543210] // [__________98765432____________] (((((int)in[39 + inPos]) & 255) << 12) & 1073741823) | // [76543210] // [__76543210____________________] (((((int)in[40 + inPos]) & 255) << 20) & 1073741823) | // [______10] // [98____________________________] (((((int)in[41 + inPos]) & 255) << 28) & 1073741823); out[11 + outPos] = // [765432__] // [________________________543210] (((((int)in[41 + inPos]) & 255) >>> 2) & 1073741823) | // [76543210] // [________________32109876______] (((((int)in[42 + inPos]) & 255) << 6) & 1073741823) | // [76543210] // [________10987654______________] (((((int)in[43 + inPos]) & 255) << 14) & 1073741823) | // [76543210] // [98765432______________________] (((((int)in[44 + inPos]) & 255) << 22) & 1073741823); out[12 + outPos] = // [76543210] // [______________________76543210] (((((int)in[45 + inPos]) & 255) ) & 1073741823) | // [76543210] // [______________54321098________] (((((int)in[46 + inPos]) & 255) << 8) & 1073741823) | // [76543210] // [______32109876________________] (((((int)in[47 + inPos]) & 255) << 16) & 1073741823) | // [__543210] // [987654________________________] (((((int)in[48 + inPos]) & 255) << 24) & 1073741823); out[13 + outPos] = // [76______] // [____________________________10] (((((int)in[48 + inPos]) & 255) >>> 6) & 1073741823) | // [76543210] // [____________________98765432__] (((((int)in[49 + inPos]) & 255) << 2) & 1073741823) | // [76543210] // [____________76543210__________] (((((int)in[50 + inPos]) & 255) << 10) & 1073741823) | // [76543210] // [____54321098__________________] (((((int)in[51 + inPos]) & 255) << 18) & 1073741823) | // [____3210] // [9876__________________________] (((((int)in[52 + inPos]) & 255) << 26) & 1073741823); out[14 + outPos] = // [7654____] // [__________________________3210] (((((int)in[52 + inPos]) & 255) >>> 4) & 1073741823) | // [76543210] // [__________________10987654____] (((((int)in[53 + inPos]) & 255) << 4) & 1073741823) | // [76543210] // [__________98765432____________] (((((int)in[54 + inPos]) & 255) << 12) & 1073741823) | // [76543210] // [__76543210____________________] (((((int)in[55 + inPos]) & 255) << 20) & 1073741823) | // [______10] // [98____________________________] (((((int)in[56 + inPos]) & 255) << 28) & 1073741823); out[15 + outPos] = // [765432__] // [________________________543210] (((((int)in[56 + inPos]) & 255) >>> 2) & 1073741823) | // [76543210] // [________________32109876______] (((((int)in[57 + inPos]) & 255) << 6) & 1073741823) | // [76543210] // [________10987654______________] (((((int)in[58 + inPos]) & 255) << 14) & 1073741823) | // [76543210] // [98765432______________________] (((((int)in[59 + inPos]) & 255) << 22) & 1073741823); out[16 + outPos] = // [76543210] // [______________________76543210] (((((int)in[60 + inPos]) & 255) ) & 1073741823) | // [76543210] // [______________54321098________] (((((int)in[61 + inPos]) & 255) << 8) & 1073741823) | // [76543210] // [______32109876________________] (((((int)in[62 + inPos]) & 255) << 16) & 1073741823) | // [__543210] // [987654________________________] (((((int)in[63 + inPos]) & 255) << 24) & 1073741823); out[17 + outPos] = // [76______] // [____________________________10] (((((int)in[63 + inPos]) & 255) >>> 6) & 1073741823) | // [76543210] // [____________________98765432__] (((((int)in[64 + inPos]) & 255) << 2) & 1073741823) | // [76543210] // [____________76543210__________] (((((int)in[65 + inPos]) & 255) << 10) & 1073741823) | // [76543210] // [____54321098__________________] (((((int)in[66 + inPos]) & 255) << 18) & 1073741823) | // [____3210] // [9876__________________________] (((((int)in[67 + inPos]) & 255) << 26) & 1073741823); out[18 + outPos] = // [7654____] // [__________________________3210] (((((int)in[67 + inPos]) & 255) >>> 4) & 1073741823) | // [76543210] // [__________________10987654____] (((((int)in[68 + inPos]) & 255) << 4) & 1073741823) | // [76543210] // [__________98765432____________] (((((int)in[69 + inPos]) & 255) << 12) & 1073741823) | // [76543210] // [__76543210____________________] (((((int)in[70 + inPos]) & 255) << 20) & 1073741823) | // [______10] // [98____________________________] (((((int)in[71 + inPos]) & 255) << 28) & 1073741823); out[19 + outPos] = // [765432__] // [________________________543210] (((((int)in[71 + inPos]) & 255) >>> 2) & 1073741823) | // [76543210] // [________________32109876______] (((((int)in[72 + inPos]) & 255) << 6) & 1073741823) | // [76543210] // [________10987654______________] (((((int)in[73 + inPos]) & 255) << 14) & 1073741823) | // [76543210] // [98765432______________________] (((((int)in[74 + inPos]) & 255) << 22) & 1073741823); out[20 + outPos] = // [76543210] // [______________________76543210] (((((int)in[75 + inPos]) & 255) ) & 1073741823) | // [76543210] // [______________54321098________] (((((int)in[76 + inPos]) & 255) << 8) & 1073741823) | // [76543210] // [______32109876________________] (((((int)in[77 + inPos]) & 255) << 16) & 1073741823) | // [__543210] // [987654________________________] (((((int)in[78 + inPos]) & 255) << 24) & 1073741823); out[21 + outPos] = // [76______] // [____________________________10] (((((int)in[78 + inPos]) & 255) >>> 6) & 1073741823) | // [76543210] // [____________________98765432__] (((((int)in[79 + inPos]) & 255) << 2) & 1073741823) | // [76543210] // [____________76543210__________] (((((int)in[80 + inPos]) & 255) << 10) & 1073741823) | // [76543210] // [____54321098__________________] (((((int)in[81 + inPos]) & 255) << 18) & 1073741823) | // [____3210] // [9876__________________________] (((((int)in[82 + inPos]) & 255) << 26) & 1073741823); out[22 + outPos] = // [7654____] // [__________________________3210] (((((int)in[82 + inPos]) & 255) >>> 4) & 1073741823) | // [76543210] // [__________________10987654____] (((((int)in[83 + inPos]) & 255) << 4) & 1073741823) | // [76543210] // [__________98765432____________] (((((int)in[84 + inPos]) & 255) << 12) & 1073741823) | // [76543210] // [__76543210____________________] (((((int)in[85 + inPos]) & 255) << 20) & 1073741823) | // [______10] // [98____________________________] (((((int)in[86 + inPos]) & 255) << 28) & 1073741823); out[23 + outPos] = // [765432__] // [________________________543210] (((((int)in[86 + inPos]) & 255) >>> 2) & 1073741823) | // [76543210] // [________________32109876______] (((((int)in[87 + inPos]) & 255) << 6) & 1073741823) | // [76543210] // [________10987654______________] (((((int)in[88 + inPos]) & 255) << 14) & 1073741823) | // [76543210] // [98765432______________________] (((((int)in[89 + inPos]) & 255) << 22) & 1073741823); out[24 + outPos] = // [76543210] // [______________________76543210] (((((int)in[90 + inPos]) & 255) ) & 1073741823) | // [76543210] // [______________54321098________] (((((int)in[91 + inPos]) & 255) << 8) & 1073741823) | // [76543210] // [______32109876________________] (((((int)in[92 + inPos]) & 255) << 16) & 1073741823) | // [__543210] // [987654________________________] (((((int)in[93 + inPos]) & 255) << 24) & 1073741823); out[25 + outPos] = // [76______] // [____________________________10] (((((int)in[93 + inPos]) & 255) >>> 6) & 1073741823) | // [76543210] // [____________________98765432__] (((((int)in[94 + inPos]) & 255) << 2) & 1073741823) | // [76543210] // [____________76543210__________] (((((int)in[95 + inPos]) & 255) << 10) & 1073741823) | // [76543210] // [____54321098__________________] (((((int)in[96 + inPos]) & 255) << 18) & 1073741823) | // [____3210] // [9876__________________________] (((((int)in[97 + inPos]) & 255) << 26) & 1073741823); out[26 + outPos] = // [7654____] // [__________________________3210] (((((int)in[97 + inPos]) & 255) >>> 4) & 1073741823) | // [76543210] // [__________________10987654____] (((((int)in[98 + inPos]) & 255) << 4) & 1073741823) | // [76543210] // [__________98765432____________] (((((int)in[99 + inPos]) & 255) << 12) & 1073741823) | // [76543210] // [__76543210____________________] (((((int)in[100 + inPos]) & 255) << 20) & 1073741823) | // [______10] // [98____________________________] (((((int)in[101 + inPos]) & 255) << 28) & 1073741823); out[27 + outPos] = // [765432__] // [________________________543210] (((((int)in[101 + inPos]) & 255) >>> 2) & 1073741823) | // [76543210] // [________________32109876______] (((((int)in[102 + inPos]) & 255) << 6) & 1073741823) | // [76543210] // [________10987654______________] (((((int)in[103 + inPos]) & 255) << 14) & 1073741823) | // [76543210] // [98765432______________________] (((((int)in[104 + inPos]) & 255) << 22) & 1073741823); out[28 + outPos] = // [76543210] // [______________________76543210] (((((int)in[105 + inPos]) & 255) ) & 1073741823) | // [76543210] // [______________54321098________] (((((int)in[106 + inPos]) & 255) << 8) & 1073741823) | // [76543210] // [______32109876________________] (((((int)in[107 + inPos]) & 255) << 16) & 1073741823) | // [__543210] // [987654________________________] (((((int)in[108 + inPos]) & 255) << 24) & 1073741823); out[29 + outPos] = // [76______] // [____________________________10] (((((int)in[108 + inPos]) & 255) >>> 6) & 1073741823) | // [76543210] // [____________________98765432__] (((((int)in[109 + inPos]) & 255) << 2) & 1073741823) | // [76543210] // [____________76543210__________] (((((int)in[110 + inPos]) & 255) << 10) & 1073741823) | // [76543210] // [____54321098__________________] (((((int)in[111 + inPos]) & 255) << 18) & 1073741823) | // [____3210] // [9876__________________________] (((((int)in[112 + inPos]) & 255) << 26) & 1073741823); out[30 + outPos] = // [7654____] // [__________________________3210] (((((int)in[112 + inPos]) & 255) >>> 4) & 1073741823) | // [76543210] // [__________________10987654____] (((((int)in[113 + inPos]) & 255) << 4) & 1073741823) | // [76543210] // [__________98765432____________] (((((int)in[114 + inPos]) & 255) << 12) & 1073741823) | // [76543210] // [__76543210____________________] (((((int)in[115 + inPos]) & 255) << 20) & 1073741823) | // [______10] // [98____________________________] (((((int)in[116 + inPos]) & 255) << 28) & 1073741823); out[31 + outPos] = // [765432__] // [________________________543210] (((((int)in[116 + inPos]) & 255) >>> 2) & 1073741823) | // [76543210] // [________________32109876______] (((((int)in[117 + inPos]) & 255) << 6) & 1073741823) | // [76543210] // [________10987654______________] (((((int)in[118 + inPos]) & 255) << 14) & 1073741823) | // [76543210] // [98765432______________________] (((((int)in[119 + inPos]) & 255) << 22) & 1073741823); } } private static final class Packer31 extends BytePacker { private Packer31() { super(31); } public final void pack8Values(final int[] in, final int inPos, final byte[] out, final int outPos) { out[ 0 + outPos] = (byte)(( // [76543210] // [_______________________76543210] ((in[ 0 + inPos] & 2147483647))) & 255); out[ 1 + outPos] = (byte)(( // [76543210] // [_______________54321098________] ((in[ 0 + inPos] & 2147483647) >>> 8)) & 255); out[ 2 + outPos] = (byte)(( // [76543210] // [_______32109876________________] ((in[ 0 + inPos] & 2147483647) >>> 16)) & 255); out[ 3 + outPos] = (byte)(( // [_6543210] // [0987654________________________] ((in[ 0 + inPos] & 2147483647) >>> 24) | // [7_______] // [______________________________0] ((in[ 1 + inPos] & 2147483647) << 7)) & 255); out[ 4 + outPos] = (byte)(( // [76543210] // [______________________87654321_] ((in[ 1 + inPos] & 2147483647) >>> 1)) & 255); out[ 5 + outPos] = (byte)(( // [76543210] // [______________65432109_________] ((in[ 1 + inPos] & 2147483647) >>> 9)) & 255); out[ 6 + outPos] = (byte)(( // [76543210] // [______43210987_________________] ((in[ 1 + inPos] & 2147483647) >>> 17)) & 255); out[ 7 + outPos] = (byte)(( // [__543210] // [098765_________________________] ((in[ 1 + inPos] & 2147483647) >>> 25) | // [76______] // [_____________________________10] ((in[ 2 + inPos] & 2147483647) << 6)) & 255); out[ 8 + outPos] = (byte)(( // [76543210] // [_____________________98765432__] ((in[ 2 + inPos] & 2147483647) >>> 2)) & 255); out[ 9 + outPos] = (byte)(( // [76543210] // [_____________76543210__________] ((in[ 2 + inPos] & 2147483647) >>> 10)) & 255); out[10 + outPos] = (byte)(( // [76543210] // [_____54321098__________________] ((in[ 2 + inPos] & 2147483647) >>> 18)) & 255); out[11 + outPos] = (byte)(( // [___43210] // [09876__________________________] ((in[ 2 + inPos] & 2147483647) >>> 26) | // [765_____] // [____________________________210] ((in[ 3 + inPos] & 2147483647) << 5)) & 255); out[12 + outPos] = (byte)(( // [76543210] // [____________________09876543___] ((in[ 3 + inPos] & 2147483647) >>> 3)) & 255); out[13 + outPos] = (byte)(( // [76543210] // [____________87654321___________] ((in[ 3 + inPos] & 2147483647) >>> 11)) & 255); out[14 + outPos] = (byte)(( // [76543210] // [____65432109___________________] ((in[ 3 + inPos] & 2147483647) >>> 19)) & 255); out[15 + outPos] = (byte)(( // [____3210] // [0987___________________________] ((in[ 3 + inPos] & 2147483647) >>> 27) | // [7654____] // [___________________________3210] ((in[ 4 + inPos] & 2147483647) << 4)) & 255); out[16 + outPos] = (byte)(( // [76543210] // [___________________10987654____] ((in[ 4 + inPos] & 2147483647) >>> 4)) & 255); out[17 + outPos] = (byte)(( // [76543210] // [___________98765432____________] ((in[ 4 + inPos] & 2147483647) >>> 12)) & 255); out[18 + outPos] = (byte)(( // [76543210] // [___76543210____________________] ((in[ 4 + inPos] & 2147483647) >>> 20)) & 255); out[19 + outPos] = (byte)(( // [_____210] // [098____________________________] ((in[ 4 + inPos] & 2147483647) >>> 28) | // [76543___] // [__________________________43210] ((in[ 5 + inPos] & 2147483647) << 3)) & 255); out[20 + outPos] = (byte)(( // [76543210] // [__________________21098765_____] ((in[ 5 + inPos] & 2147483647) >>> 5)) & 255); out[21 + outPos] = (byte)(( // [76543210] // [__________09876543_____________] ((in[ 5 + inPos] & 2147483647) >>> 13)) & 255); out[22 + outPos] = (byte)(( // [76543210] // [__87654321_____________________] ((in[ 5 + inPos] & 2147483647) >>> 21)) & 255); out[23 + outPos] = (byte)(( // [______10] // [09_____________________________] ((in[ 5 + inPos] & 2147483647) >>> 29) | // [765432__] // [_________________________543210] ((in[ 6 + inPos] & 2147483647) << 2)) & 255); out[24 + outPos] = (byte)(( // [76543210] // [_________________32109876______] ((in[ 6 + inPos] & 2147483647) >>> 6)) & 255); out[25 + outPos] = (byte)(( // [76543210] // [_________10987654______________] ((in[ 6 + inPos] & 2147483647) >>> 14)) & 255); out[26 + outPos] = (byte)(( // [76543210] // [_98765432______________________] ((in[ 6 + inPos] & 2147483647) >>> 22)) & 255); out[27 + outPos] = (byte)(( // [_______0] // [0______________________________] ((in[ 6 + inPos] & 2147483647) >>> 30) | // [7654321_] // [________________________6543210] ((in[ 7 + inPos] & 2147483647) << 1)) & 255); out[28 + outPos] = (byte)(( // [76543210] // [________________43210987_______] ((in[ 7 + inPos] & 2147483647) >>> 7)) & 255); out[29 + outPos] = (byte)(( // [76543210] // [________21098765_______________] ((in[ 7 + inPos] & 2147483647) >>> 15)) & 255); out[30 + outPos] = (byte)(( // [76543210] // [09876543_______________________] ((in[ 7 + inPos] & 2147483647) >>> 23)) & 255); } public final void pack32Values(final int[] in, final int inPos, final byte[] out, final int outPos) { out[ 0 + outPos] = (byte)(( // [76543210] // [_______________________76543210] ((in[ 0 + inPos] & 2147483647))) & 255); out[ 1 + outPos] = (byte)(( // [76543210] // [_______________54321098________] ((in[ 0 + inPos] & 2147483647) >>> 8)) & 255); out[ 2 + outPos] = (byte)(( // [76543210] // [_______32109876________________] ((in[ 0 + inPos] & 2147483647) >>> 16)) & 255); out[ 3 + outPos] = (byte)(( // [_6543210] // [0987654________________________] ((in[ 0 + inPos] & 2147483647) >>> 24) | // [7_______] // [______________________________0] ((in[ 1 + inPos] & 2147483647) << 7)) & 255); out[ 4 + outPos] = (byte)(( // [76543210] // [______________________87654321_] ((in[ 1 + inPos] & 2147483647) >>> 1)) & 255); out[ 5 + outPos] = (byte)(( // [76543210] // [______________65432109_________] ((in[ 1 + inPos] & 2147483647) >>> 9)) & 255); out[ 6 + outPos] = (byte)(( // [76543210] // [______43210987_________________] ((in[ 1 + inPos] & 2147483647) >>> 17)) & 255); out[ 7 + outPos] = (byte)(( // [__543210] // [098765_________________________] ((in[ 1 + inPos] & 2147483647) >>> 25) | // [76______] // [_____________________________10] ((in[ 2 + inPos] & 2147483647) << 6)) & 255); out[ 8 + outPos] = (byte)(( // [76543210] // [_____________________98765432__] ((in[ 2 + inPos] & 2147483647) >>> 2)) & 255); out[ 9 + outPos] = (byte)(( // [76543210] // [_____________76543210__________] ((in[ 2 + inPos] & 2147483647) >>> 10)) & 255); out[10 + outPos] = (byte)(( // [76543210] // [_____54321098__________________] ((in[ 2 + inPos] & 2147483647) >>> 18)) & 255); out[11 + outPos] = (byte)(( // [___43210] // [09876__________________________] ((in[ 2 + inPos] & 2147483647) >>> 26) | // [765_____] // [____________________________210] ((in[ 3 + inPos] & 2147483647) << 5)) & 255); out[12 + outPos] = (byte)(( // [76543210] // [____________________09876543___] ((in[ 3 + inPos] & 2147483647) >>> 3)) & 255); out[13 + outPos] = (byte)(( // [76543210] // [____________87654321___________] ((in[ 3 + inPos] & 2147483647) >>> 11)) & 255); out[14 + outPos] = (byte)(( // [76543210] // [____65432109___________________] ((in[ 3 + inPos] & 2147483647) >>> 19)) & 255); out[15 + outPos] = (byte)(( // [____3210] // [0987___________________________] ((in[ 3 + inPos] & 2147483647) >>> 27) | // [7654____] // [___________________________3210] ((in[ 4 + inPos] & 2147483647) << 4)) & 255); out[16 + outPos] = (byte)(( // [76543210] // [___________________10987654____] ((in[ 4 + inPos] & 2147483647) >>> 4)) & 255); out[17 + outPos] = (byte)(( // [76543210] // [___________98765432____________] ((in[ 4 + inPos] & 2147483647) >>> 12)) & 255); out[18 + outPos] = (byte)(( // [76543210] // [___76543210____________________] ((in[ 4 + inPos] & 2147483647) >>> 20)) & 255); out[19 + outPos] = (byte)(( // [_____210] // [098____________________________] ((in[ 4 + inPos] & 2147483647) >>> 28) | // [76543___] // [__________________________43210] ((in[ 5 + inPos] & 2147483647) << 3)) & 255); out[20 + outPos] = (byte)(( // [76543210] // [__________________21098765_____] ((in[ 5 + inPos] & 2147483647) >>> 5)) & 255); out[21 + outPos] = (byte)(( // [76543210] // [__________09876543_____________] ((in[ 5 + inPos] & 2147483647) >>> 13)) & 255); out[22 + outPos] = (byte)(( // [76543210] // [__87654321_____________________] ((in[ 5 + inPos] & 2147483647) >>> 21)) & 255); out[23 + outPos] = (byte)(( // [______10] // [09_____________________________] ((in[ 5 + inPos] & 2147483647) >>> 29) | // [765432__] // [_________________________543210] ((in[ 6 + inPos] & 2147483647) << 2)) & 255); out[24 + outPos] = (byte)(( // [76543210] // [_________________32109876______] ((in[ 6 + inPos] & 2147483647) >>> 6)) & 255); out[25 + outPos] = (byte)(( // [76543210] // [_________10987654______________] ((in[ 6 + inPos] & 2147483647) >>> 14)) & 255); out[26 + outPos] = (byte)(( // [76543210] // [_98765432______________________] ((in[ 6 + inPos] & 2147483647) >>> 22)) & 255); out[27 + outPos] = (byte)(( // [_______0] // [0______________________________] ((in[ 6 + inPos] & 2147483647) >>> 30) | // [7654321_] // [________________________6543210] ((in[ 7 + inPos] & 2147483647) << 1)) & 255); out[28 + outPos] = (byte)(( // [76543210] // [________________43210987_______] ((in[ 7 + inPos] & 2147483647) >>> 7)) & 255); out[29 + outPos] = (byte)(( // [76543210] // [________21098765_______________] ((in[ 7 + inPos] & 2147483647) >>> 15)) & 255); out[30 + outPos] = (byte)(( // [76543210] // [09876543_______________________] ((in[ 7 + inPos] & 2147483647) >>> 23)) & 255); out[31 + outPos] = (byte)(( // [76543210] // [_______________________76543210] ((in[ 8 + inPos] & 2147483647))) & 255); out[32 + outPos] = (byte)(( // [76543210] // [_______________54321098________] ((in[ 8 + inPos] & 2147483647) >>> 8)) & 255); out[33 + outPos] = (byte)(( // [76543210] // [_______32109876________________] ((in[ 8 + inPos] & 2147483647) >>> 16)) & 255); out[34 + outPos] = (byte)(( // [_6543210] // [0987654________________________] ((in[ 8 + inPos] & 2147483647) >>> 24) | // [7_______] // [______________________________0] ((in[ 9 + inPos] & 2147483647) << 7)) & 255); out[35 + outPos] = (byte)(( // [76543210] // [______________________87654321_] ((in[ 9 + inPos] & 2147483647) >>> 1)) & 255); out[36 + outPos] = (byte)(( // [76543210] // [______________65432109_________] ((in[ 9 + inPos] & 2147483647) >>> 9)) & 255); out[37 + outPos] = (byte)(( // [76543210] // [______43210987_________________] ((in[ 9 + inPos] & 2147483647) >>> 17)) & 255); out[38 + outPos] = (byte)(( // [__543210] // [098765_________________________] ((in[ 9 + inPos] & 2147483647) >>> 25) | // [76______] // [_____________________________10] ((in[10 + inPos] & 2147483647) << 6)) & 255); out[39 + outPos] = (byte)(( // [76543210] // [_____________________98765432__] ((in[10 + inPos] & 2147483647) >>> 2)) & 255); out[40 + outPos] = (byte)(( // [76543210] // [_____________76543210__________] ((in[10 + inPos] & 2147483647) >>> 10)) & 255); out[41 + outPos] = (byte)(( // [76543210] // [_____54321098__________________] ((in[10 + inPos] & 2147483647) >>> 18)) & 255); out[42 + outPos] = (byte)(( // [___43210] // [09876__________________________] ((in[10 + inPos] & 2147483647) >>> 26) | // [765_____] // [____________________________210] ((in[11 + inPos] & 2147483647) << 5)) & 255); out[43 + outPos] = (byte)(( // [76543210] // [____________________09876543___] ((in[11 + inPos] & 2147483647) >>> 3)) & 255); out[44 + outPos] = (byte)(( // [76543210] // [____________87654321___________] ((in[11 + inPos] & 2147483647) >>> 11)) & 255); out[45 + outPos] = (byte)(( // [76543210] // [____65432109___________________] ((in[11 + inPos] & 2147483647) >>> 19)) & 255); out[46 + outPos] = (byte)(( // [____3210] // [0987___________________________] ((in[11 + inPos] & 2147483647) >>> 27) | // [7654____] // [___________________________3210] ((in[12 + inPos] & 2147483647) << 4)) & 255); out[47 + outPos] = (byte)(( // [76543210] // [___________________10987654____] ((in[12 + inPos] & 2147483647) >>> 4)) & 255); out[48 + outPos] = (byte)(( // [76543210] // [___________98765432____________] ((in[12 + inPos] & 2147483647) >>> 12)) & 255); out[49 + outPos] = (byte)(( // [76543210] // [___76543210____________________] ((in[12 + inPos] & 2147483647) >>> 20)) & 255); out[50 + outPos] = (byte)(( // [_____210] // [098____________________________] ((in[12 + inPos] & 2147483647) >>> 28) | // [76543___] // [__________________________43210] ((in[13 + inPos] & 2147483647) << 3)) & 255); out[51 + outPos] = (byte)(( // [76543210] // [__________________21098765_____] ((in[13 + inPos] & 2147483647) >>> 5)) & 255); out[52 + outPos] = (byte)(( // [76543210] // [__________09876543_____________] ((in[13 + inPos] & 2147483647) >>> 13)) & 255); out[53 + outPos] = (byte)(( // [76543210] // [__87654321_____________________] ((in[13 + inPos] & 2147483647) >>> 21)) & 255); out[54 + outPos] = (byte)(( // [______10] // [09_____________________________] ((in[13 + inPos] & 2147483647) >>> 29) | // [765432__] // [_________________________543210] ((in[14 + inPos] & 2147483647) << 2)) & 255); out[55 + outPos] = (byte)(( // [76543210] // [_________________32109876______] ((in[14 + inPos] & 2147483647) >>> 6)) & 255); out[56 + outPos] = (byte)(( // [76543210] // [_________10987654______________] ((in[14 + inPos] & 2147483647) >>> 14)) & 255); out[57 + outPos] = (byte)(( // [76543210] // [_98765432______________________] ((in[14 + inPos] & 2147483647) >>> 22)) & 255); out[58 + outPos] = (byte)(( // [_______0] // [0______________________________] ((in[14 + inPos] & 2147483647) >>> 30) | // [7654321_] // [________________________6543210] ((in[15 + inPos] & 2147483647) << 1)) & 255); out[59 + outPos] = (byte)(( // [76543210] // [________________43210987_______] ((in[15 + inPos] & 2147483647) >>> 7)) & 255); out[60 + outPos] = (byte)(( // [76543210] // [________21098765_______________] ((in[15 + inPos] & 2147483647) >>> 15)) & 255); out[61 + outPos] = (byte)(( // [76543210] // [09876543_______________________] ((in[15 + inPos] & 2147483647) >>> 23)) & 255); out[62 + outPos] = (byte)(( // [76543210] // [_______________________76543210] ((in[16 + inPos] & 2147483647))) & 255); out[63 + outPos] = (byte)(( // [76543210] // [_______________54321098________] ((in[16 + inPos] & 2147483647) >>> 8)) & 255); out[64 + outPos] = (byte)(( // [76543210] // [_______32109876________________] ((in[16 + inPos] & 2147483647) >>> 16)) & 255); out[65 + outPos] = (byte)(( // [_6543210] // [0987654________________________] ((in[16 + inPos] & 2147483647) >>> 24) | // [7_______] // [______________________________0] ((in[17 + inPos] & 2147483647) << 7)) & 255); out[66 + outPos] = (byte)(( // [76543210] // [______________________87654321_] ((in[17 + inPos] & 2147483647) >>> 1)) & 255); out[67 + outPos] = (byte)(( // [76543210] // [______________65432109_________] ((in[17 + inPos] & 2147483647) >>> 9)) & 255); out[68 + outPos] = (byte)(( // [76543210] // [______43210987_________________] ((in[17 + inPos] & 2147483647) >>> 17)) & 255); out[69 + outPos] = (byte)(( // [__543210] // [098765_________________________] ((in[17 + inPos] & 2147483647) >>> 25) | // [76______] // [_____________________________10] ((in[18 + inPos] & 2147483647) << 6)) & 255); out[70 + outPos] = (byte)(( // [76543210] // [_____________________98765432__] ((in[18 + inPos] & 2147483647) >>> 2)) & 255); out[71 + outPos] = (byte)(( // [76543210] // [_____________76543210__________] ((in[18 + inPos] & 2147483647) >>> 10)) & 255); out[72 + outPos] = (byte)(( // [76543210] // [_____54321098__________________] ((in[18 + inPos] & 2147483647) >>> 18)) & 255); out[73 + outPos] = (byte)(( // [___43210] // [09876__________________________] ((in[18 + inPos] & 2147483647) >>> 26) | // [765_____] // [____________________________210] ((in[19 + inPos] & 2147483647) << 5)) & 255); out[74 + outPos] = (byte)(( // [76543210] // [____________________09876543___] ((in[19 + inPos] & 2147483647) >>> 3)) & 255); out[75 + outPos] = (byte)(( // [76543210] // [____________87654321___________] ((in[19 + inPos] & 2147483647) >>> 11)) & 255); out[76 + outPos] = (byte)(( // [76543210] // [____65432109___________________] ((in[19 + inPos] & 2147483647) >>> 19)) & 255); out[77 + outPos] = (byte)(( // [____3210] // [0987___________________________] ((in[19 + inPos] & 2147483647) >>> 27) | // [7654____] // [___________________________3210] ((in[20 + inPos] & 2147483647) << 4)) & 255); out[78 + outPos] = (byte)(( // [76543210] // [___________________10987654____] ((in[20 + inPos] & 2147483647) >>> 4)) & 255); out[79 + outPos] = (byte)(( // [76543210] // [___________98765432____________] ((in[20 + inPos] & 2147483647) >>> 12)) & 255); out[80 + outPos] = (byte)(( // [76543210] // [___76543210____________________] ((in[20 + inPos] & 2147483647) >>> 20)) & 255); out[81 + outPos] = (byte)(( // [_____210] // [098____________________________] ((in[20 + inPos] & 2147483647) >>> 28) | // [76543___] // [__________________________43210] ((in[21 + inPos] & 2147483647) << 3)) & 255); out[82 + outPos] = (byte)(( // [76543210] // [__________________21098765_____] ((in[21 + inPos] & 2147483647) >>> 5)) & 255); out[83 + outPos] = (byte)(( // [76543210] // [__________09876543_____________] ((in[21 + inPos] & 2147483647) >>> 13)) & 255); out[84 + outPos] = (byte)(( // [76543210] // [__87654321_____________________] ((in[21 + inPos] & 2147483647) >>> 21)) & 255); out[85 + outPos] = (byte)(( // [______10] // [09_____________________________] ((in[21 + inPos] & 2147483647) >>> 29) | // [765432__] // [_________________________543210] ((in[22 + inPos] & 2147483647) << 2)) & 255); out[86 + outPos] = (byte)(( // [76543210] // [_________________32109876______] ((in[22 + inPos] & 2147483647) >>> 6)) & 255); out[87 + outPos] = (byte)(( // [76543210] // [_________10987654______________] ((in[22 + inPos] & 2147483647) >>> 14)) & 255); out[88 + outPos] = (byte)(( // [76543210] // [_98765432______________________] ((in[22 + inPos] & 2147483647) >>> 22)) & 255); out[89 + outPos] = (byte)(( // [_______0] // [0______________________________] ((in[22 + inPos] & 2147483647) >>> 30) | // [7654321_] // [________________________6543210] ((in[23 + inPos] & 2147483647) << 1)) & 255); out[90 + outPos] = (byte)(( // [76543210] // [________________43210987_______] ((in[23 + inPos] & 2147483647) >>> 7)) & 255); out[91 + outPos] = (byte)(( // [76543210] // [________21098765_______________] ((in[23 + inPos] & 2147483647) >>> 15)) & 255); out[92 + outPos] = (byte)(( // [76543210] // [09876543_______________________] ((in[23 + inPos] & 2147483647) >>> 23)) & 255); out[93 + outPos] = (byte)(( // [76543210] // [_______________________76543210] ((in[24 + inPos] & 2147483647))) & 255); out[94 + outPos] = (byte)(( // [76543210] // [_______________54321098________] ((in[24 + inPos] & 2147483647) >>> 8)) & 255); out[95 + outPos] = (byte)(( // [76543210] // [_______32109876________________] ((in[24 + inPos] & 2147483647) >>> 16)) & 255); out[96 + outPos] = (byte)(( // [_6543210] // [0987654________________________] ((in[24 + inPos] & 2147483647) >>> 24) | // [7_______] // [______________________________0] ((in[25 + inPos] & 2147483647) << 7)) & 255); out[97 + outPos] = (byte)(( // [76543210] // [______________________87654321_] ((in[25 + inPos] & 2147483647) >>> 1)) & 255); out[98 + outPos] = (byte)(( // [76543210] // [______________65432109_________] ((in[25 + inPos] & 2147483647) >>> 9)) & 255); out[99 + outPos] = (byte)(( // [76543210] // [______43210987_________________] ((in[25 + inPos] & 2147483647) >>> 17)) & 255); out[100 + outPos] = (byte)(( // [__543210] // [098765_________________________] ((in[25 + inPos] & 2147483647) >>> 25) | // [76______] // [_____________________________10] ((in[26 + inPos] & 2147483647) << 6)) & 255); out[101 + outPos] = (byte)(( // [76543210] // [_____________________98765432__] ((in[26 + inPos] & 2147483647) >>> 2)) & 255); out[102 + outPos] = (byte)(( // [76543210] // [_____________76543210__________] ((in[26 + inPos] & 2147483647) >>> 10)) & 255); out[103 + outPos] = (byte)(( // [76543210] // [_____54321098__________________] ((in[26 + inPos] & 2147483647) >>> 18)) & 255); out[104 + outPos] = (byte)(( // [___43210] // [09876__________________________] ((in[26 + inPos] & 2147483647) >>> 26) | // [765_____] // [____________________________210] ((in[27 + inPos] & 2147483647) << 5)) & 255); out[105 + outPos] = (byte)(( // [76543210] // [____________________09876543___] ((in[27 + inPos] & 2147483647) >>> 3)) & 255); out[106 + outPos] = (byte)(( // [76543210] // [____________87654321___________] ((in[27 + inPos] & 2147483647) >>> 11)) & 255); out[107 + outPos] = (byte)(( // [76543210] // [____65432109___________________] ((in[27 + inPos] & 2147483647) >>> 19)) & 255); out[108 + outPos] = (byte)(( // [____3210] // [0987___________________________] ((in[27 + inPos] & 2147483647) >>> 27) | // [7654____] // [___________________________3210] ((in[28 + inPos] & 2147483647) << 4)) & 255); out[109 + outPos] = (byte)(( // [76543210] // [___________________10987654____] ((in[28 + inPos] & 2147483647) >>> 4)) & 255); out[110 + outPos] = (byte)(( // [76543210] // [___________98765432____________] ((in[28 + inPos] & 2147483647) >>> 12)) & 255); out[111 + outPos] = (byte)(( // [76543210] // [___76543210____________________] ((in[28 + inPos] & 2147483647) >>> 20)) & 255); out[112 + outPos] = (byte)(( // [_____210] // [098____________________________] ((in[28 + inPos] & 2147483647) >>> 28) | // [76543___] // [__________________________43210] ((in[29 + inPos] & 2147483647) << 3)) & 255); out[113 + outPos] = (byte)(( // [76543210] // [__________________21098765_____] ((in[29 + inPos] & 2147483647) >>> 5)) & 255); out[114 + outPos] = (byte)(( // [76543210] // [__________09876543_____________] ((in[29 + inPos] & 2147483647) >>> 13)) & 255); out[115 + outPos] = (byte)(( // [76543210] // [__87654321_____________________] ((in[29 + inPos] & 2147483647) >>> 21)) & 255); out[116 + outPos] = (byte)(( // [______10] // [09_____________________________] ((in[29 + inPos] & 2147483647) >>> 29) | // [765432__] // [_________________________543210] ((in[30 + inPos] & 2147483647) << 2)) & 255); out[117 + outPos] = (byte)(( // [76543210] // [_________________32109876______] ((in[30 + inPos] & 2147483647) >>> 6)) & 255); out[118 + outPos] = (byte)(( // [76543210] // [_________10987654______________] ((in[30 + inPos] & 2147483647) >>> 14)) & 255); out[119 + outPos] = (byte)(( // [76543210] // [_98765432______________________] ((in[30 + inPos] & 2147483647) >>> 22)) & 255); out[120 + outPos] = (byte)(( // [_______0] // [0______________________________] ((in[30 + inPos] & 2147483647) >>> 30) | // [7654321_] // [________________________6543210] ((in[31 + inPos] & 2147483647) << 1)) & 255); out[121 + outPos] = (byte)(( // [76543210] // [________________43210987_______] ((in[31 + inPos] & 2147483647) >>> 7)) & 255); out[122 + outPos] = (byte)(( // [76543210] // [________21098765_______________] ((in[31 + inPos] & 2147483647) >>> 15)) & 255); out[123 + outPos] = (byte)(( // [76543210] // [09876543_______________________] ((in[31 + inPos] & 2147483647) >>> 23)) & 255); } public final void unpack8Values(final byte[] in, final int inPos, final int[] out, final int outPos) { out[ 0 + outPos] = // [76543210] // [_______________________76543210] (((((int)in[ 0 + inPos]) & 255) ) & 2147483647) | // [76543210] // [_______________54321098________] (((((int)in[ 1 + inPos]) & 255) << 8) & 2147483647) | // [76543210] // [_______32109876________________] (((((int)in[ 2 + inPos]) & 255) << 16) & 2147483647) | // [_6543210] // [0987654________________________] (((((int)in[ 3 + inPos]) & 255) << 24) & 2147483647); out[ 1 + outPos] = // [7_______] // [______________________________0] (((((int)in[ 3 + inPos]) & 255) >>> 7) & 2147483647) | // [76543210] // [______________________87654321_] (((((int)in[ 4 + inPos]) & 255) << 1) & 2147483647) | // [76543210] // [______________65432109_________] (((((int)in[ 5 + inPos]) & 255) << 9) & 2147483647) | // [76543210] // [______43210987_________________] (((((int)in[ 6 + inPos]) & 255) << 17) & 2147483647) | // [__543210] // [098765_________________________] (((((int)in[ 7 + inPos]) & 255) << 25) & 2147483647); out[ 2 + outPos] = // [76______] // [_____________________________10] (((((int)in[ 7 + inPos]) & 255) >>> 6) & 2147483647) | // [76543210] // [_____________________98765432__] (((((int)in[ 8 + inPos]) & 255) << 2) & 2147483647) | // [76543210] // [_____________76543210__________] (((((int)in[ 9 + inPos]) & 255) << 10) & 2147483647) | // [76543210] // [_____54321098__________________] (((((int)in[10 + inPos]) & 255) << 18) & 2147483647) | // [___43210] // [09876__________________________] (((((int)in[11 + inPos]) & 255) << 26) & 2147483647); out[ 3 + outPos] = // [765_____] // [____________________________210] (((((int)in[11 + inPos]) & 255) >>> 5) & 2147483647) | // [76543210] // [____________________09876543___] (((((int)in[12 + inPos]) & 255) << 3) & 2147483647) | // [76543210] // [____________87654321___________] (((((int)in[13 + inPos]) & 255) << 11) & 2147483647) | // [76543210] // [____65432109___________________] (((((int)in[14 + inPos]) & 255) << 19) & 2147483647) | // [____3210] // [0987___________________________] (((((int)in[15 + inPos]) & 255) << 27) & 2147483647); out[ 4 + outPos] = // [7654____] // [___________________________3210] (((((int)in[15 + inPos]) & 255) >>> 4) & 2147483647) | // [76543210] // [___________________10987654____] (((((int)in[16 + inPos]) & 255) << 4) & 2147483647) | // [76543210] // [___________98765432____________] (((((int)in[17 + inPos]) & 255) << 12) & 2147483647) | // [76543210] // [___76543210____________________] (((((int)in[18 + inPos]) & 255) << 20) & 2147483647) | // [_____210] // [098____________________________] (((((int)in[19 + inPos]) & 255) << 28) & 2147483647); out[ 5 + outPos] = // [76543___] // [__________________________43210] (((((int)in[19 + inPos]) & 255) >>> 3) & 2147483647) | // [76543210] // [__________________21098765_____] (((((int)in[20 + inPos]) & 255) << 5) & 2147483647) | // [76543210] // [__________09876543_____________] (((((int)in[21 + inPos]) & 255) << 13) & 2147483647) | // [76543210] // [__87654321_____________________] (((((int)in[22 + inPos]) & 255) << 21) & 2147483647) | // [______10] // [09_____________________________] (((((int)in[23 + inPos]) & 255) << 29) & 2147483647); out[ 6 + outPos] = // [765432__] // [_________________________543210] (((((int)in[23 + inPos]) & 255) >>> 2) & 2147483647) | // [76543210] // [_________________32109876______] (((((int)in[24 + inPos]) & 255) << 6) & 2147483647) | // [76543210] // [_________10987654______________] (((((int)in[25 + inPos]) & 255) << 14) & 2147483647) | // [76543210] // [_98765432______________________] (((((int)in[26 + inPos]) & 255) << 22) & 2147483647) | // [_______0] // [0______________________________] (((((int)in[27 + inPos]) & 255) << 30) & 2147483647); out[ 7 + outPos] = // [7654321_] // [________________________6543210] (((((int)in[27 + inPos]) & 255) >>> 1) & 2147483647) | // [76543210] // [________________43210987_______] (((((int)in[28 + inPos]) & 255) << 7) & 2147483647) | // [76543210] // [________21098765_______________] (((((int)in[29 + inPos]) & 255) << 15) & 2147483647) | // [76543210] // [09876543_______________________] (((((int)in[30 + inPos]) & 255) << 23) & 2147483647); } public final void unpack32Values(final byte[] in, final int inPos, final int[] out, final int outPos) { out[ 0 + outPos] = // [76543210] // [_______________________76543210] (((((int)in[ 0 + inPos]) & 255) ) & 2147483647) | // [76543210] // [_______________54321098________] (((((int)in[ 1 + inPos]) & 255) << 8) & 2147483647) | // [76543210] // [_______32109876________________] (((((int)in[ 2 + inPos]) & 255) << 16) & 2147483647) | // [_6543210] // [0987654________________________] (((((int)in[ 3 + inPos]) & 255) << 24) & 2147483647); out[ 1 + outPos] = // [7_______] // [______________________________0] (((((int)in[ 3 + inPos]) & 255) >>> 7) & 2147483647) | // [76543210] // [______________________87654321_] (((((int)in[ 4 + inPos]) & 255) << 1) & 2147483647) | // [76543210] // [______________65432109_________] (((((int)in[ 5 + inPos]) & 255) << 9) & 2147483647) | // [76543210] // [______43210987_________________] (((((int)in[ 6 + inPos]) & 255) << 17) & 2147483647) | // [__543210] // [098765_________________________] (((((int)in[ 7 + inPos]) & 255) << 25) & 2147483647); out[ 2 + outPos] = // [76______] // [_____________________________10] (((((int)in[ 7 + inPos]) & 255) >>> 6) & 2147483647) | // [76543210] // [_____________________98765432__] (((((int)in[ 8 + inPos]) & 255) << 2) & 2147483647) | // [76543210] // [_____________76543210__________] (((((int)in[ 9 + inPos]) & 255) << 10) & 2147483647) | // [76543210] // [_____54321098__________________] (((((int)in[10 + inPos]) & 255) << 18) & 2147483647) | // [___43210] // [09876__________________________] (((((int)in[11 + inPos]) & 255) << 26) & 2147483647); out[ 3 + outPos] = // [765_____] // [____________________________210] (((((int)in[11 + inPos]) & 255) >>> 5) & 2147483647) | // [76543210] // [____________________09876543___] (((((int)in[12 + inPos]) & 255) << 3) & 2147483647) | // [76543210] // [____________87654321___________] (((((int)in[13 + inPos]) & 255) << 11) & 2147483647) | // [76543210] // [____65432109___________________] (((((int)in[14 + inPos]) & 255) << 19) & 2147483647) | // [____3210] // [0987___________________________] (((((int)in[15 + inPos]) & 255) << 27) & 2147483647); out[ 4 + outPos] = // [7654____] // [___________________________3210] (((((int)in[15 + inPos]) & 255) >>> 4) & 2147483647) | // [76543210] // [___________________10987654____] (((((int)in[16 + inPos]) & 255) << 4) & 2147483647) | // [76543210] // [___________98765432____________] (((((int)in[17 + inPos]) & 255) << 12) & 2147483647) | // [76543210] // [___76543210____________________] (((((int)in[18 + inPos]) & 255) << 20) & 2147483647) | // [_____210] // [098____________________________] (((((int)in[19 + inPos]) & 255) << 28) & 2147483647); out[ 5 + outPos] = // [76543___] // [__________________________43210] (((((int)in[19 + inPos]) & 255) >>> 3) & 2147483647) | // [76543210] // [__________________21098765_____] (((((int)in[20 + inPos]) & 255) << 5) & 2147483647) | // [76543210] // [__________09876543_____________] (((((int)in[21 + inPos]) & 255) << 13) & 2147483647) | // [76543210] // [__87654321_____________________] (((((int)in[22 + inPos]) & 255) << 21) & 2147483647) | // [______10] // [09_____________________________] (((((int)in[23 + inPos]) & 255) << 29) & 2147483647); out[ 6 + outPos] = // [765432__] // [_________________________543210] (((((int)in[23 + inPos]) & 255) >>> 2) & 2147483647) | // [76543210] // [_________________32109876______] (((((int)in[24 + inPos]) & 255) << 6) & 2147483647) | // [76543210] // [_________10987654______________] (((((int)in[25 + inPos]) & 255) << 14) & 2147483647) | // [76543210] // [_98765432______________________] (((((int)in[26 + inPos]) & 255) << 22) & 2147483647) | // [_______0] // [0______________________________] (((((int)in[27 + inPos]) & 255) << 30) & 2147483647); out[ 7 + outPos] = // [7654321_] // [________________________6543210] (((((int)in[27 + inPos]) & 255) >>> 1) & 2147483647) | // [76543210] // [________________43210987_______] (((((int)in[28 + inPos]) & 255) << 7) & 2147483647) | // [76543210] // [________21098765_______________] (((((int)in[29 + inPos]) & 255) << 15) & 2147483647) | // [76543210] // [09876543_______________________] (((((int)in[30 + inPos]) & 255) << 23) & 2147483647); out[ 8 + outPos] = // [76543210] // [_______________________76543210] (((((int)in[31 + inPos]) & 255) ) & 2147483647) | // [76543210] // [_______________54321098________] (((((int)in[32 + inPos]) & 255) << 8) & 2147483647) | // [76543210] // [_______32109876________________] (((((int)in[33 + inPos]) & 255) << 16) & 2147483647) | // [_6543210] // [0987654________________________] (((((int)in[34 + inPos]) & 255) << 24) & 2147483647); out[ 9 + outPos] = // [7_______] // [______________________________0] (((((int)in[34 + inPos]) & 255) >>> 7) & 2147483647) | // [76543210] // [______________________87654321_] (((((int)in[35 + inPos]) & 255) << 1) & 2147483647) | // [76543210] // [______________65432109_________] (((((int)in[36 + inPos]) & 255) << 9) & 2147483647) | // [76543210] // [______43210987_________________] (((((int)in[37 + inPos]) & 255) << 17) & 2147483647) | // [__543210] // [098765_________________________] (((((int)in[38 + inPos]) & 255) << 25) & 2147483647); out[10 + outPos] = // [76______] // [_____________________________10] (((((int)in[38 + inPos]) & 255) >>> 6) & 2147483647) | // [76543210] // [_____________________98765432__] (((((int)in[39 + inPos]) & 255) << 2) & 2147483647) | // [76543210] // [_____________76543210__________] (((((int)in[40 + inPos]) & 255) << 10) & 2147483647) | // [76543210] // [_____54321098__________________] (((((int)in[41 + inPos]) & 255) << 18) & 2147483647) | // [___43210] // [09876__________________________] (((((int)in[42 + inPos]) & 255) << 26) & 2147483647); out[11 + outPos] = // [765_____] // [____________________________210] (((((int)in[42 + inPos]) & 255) >>> 5) & 2147483647) | // [76543210] // [____________________09876543___] (((((int)in[43 + inPos]) & 255) << 3) & 2147483647) | // [76543210] // [____________87654321___________] (((((int)in[44 + inPos]) & 255) << 11) & 2147483647) | // [76543210] // [____65432109___________________] (((((int)in[45 + inPos]) & 255) << 19) & 2147483647) | // [____3210] // [0987___________________________] (((((int)in[46 + inPos]) & 255) << 27) & 2147483647); out[12 + outPos] = // [7654____] // [___________________________3210] (((((int)in[46 + inPos]) & 255) >>> 4) & 2147483647) | // [76543210] // [___________________10987654____] (((((int)in[47 + inPos]) & 255) << 4) & 2147483647) | // [76543210] // [___________98765432____________] (((((int)in[48 + inPos]) & 255) << 12) & 2147483647) | // [76543210] // [___76543210____________________] (((((int)in[49 + inPos]) & 255) << 20) & 2147483647) | // [_____210] // [098____________________________] (((((int)in[50 + inPos]) & 255) << 28) & 2147483647); out[13 + outPos] = // [76543___] // [__________________________43210] (((((int)in[50 + inPos]) & 255) >>> 3) & 2147483647) | // [76543210] // [__________________21098765_____] (((((int)in[51 + inPos]) & 255) << 5) & 2147483647) | // [76543210] // [__________09876543_____________] (((((int)in[52 + inPos]) & 255) << 13) & 2147483647) | // [76543210] // [__87654321_____________________] (((((int)in[53 + inPos]) & 255) << 21) & 2147483647) | // [______10] // [09_____________________________] (((((int)in[54 + inPos]) & 255) << 29) & 2147483647); out[14 + outPos] = // [765432__] // [_________________________543210] (((((int)in[54 + inPos]) & 255) >>> 2) & 2147483647) | // [76543210] // [_________________32109876______] (((((int)in[55 + inPos]) & 255) << 6) & 2147483647) | // [76543210] // [_________10987654______________] (((((int)in[56 + inPos]) & 255) << 14) & 2147483647) | // [76543210] // [_98765432______________________] (((((int)in[57 + inPos]) & 255) << 22) & 2147483647) | // [_______0] // [0______________________________] (((((int)in[58 + inPos]) & 255) << 30) & 2147483647); out[15 + outPos] = // [7654321_] // [________________________6543210] (((((int)in[58 + inPos]) & 255) >>> 1) & 2147483647) | // [76543210] // [________________43210987_______] (((((int)in[59 + inPos]) & 255) << 7) & 2147483647) | // [76543210] // [________21098765_______________] (((((int)in[60 + inPos]) & 255) << 15) & 2147483647) | // [76543210] // [09876543_______________________] (((((int)in[61 + inPos]) & 255) << 23) & 2147483647); out[16 + outPos] = // [76543210] // [_______________________76543210] (((((int)in[62 + inPos]) & 255) ) & 2147483647) | // [76543210] // [_______________54321098________] (((((int)in[63 + inPos]) & 255) << 8) & 2147483647) | // [76543210] // [_______32109876________________] (((((int)in[64 + inPos]) & 255) << 16) & 2147483647) | // [_6543210] // [0987654________________________] (((((int)in[65 + inPos]) & 255) << 24) & 2147483647); out[17 + outPos] = // [7_______] // [______________________________0] (((((int)in[65 + inPos]) & 255) >>> 7) & 2147483647) | // [76543210] // [______________________87654321_] (((((int)in[66 + inPos]) & 255) << 1) & 2147483647) | // [76543210] // [______________65432109_________] (((((int)in[67 + inPos]) & 255) << 9) & 2147483647) | // [76543210] // [______43210987_________________] (((((int)in[68 + inPos]) & 255) << 17) & 2147483647) | // [__543210] // [098765_________________________] (((((int)in[69 + inPos]) & 255) << 25) & 2147483647); out[18 + outPos] = // [76______] // [_____________________________10] (((((int)in[69 + inPos]) & 255) >>> 6) & 2147483647) | // [76543210] // [_____________________98765432__] (((((int)in[70 + inPos]) & 255) << 2) & 2147483647) | // [76543210] // [_____________76543210__________] (((((int)in[71 + inPos]) & 255) << 10) & 2147483647) | // [76543210] // [_____54321098__________________] (((((int)in[72 + inPos]) & 255) << 18) & 2147483647) | // [___43210] // [09876__________________________] (((((int)in[73 + inPos]) & 255) << 26) & 2147483647); out[19 + outPos] = // [765_____] // [____________________________210] (((((int)in[73 + inPos]) & 255) >>> 5) & 2147483647) | // [76543210] // [____________________09876543___] (((((int)in[74 + inPos]) & 255) << 3) & 2147483647) | // [76543210] // [____________87654321___________] (((((int)in[75 + inPos]) & 255) << 11) & 2147483647) | // [76543210] // [____65432109___________________] (((((int)in[76 + inPos]) & 255) << 19) & 2147483647) | // [____3210] // [0987___________________________] (((((int)in[77 + inPos]) & 255) << 27) & 2147483647); out[20 + outPos] = // [7654____] // [___________________________3210] (((((int)in[77 + inPos]) & 255) >>> 4) & 2147483647) | // [76543210] // [___________________10987654____] (((((int)in[78 + inPos]) & 255) << 4) & 2147483647) | // [76543210] // [___________98765432____________] (((((int)in[79 + inPos]) & 255) << 12) & 2147483647) | // [76543210] // [___76543210____________________] (((((int)in[80 + inPos]) & 255) << 20) & 2147483647) | // [_____210] // [098____________________________] (((((int)in[81 + inPos]) & 255) << 28) & 2147483647); out[21 + outPos] = // [76543___] // [__________________________43210] (((((int)in[81 + inPos]) & 255) >>> 3) & 2147483647) | // [76543210] // [__________________21098765_____] (((((int)in[82 + inPos]) & 255) << 5) & 2147483647) | // [76543210] // [__________09876543_____________] (((((int)in[83 + inPos]) & 255) << 13) & 2147483647) | // [76543210] // [__87654321_____________________] (((((int)in[84 + inPos]) & 255) << 21) & 2147483647) | // [______10] // [09_____________________________] (((((int)in[85 + inPos]) & 255) << 29) & 2147483647); out[22 + outPos] = // [765432__] // [_________________________543210] (((((int)in[85 + inPos]) & 255) >>> 2) & 2147483647) | // [76543210] // [_________________32109876______] (((((int)in[86 + inPos]) & 255) << 6) & 2147483647) | // [76543210] // [_________10987654______________] (((((int)in[87 + inPos]) & 255) << 14) & 2147483647) | // [76543210] // [_98765432______________________] (((((int)in[88 + inPos]) & 255) << 22) & 2147483647) | // [_______0] // [0______________________________] (((((int)in[89 + inPos]) & 255) << 30) & 2147483647); out[23 + outPos] = // [7654321_] // [________________________6543210] (((((int)in[89 + inPos]) & 255) >>> 1) & 2147483647) | // [76543210] // [________________43210987_______] (((((int)in[90 + inPos]) & 255) << 7) & 2147483647) | // [76543210] // [________21098765_______________] (((((int)in[91 + inPos]) & 255) << 15) & 2147483647) | // [76543210] // [09876543_______________________] (((((int)in[92 + inPos]) & 255) << 23) & 2147483647); out[24 + outPos] = // [76543210] // [_______________________76543210] (((((int)in[93 + inPos]) & 255) ) & 2147483647) | // [76543210] // [_______________54321098________] (((((int)in[94 + inPos]) & 255) << 8) & 2147483647) | // [76543210] // [_______32109876________________] (((((int)in[95 + inPos]) & 255) << 16) & 2147483647) | // [_6543210] // [0987654________________________] (((((int)in[96 + inPos]) & 255) << 24) & 2147483647); out[25 + outPos] = // [7_______] // [______________________________0] (((((int)in[96 + inPos]) & 255) >>> 7) & 2147483647) | // [76543210] // [______________________87654321_] (((((int)in[97 + inPos]) & 255) << 1) & 2147483647) | // [76543210] // [______________65432109_________] (((((int)in[98 + inPos]) & 255) << 9) & 2147483647) | // [76543210] // [______43210987_________________] (((((int)in[99 + inPos]) & 255) << 17) & 2147483647) | // [__543210] // [098765_________________________] (((((int)in[100 + inPos]) & 255) << 25) & 2147483647); out[26 + outPos] = // [76______] // [_____________________________10] (((((int)in[100 + inPos]) & 255) >>> 6) & 2147483647) | // [76543210] // [_____________________98765432__] (((((int)in[101 + inPos]) & 255) << 2) & 2147483647) | // [76543210] // [_____________76543210__________] (((((int)in[102 + inPos]) & 255) << 10) & 2147483647) | // [76543210] // [_____54321098__________________] (((((int)in[103 + inPos]) & 255) << 18) & 2147483647) | // [___43210] // [09876__________________________] (((((int)in[104 + inPos]) & 255) << 26) & 2147483647); out[27 + outPos] = // [765_____] // [____________________________210] (((((int)in[104 + inPos]) & 255) >>> 5) & 2147483647) | // [76543210] // [____________________09876543___] (((((int)in[105 + inPos]) & 255) << 3) & 2147483647) | // [76543210] // [____________87654321___________] (((((int)in[106 + inPos]) & 255) << 11) & 2147483647) | // [76543210] // [____65432109___________________] (((((int)in[107 + inPos]) & 255) << 19) & 2147483647) | // [____3210] // [0987___________________________] (((((int)in[108 + inPos]) & 255) << 27) & 2147483647); out[28 + outPos] = // [7654____] // [___________________________3210] (((((int)in[108 + inPos]) & 255) >>> 4) & 2147483647) | // [76543210] // [___________________10987654____] (((((int)in[109 + inPos]) & 255) << 4) & 2147483647) | // [76543210] // [___________98765432____________] (((((int)in[110 + inPos]) & 255) << 12) & 2147483647) | // [76543210] // [___76543210____________________] (((((int)in[111 + inPos]) & 255) << 20) & 2147483647) | // [_____210] // [098____________________________] (((((int)in[112 + inPos]) & 255) << 28) & 2147483647); out[29 + outPos] = // [76543___] // [__________________________43210] (((((int)in[112 + inPos]) & 255) >>> 3) & 2147483647) | // [76543210] // [__________________21098765_____] (((((int)in[113 + inPos]) & 255) << 5) & 2147483647) | // [76543210] // [__________09876543_____________] (((((int)in[114 + inPos]) & 255) << 13) & 2147483647) | // [76543210] // [__87654321_____________________] (((((int)in[115 + inPos]) & 255) << 21) & 2147483647) | // [______10] // [09_____________________________] (((((int)in[116 + inPos]) & 255) << 29) & 2147483647); out[30 + outPos] = // [765432__] // [_________________________543210] (((((int)in[116 + inPos]) & 255) >>> 2) & 2147483647) | // [76543210] // [_________________32109876______] (((((int)in[117 + inPos]) & 255) << 6) & 2147483647) | // [76543210] // [_________10987654______________] (((((int)in[118 + inPos]) & 255) << 14) & 2147483647) | // [76543210] // [_98765432______________________] (((((int)in[119 + inPos]) & 255) << 22) & 2147483647) | // [_______0] // [0______________________________] (((((int)in[120 + inPos]) & 255) << 30) & 2147483647); out[31 + outPos] = // [7654321_] // [________________________6543210] (((((int)in[120 + inPos]) & 255) >>> 1) & 2147483647) | // [76543210] // [________________43210987_______] (((((int)in[121 + inPos]) & 255) << 7) & 2147483647) | // [76543210] // [________21098765_______________] (((((int)in[122 + inPos]) & 255) << 15) & 2147483647) | // [76543210] // [09876543_______________________] (((((int)in[123 + inPos]) & 255) << 23) & 2147483647); } } private static final class Packer32 extends BytePacker { private Packer32() { super(32); } public final void pack8Values(final int[] in, final int inPos, final byte[] out, final int outPos) { out[ 0 + outPos] = (byte)(( // [76543210] // [________________________76543210] ((in[ 0 + inPos] & -1))) & 255); out[ 1 + outPos] = (byte)(( // [76543210] // [________________54321098________] ((in[ 0 + inPos] & -1) >>> 8)) & 255); out[ 2 + outPos] = (byte)(( // [76543210] // [________32109876________________] ((in[ 0 + inPos] & -1) >>> 16)) & 255); out[ 3 + outPos] = (byte)(( // [76543210] // [10987654________________________] ((in[ 0 + inPos] & -1) >>> 24)) & 255); out[ 4 + outPos] = (byte)(( // [76543210] // [________________________76543210] ((in[ 1 + inPos] & -1))) & 255); out[ 5 + outPos] = (byte)(( // [76543210] // [________________54321098________] ((in[ 1 + inPos] & -1) >>> 8)) & 255); out[ 6 + outPos] = (byte)(( // [76543210] // [________32109876________________] ((in[ 1 + inPos] & -1) >>> 16)) & 255); out[ 7 + outPos] = (byte)(( // [76543210] // [10987654________________________] ((in[ 1 + inPos] & -1) >>> 24)) & 255); out[ 8 + outPos] = (byte)(( // [76543210] // [________________________76543210] ((in[ 2 + inPos] & -1))) & 255); out[ 9 + outPos] = (byte)(( // [76543210] // [________________54321098________] ((in[ 2 + inPos] & -1) >>> 8)) & 255); out[10 + outPos] = (byte)(( // [76543210] // [________32109876________________] ((in[ 2 + inPos] & -1) >>> 16)) & 255); out[11 + outPos] = (byte)(( // [76543210] // [10987654________________________] ((in[ 2 + inPos] & -1) >>> 24)) & 255); out[12 + outPos] = (byte)(( // [76543210] // [________________________76543210] ((in[ 3 + inPos] & -1))) & 255); out[13 + outPos] = (byte)(( // [76543210] // [________________54321098________] ((in[ 3 + inPos] & -1) >>> 8)) & 255); out[14 + outPos] = (byte)(( // [76543210] // [________32109876________________] ((in[ 3 + inPos] & -1) >>> 16)) & 255); out[15 + outPos] = (byte)(( // [76543210] // [10987654________________________] ((in[ 3 + inPos] & -1) >>> 24)) & 255); out[16 + outPos] = (byte)(( // [76543210] // [________________________76543210] ((in[ 4 + inPos] & -1))) & 255); out[17 + outPos] = (byte)(( // [76543210] // [________________54321098________] ((in[ 4 + inPos] & -1) >>> 8)) & 255); out[18 + outPos] = (byte)(( // [76543210] // [________32109876________________] ((in[ 4 + inPos] & -1) >>> 16)) & 255); out[19 + outPos] = (byte)(( // [76543210] // [10987654________________________] ((in[ 4 + inPos] & -1) >>> 24)) & 255); out[20 + outPos] = (byte)(( // [76543210] // [________________________76543210] ((in[ 5 + inPos] & -1))) & 255); out[21 + outPos] = (byte)(( // [76543210] // [________________54321098________] ((in[ 5 + inPos] & -1) >>> 8)) & 255); out[22 + outPos] = (byte)(( // [76543210] // [________32109876________________] ((in[ 5 + inPos] & -1) >>> 16)) & 255); out[23 + outPos] = (byte)(( // [76543210] // [10987654________________________] ((in[ 5 + inPos] & -1) >>> 24)) & 255); out[24 + outPos] = (byte)(( // [76543210] // [________________________76543210] ((in[ 6 + inPos] & -1))) & 255); out[25 + outPos] = (byte)(( // [76543210] // [________________54321098________] ((in[ 6 + inPos] & -1) >>> 8)) & 255); out[26 + outPos] = (byte)(( // [76543210] // [________32109876________________] ((in[ 6 + inPos] & -1) >>> 16)) & 255); out[27 + outPos] = (byte)(( // [76543210] // [10987654________________________] ((in[ 6 + inPos] & -1) >>> 24)) & 255); out[28 + outPos] = (byte)(( // [76543210] // [________________________76543210] ((in[ 7 + inPos] & -1))) & 255); out[29 + outPos] = (byte)(( // [76543210] // [________________54321098________] ((in[ 7 + inPos] & -1) >>> 8)) & 255); out[30 + outPos] = (byte)(( // [76543210] // [________32109876________________] ((in[ 7 + inPos] & -1) >>> 16)) & 255); out[31 + outPos] = (byte)(( // [76543210] // [10987654________________________] ((in[ 7 + inPos] & -1) >>> 24)) & 255); } public final void pack32Values(final int[] in, final int inPos, final byte[] out, final int outPos) { out[ 0 + outPos] = (byte)(( // [76543210] // [________________________76543210] ((in[ 0 + inPos] & -1))) & 255); out[ 1 + outPos] = (byte)(( // [76543210] // [________________54321098________] ((in[ 0 + inPos] & -1) >>> 8)) & 255); out[ 2 + outPos] = (byte)(( // [76543210] // [________32109876________________] ((in[ 0 + inPos] & -1) >>> 16)) & 255); out[ 3 + outPos] = (byte)(( // [76543210] // [10987654________________________] ((in[ 0 + inPos] & -1) >>> 24)) & 255); out[ 4 + outPos] = (byte)(( // [76543210] // [________________________76543210] ((in[ 1 + inPos] & -1))) & 255); out[ 5 + outPos] = (byte)(( // [76543210] // [________________54321098________] ((in[ 1 + inPos] & -1) >>> 8)) & 255); out[ 6 + outPos] = (byte)(( // [76543210] // [________32109876________________] ((in[ 1 + inPos] & -1) >>> 16)) & 255); out[ 7 + outPos] = (byte)(( // [76543210] // [10987654________________________] ((in[ 1 + inPos] & -1) >>> 24)) & 255); out[ 8 + outPos] = (byte)(( // [76543210] // [________________________76543210] ((in[ 2 + inPos] & -1))) & 255); out[ 9 + outPos] = (byte)(( // [76543210] // [________________54321098________] ((in[ 2 + inPos] & -1) >>> 8)) & 255); out[10 + outPos] = (byte)(( // [76543210] // [________32109876________________] ((in[ 2 + inPos] & -1) >>> 16)) & 255); out[11 + outPos] = (byte)(( // [76543210] // [10987654________________________] ((in[ 2 + inPos] & -1) >>> 24)) & 255); out[12 + outPos] = (byte)(( // [76543210] // [________________________76543210] ((in[ 3 + inPos] & -1))) & 255); out[13 + outPos] = (byte)(( // [76543210] // [________________54321098________] ((in[ 3 + inPos] & -1) >>> 8)) & 255); out[14 + outPos] = (byte)(( // [76543210] // [________32109876________________] ((in[ 3 + inPos] & -1) >>> 16)) & 255); out[15 + outPos] = (byte)(( // [76543210] // [10987654________________________] ((in[ 3 + inPos] & -1) >>> 24)) & 255); out[16 + outPos] = (byte)(( // [76543210] // [________________________76543210] ((in[ 4 + inPos] & -1))) & 255); out[17 + outPos] = (byte)(( // [76543210] // [________________54321098________] ((in[ 4 + inPos] & -1) >>> 8)) & 255); out[18 + outPos] = (byte)(( // [76543210] // [________32109876________________] ((in[ 4 + inPos] & -1) >>> 16)) & 255); out[19 + outPos] = (byte)(( // [76543210] // [10987654________________________] ((in[ 4 + inPos] & -1) >>> 24)) & 255); out[20 + outPos] = (byte)(( // [76543210] // [________________________76543210] ((in[ 5 + inPos] & -1))) & 255); out[21 + outPos] = (byte)(( // [76543210] // [________________54321098________] ((in[ 5 + inPos] & -1) >>> 8)) & 255); out[22 + outPos] = (byte)(( // [76543210] // [________32109876________________] ((in[ 5 + inPos] & -1) >>> 16)) & 255); out[23 + outPos] = (byte)(( // [76543210] // [10987654________________________] ((in[ 5 + inPos] & -1) >>> 24)) & 255); out[24 + outPos] = (byte)(( // [76543210] // [________________________76543210] ((in[ 6 + inPos] & -1))) & 255); out[25 + outPos] = (byte)(( // [76543210] // [________________54321098________] ((in[ 6 + inPos] & -1) >>> 8)) & 255); out[26 + outPos] = (byte)(( // [76543210] // [________32109876________________] ((in[ 6 + inPos] & -1) >>> 16)) & 255); out[27 + outPos] = (byte)(( // [76543210] // [10987654________________________] ((in[ 6 + inPos] & -1) >>> 24)) & 255); out[28 + outPos] = (byte)(( // [76543210] // [________________________76543210] ((in[ 7 + inPos] & -1))) & 255); out[29 + outPos] = (byte)(( // [76543210] // [________________54321098________] ((in[ 7 + inPos] & -1) >>> 8)) & 255); out[30 + outPos] = (byte)(( // [76543210] // [________32109876________________] ((in[ 7 + inPos] & -1) >>> 16)) & 255); out[31 + outPos] = (byte)(( // [76543210] // [10987654________________________] ((in[ 7 + inPos] & -1) >>> 24)) & 255); out[32 + outPos] = (byte)(( // [76543210] // [________________________76543210] ((in[ 8 + inPos] & -1))) & 255); out[33 + outPos] = (byte)(( // [76543210] // [________________54321098________] ((in[ 8 + inPos] & -1) >>> 8)) & 255); out[34 + outPos] = (byte)(( // [76543210] // [________32109876________________] ((in[ 8 + inPos] & -1) >>> 16)) & 255); out[35 + outPos] = (byte)(( // [76543210] // [10987654________________________] ((in[ 8 + inPos] & -1) >>> 24)) & 255); out[36 + outPos] = (byte)(( // [76543210] // [________________________76543210] ((in[ 9 + inPos] & -1))) & 255); out[37 + outPos] = (byte)(( // [76543210] // [________________54321098________] ((in[ 9 + inPos] & -1) >>> 8)) & 255); out[38 + outPos] = (byte)(( // [76543210] // [________32109876________________] ((in[ 9 + inPos] & -1) >>> 16)) & 255); out[39 + outPos] = (byte)(( // [76543210] // [10987654________________________] ((in[ 9 + inPos] & -1) >>> 24)) & 255); out[40 + outPos] = (byte)(( // [76543210] // [________________________76543210] ((in[10 + inPos] & -1))) & 255); out[41 + outPos] = (byte)(( // [76543210] // [________________54321098________] ((in[10 + inPos] & -1) >>> 8)) & 255); out[42 + outPos] = (byte)(( // [76543210] // [________32109876________________] ((in[10 + inPos] & -1) >>> 16)) & 255); out[43 + outPos] = (byte)(( // [76543210] // [10987654________________________] ((in[10 + inPos] & -1) >>> 24)) & 255); out[44 + outPos] = (byte)(( // [76543210] // [________________________76543210] ((in[11 + inPos] & -1))) & 255); out[45 + outPos] = (byte)(( // [76543210] // [________________54321098________] ((in[11 + inPos] & -1) >>> 8)) & 255); out[46 + outPos] = (byte)(( // [76543210] // [________32109876________________] ((in[11 + inPos] & -1) >>> 16)) & 255); out[47 + outPos] = (byte)(( // [76543210] // [10987654________________________] ((in[11 + inPos] & -1) >>> 24)) & 255); out[48 + outPos] = (byte)(( // [76543210] // [________________________76543210] ((in[12 + inPos] & -1))) & 255); out[49 + outPos] = (byte)(( // [76543210] // [________________54321098________] ((in[12 + inPos] & -1) >>> 8)) & 255); out[50 + outPos] = (byte)(( // [76543210] // [________32109876________________] ((in[12 + inPos] & -1) >>> 16)) & 255); out[51 + outPos] = (byte)(( // [76543210] // [10987654________________________] ((in[12 + inPos] & -1) >>> 24)) & 255); out[52 + outPos] = (byte)(( // [76543210] // [________________________76543210] ((in[13 + inPos] & -1))) & 255); out[53 + outPos] = (byte)(( // [76543210] // [________________54321098________] ((in[13 + inPos] & -1) >>> 8)) & 255); out[54 + outPos] = (byte)(( // [76543210] // [________32109876________________] ((in[13 + inPos] & -1) >>> 16)) & 255); out[55 + outPos] = (byte)(( // [76543210] // [10987654________________________] ((in[13 + inPos] & -1) >>> 24)) & 255); out[56 + outPos] = (byte)(( // [76543210] // [________________________76543210] ((in[14 + inPos] & -1))) & 255); out[57 + outPos] = (byte)(( // [76543210] // [________________54321098________] ((in[14 + inPos] & -1) >>> 8)) & 255); out[58 + outPos] = (byte)(( // [76543210] // [________32109876________________] ((in[14 + inPos] & -1) >>> 16)) & 255); out[59 + outPos] = (byte)(( // [76543210] // [10987654________________________] ((in[14 + inPos] & -1) >>> 24)) & 255); out[60 + outPos] = (byte)(( // [76543210] // [________________________76543210] ((in[15 + inPos] & -1))) & 255); out[61 + outPos] = (byte)(( // [76543210] // [________________54321098________] ((in[15 + inPos] & -1) >>> 8)) & 255); out[62 + outPos] = (byte)(( // [76543210] // [________32109876________________] ((in[15 + inPos] & -1) >>> 16)) & 255); out[63 + outPos] = (byte)(( // [76543210] // [10987654________________________] ((in[15 + inPos] & -1) >>> 24)) & 255); out[64 + outPos] = (byte)(( // [76543210] // [________________________76543210] ((in[16 + inPos] & -1))) & 255); out[65 + outPos] = (byte)(( // [76543210] // [________________54321098________] ((in[16 + inPos] & -1) >>> 8)) & 255); out[66 + outPos] = (byte)(( // [76543210] // [________32109876________________] ((in[16 + inPos] & -1) >>> 16)) & 255); out[67 + outPos] = (byte)(( // [76543210] // [10987654________________________] ((in[16 + inPos] & -1) >>> 24)) & 255); out[68 + outPos] = (byte)(( // [76543210] // [________________________76543210] ((in[17 + inPos] & -1))) & 255); out[69 + outPos] = (byte)(( // [76543210] // [________________54321098________] ((in[17 + inPos] & -1) >>> 8)) & 255); out[70 + outPos] = (byte)(( // [76543210] // [________32109876________________] ((in[17 + inPos] & -1) >>> 16)) & 255); out[71 + outPos] = (byte)(( // [76543210] // [10987654________________________] ((in[17 + inPos] & -1) >>> 24)) & 255); out[72 + outPos] = (byte)(( // [76543210] // [________________________76543210] ((in[18 + inPos] & -1))) & 255); out[73 + outPos] = (byte)(( // [76543210] // [________________54321098________] ((in[18 + inPos] & -1) >>> 8)) & 255); out[74 + outPos] = (byte)(( // [76543210] // [________32109876________________] ((in[18 + inPos] & -1) >>> 16)) & 255); out[75 + outPos] = (byte)(( // [76543210] // [10987654________________________] ((in[18 + inPos] & -1) >>> 24)) & 255); out[76 + outPos] = (byte)(( // [76543210] // [________________________76543210] ((in[19 + inPos] & -1))) & 255); out[77 + outPos] = (byte)(( // [76543210] // [________________54321098________] ((in[19 + inPos] & -1) >>> 8)) & 255); out[78 + outPos] = (byte)(( // [76543210] // [________32109876________________] ((in[19 + inPos] & -1) >>> 16)) & 255); out[79 + outPos] = (byte)(( // [76543210] // [10987654________________________] ((in[19 + inPos] & -1) >>> 24)) & 255); out[80 + outPos] = (byte)(( // [76543210] // [________________________76543210] ((in[20 + inPos] & -1))) & 255); out[81 + outPos] = (byte)(( // [76543210] // [________________54321098________] ((in[20 + inPos] & -1) >>> 8)) & 255); out[82 + outPos] = (byte)(( // [76543210] // [________32109876________________] ((in[20 + inPos] & -1) >>> 16)) & 255); out[83 + outPos] = (byte)(( // [76543210] // [10987654________________________] ((in[20 + inPos] & -1) >>> 24)) & 255); out[84 + outPos] = (byte)(( // [76543210] // [________________________76543210] ((in[21 + inPos] & -1))) & 255); out[85 + outPos] = (byte)(( // [76543210] // [________________54321098________] ((in[21 + inPos] & -1) >>> 8)) & 255); out[86 + outPos] = (byte)(( // [76543210] // [________32109876________________] ((in[21 + inPos] & -1) >>> 16)) & 255); out[87 + outPos] = (byte)(( // [76543210] // [10987654________________________] ((in[21 + inPos] & -1) >>> 24)) & 255); out[88 + outPos] = (byte)(( // [76543210] // [________________________76543210] ((in[22 + inPos] & -1))) & 255); out[89 + outPos] = (byte)(( // [76543210] // [________________54321098________] ((in[22 + inPos] & -1) >>> 8)) & 255); out[90 + outPos] = (byte)(( // [76543210] // [________32109876________________] ((in[22 + inPos] & -1) >>> 16)) & 255); out[91 + outPos] = (byte)(( // [76543210] // [10987654________________________] ((in[22 + inPos] & -1) >>> 24)) & 255); out[92 + outPos] = (byte)(( // [76543210] // [________________________76543210] ((in[23 + inPos] & -1))) & 255); out[93 + outPos] = (byte)(( // [76543210] // [________________54321098________] ((in[23 + inPos] & -1) >>> 8)) & 255); out[94 + outPos] = (byte)(( // [76543210] // [________32109876________________] ((in[23 + inPos] & -1) >>> 16)) & 255); out[95 + outPos] = (byte)(( // [76543210] // [10987654________________________] ((in[23 + inPos] & -1) >>> 24)) & 255); out[96 + outPos] = (byte)(( // [76543210] // [________________________76543210] ((in[24 + inPos] & -1))) & 255); out[97 + outPos] = (byte)(( // [76543210] // [________________54321098________] ((in[24 + inPos] & -1) >>> 8)) & 255); out[98 + outPos] = (byte)(( // [76543210] // [________32109876________________] ((in[24 + inPos] & -1) >>> 16)) & 255); out[99 + outPos] = (byte)(( // [76543210] // [10987654________________________] ((in[24 + inPos] & -1) >>> 24)) & 255); out[100 + outPos] = (byte)(( // [76543210] // [________________________76543210] ((in[25 + inPos] & -1))) & 255); out[101 + outPos] = (byte)(( // [76543210] // [________________54321098________] ((in[25 + inPos] & -1) >>> 8)) & 255); out[102 + outPos] = (byte)(( // [76543210] // [________32109876________________] ((in[25 + inPos] & -1) >>> 16)) & 255); out[103 + outPos] = (byte)(( // [76543210] // [10987654________________________] ((in[25 + inPos] & -1) >>> 24)) & 255); out[104 + outPos] = (byte)(( // [76543210] // [________________________76543210] ((in[26 + inPos] & -1))) & 255); out[105 + outPos] = (byte)(( // [76543210] // [________________54321098________] ((in[26 + inPos] & -1) >>> 8)) & 255); out[106 + outPos] = (byte)(( // [76543210] // [________32109876________________] ((in[26 + inPos] & -1) >>> 16)) & 255); out[107 + outPos] = (byte)(( // [76543210] // [10987654________________________] ((in[26 + inPos] & -1) >>> 24)) & 255); out[108 + outPos] = (byte)(( // [76543210] // [________________________76543210] ((in[27 + inPos] & -1))) & 255); out[109 + outPos] = (byte)(( // [76543210] // [________________54321098________] ((in[27 + inPos] & -1) >>> 8)) & 255); out[110 + outPos] = (byte)(( // [76543210] // [________32109876________________] ((in[27 + inPos] & -1) >>> 16)) & 255); out[111 + outPos] = (byte)(( // [76543210] // [10987654________________________] ((in[27 + inPos] & -1) >>> 24)) & 255); out[112 + outPos] = (byte)(( // [76543210] // [________________________76543210] ((in[28 + inPos] & -1))) & 255); out[113 + outPos] = (byte)(( // [76543210] // [________________54321098________] ((in[28 + inPos] & -1) >>> 8)) & 255); out[114 + outPos] = (byte)(( // [76543210] // [________32109876________________] ((in[28 + inPos] & -1) >>> 16)) & 255); out[115 + outPos] = (byte)(( // [76543210] // [10987654________________________] ((in[28 + inPos] & -1) >>> 24)) & 255); out[116 + outPos] = (byte)(( // [76543210] // [________________________76543210] ((in[29 + inPos] & -1))) & 255); out[117 + outPos] = (byte)(( // [76543210] // [________________54321098________] ((in[29 + inPos] & -1) >>> 8)) & 255); out[118 + outPos] = (byte)(( // [76543210] // [________32109876________________] ((in[29 + inPos] & -1) >>> 16)) & 255); out[119 + outPos] = (byte)(( // [76543210] // [10987654________________________] ((in[29 + inPos] & -1) >>> 24)) & 255); out[120 + outPos] = (byte)(( // [76543210] // [________________________76543210] ((in[30 + inPos] & -1))) & 255); out[121 + outPos] = (byte)(( // [76543210] // [________________54321098________] ((in[30 + inPos] & -1) >>> 8)) & 255); out[122 + outPos] = (byte)(( // [76543210] // [________32109876________________] ((in[30 + inPos] & -1) >>> 16)) & 255); out[123 + outPos] = (byte)(( // [76543210] // [10987654________________________] ((in[30 + inPos] & -1) >>> 24)) & 255); out[124 + outPos] = (byte)(( // [76543210] // [________________________76543210] ((in[31 + inPos] & -1))) & 255); out[125 + outPos] = (byte)(( // [76543210] // [________________54321098________] ((in[31 + inPos] & -1) >>> 8)) & 255); out[126 + outPos] = (byte)(( // [76543210] // [________32109876________________] ((in[31 + inPos] & -1) >>> 16)) & 255); out[127 + outPos] = (byte)(( // [76543210] // [10987654________________________] ((in[31 + inPos] & -1) >>> 24)) & 255); } public final void unpack8Values(final byte[] in, final int inPos, final int[] out, final int outPos) { out[ 0 + outPos] = // [76543210] // [________________________76543210] (((((int)in[ 0 + inPos]) & 255) ) & -1) | // [76543210] // [________________54321098________] (((((int)in[ 1 + inPos]) & 255) << 8) & -1) | // [76543210] // [________32109876________________] (((((int)in[ 2 + inPos]) & 255) << 16) & -1) | // [76543210] // [10987654________________________] (((((int)in[ 3 + inPos]) & 255) << 24) & -1); out[ 1 + outPos] = // [76543210] // [________________________76543210] (((((int)in[ 4 + inPos]) & 255) ) & -1) | // [76543210] // [________________54321098________] (((((int)in[ 5 + inPos]) & 255) << 8) & -1) | // [76543210] // [________32109876________________] (((((int)in[ 6 + inPos]) & 255) << 16) & -1) | // [76543210] // [10987654________________________] (((((int)in[ 7 + inPos]) & 255) << 24) & -1); out[ 2 + outPos] = // [76543210] // [________________________76543210] (((((int)in[ 8 + inPos]) & 255) ) & -1) | // [76543210] // [________________54321098________] (((((int)in[ 9 + inPos]) & 255) << 8) & -1) | // [76543210] // [________32109876________________] (((((int)in[10 + inPos]) & 255) << 16) & -1) | // [76543210] // [10987654________________________] (((((int)in[11 + inPos]) & 255) << 24) & -1); out[ 3 + outPos] = // [76543210] // [________________________76543210] (((((int)in[12 + inPos]) & 255) ) & -1) | // [76543210] // [________________54321098________] (((((int)in[13 + inPos]) & 255) << 8) & -1) | // [76543210] // [________32109876________________] (((((int)in[14 + inPos]) & 255) << 16) & -1) | // [76543210] // [10987654________________________] (((((int)in[15 + inPos]) & 255) << 24) & -1); out[ 4 + outPos] = // [76543210] // [________________________76543210] (((((int)in[16 + inPos]) & 255) ) & -1) | // [76543210] // [________________54321098________] (((((int)in[17 + inPos]) & 255) << 8) & -1) | // [76543210] // [________32109876________________] (((((int)in[18 + inPos]) & 255) << 16) & -1) | // [76543210] // [10987654________________________] (((((int)in[19 + inPos]) & 255) << 24) & -1); out[ 5 + outPos] = // [76543210] // [________________________76543210] (((((int)in[20 + inPos]) & 255) ) & -1) | // [76543210] // [________________54321098________] (((((int)in[21 + inPos]) & 255) << 8) & -1) | // [76543210] // [________32109876________________] (((((int)in[22 + inPos]) & 255) << 16) & -1) | // [76543210] // [10987654________________________] (((((int)in[23 + inPos]) & 255) << 24) & -1); out[ 6 + outPos] = // [76543210] // [________________________76543210] (((((int)in[24 + inPos]) & 255) ) & -1) | // [76543210] // [________________54321098________] (((((int)in[25 + inPos]) & 255) << 8) & -1) | // [76543210] // [________32109876________________] (((((int)in[26 + inPos]) & 255) << 16) & -1) | // [76543210] // [10987654________________________] (((((int)in[27 + inPos]) & 255) << 24) & -1); out[ 7 + outPos] = // [76543210] // [________________________76543210] (((((int)in[28 + inPos]) & 255) ) & -1) | // [76543210] // [________________54321098________] (((((int)in[29 + inPos]) & 255) << 8) & -1) | // [76543210] // [________32109876________________] (((((int)in[30 + inPos]) & 255) << 16) & -1) | // [76543210] // [10987654________________________] (((((int)in[31 + inPos]) & 255) << 24) & -1); } public final void unpack32Values(final byte[] in, final int inPos, final int[] out, final int outPos) { out[ 0 + outPos] = // [76543210] // [________________________76543210] (((((int)in[ 0 + inPos]) & 255) ) & -1) | // [76543210] // [________________54321098________] (((((int)in[ 1 + inPos]) & 255) << 8) & -1) | // [76543210] // [________32109876________________] (((((int)in[ 2 + inPos]) & 255) << 16) & -1) | // [76543210] // [10987654________________________] (((((int)in[ 3 + inPos]) & 255) << 24) & -1); out[ 1 + outPos] = // [76543210] // [________________________76543210] (((((int)in[ 4 + inPos]) & 255) ) & -1) | // [76543210] // [________________54321098________] (((((int)in[ 5 + inPos]) & 255) << 8) & -1) | // [76543210] // [________32109876________________] (((((int)in[ 6 + inPos]) & 255) << 16) & -1) | // [76543210] // [10987654________________________] (((((int)in[ 7 + inPos]) & 255) << 24) & -1); out[ 2 + outPos] = // [76543210] // [________________________76543210] (((((int)in[ 8 + inPos]) & 255) ) & -1) | // [76543210] // [________________54321098________] (((((int)in[ 9 + inPos]) & 255) << 8) & -1) | // [76543210] // [________32109876________________] (((((int)in[10 + inPos]) & 255) << 16) & -1) | // [76543210] // [10987654________________________] (((((int)in[11 + inPos]) & 255) << 24) & -1); out[ 3 + outPos] = // [76543210] // [________________________76543210] (((((int)in[12 + inPos]) & 255) ) & -1) | // [76543210] // [________________54321098________] (((((int)in[13 + inPos]) & 255) << 8) & -1) | // [76543210] // [________32109876________________] (((((int)in[14 + inPos]) & 255) << 16) & -1) | // [76543210] // [10987654________________________] (((((int)in[15 + inPos]) & 255) << 24) & -1); out[ 4 + outPos] = // [76543210] // [________________________76543210] (((((int)in[16 + inPos]) & 255) ) & -1) | // [76543210] // [________________54321098________] (((((int)in[17 + inPos]) & 255) << 8) & -1) | // [76543210] // [________32109876________________] (((((int)in[18 + inPos]) & 255) << 16) & -1) | // [76543210] // [10987654________________________] (((((int)in[19 + inPos]) & 255) << 24) & -1); out[ 5 + outPos] = // [76543210] // [________________________76543210] (((((int)in[20 + inPos]) & 255) ) & -1) | // [76543210] // [________________54321098________] (((((int)in[21 + inPos]) & 255) << 8) & -1) | // [76543210] // [________32109876________________] (((((int)in[22 + inPos]) & 255) << 16) & -1) | // [76543210] // [10987654________________________] (((((int)in[23 + inPos]) & 255) << 24) & -1); out[ 6 + outPos] = // [76543210] // [________________________76543210] (((((int)in[24 + inPos]) & 255) ) & -1) | // [76543210] // [________________54321098________] (((((int)in[25 + inPos]) & 255) << 8) & -1) | // [76543210] // [________32109876________________] (((((int)in[26 + inPos]) & 255) << 16) & -1) | // [76543210] // [10987654________________________] (((((int)in[27 + inPos]) & 255) << 24) & -1); out[ 7 + outPos] = // [76543210] // [________________________76543210] (((((int)in[28 + inPos]) & 255) ) & -1) | // [76543210] // [________________54321098________] (((((int)in[29 + inPos]) & 255) << 8) & -1) | // [76543210] // [________32109876________________] (((((int)in[30 + inPos]) & 255) << 16) & -1) | // [76543210] // [10987654________________________] (((((int)in[31 + inPos]) & 255) << 24) & -1); out[ 8 + outPos] = // [76543210] // [________________________76543210] (((((int)in[32 + inPos]) & 255) ) & -1) | // [76543210] // [________________54321098________] (((((int)in[33 + inPos]) & 255) << 8) & -1) | // [76543210] // [________32109876________________] (((((int)in[34 + inPos]) & 255) << 16) & -1) | // [76543210] // [10987654________________________] (((((int)in[35 + inPos]) & 255) << 24) & -1); out[ 9 + outPos] = // [76543210] // [________________________76543210] (((((int)in[36 + inPos]) & 255) ) & -1) | // [76543210] // [________________54321098________] (((((int)in[37 + inPos]) & 255) << 8) & -1) | // [76543210] // [________32109876________________] (((((int)in[38 + inPos]) & 255) << 16) & -1) | // [76543210] // [10987654________________________] (((((int)in[39 + inPos]) & 255) << 24) & -1); out[10 + outPos] = // [76543210] // [________________________76543210] (((((int)in[40 + inPos]) & 255) ) & -1) | // [76543210] // [________________54321098________] (((((int)in[41 + inPos]) & 255) << 8) & -1) | // [76543210] // [________32109876________________] (((((int)in[42 + inPos]) & 255) << 16) & -1) | // [76543210] // [10987654________________________] (((((int)in[43 + inPos]) & 255) << 24) & -1); out[11 + outPos] = // [76543210] // [________________________76543210] (((((int)in[44 + inPos]) & 255) ) & -1) | // [76543210] // [________________54321098________] (((((int)in[45 + inPos]) & 255) << 8) & -1) | // [76543210] // [________32109876________________] (((((int)in[46 + inPos]) & 255) << 16) & -1) | // [76543210] // [10987654________________________] (((((int)in[47 + inPos]) & 255) << 24) & -1); out[12 + outPos] = // [76543210] // [________________________76543210] (((((int)in[48 + inPos]) & 255) ) & -1) | // [76543210] // [________________54321098________] (((((int)in[49 + inPos]) & 255) << 8) & -1) | // [76543210] // [________32109876________________] (((((int)in[50 + inPos]) & 255) << 16) & -1) | // [76543210] // [10987654________________________] (((((int)in[51 + inPos]) & 255) << 24) & -1); out[13 + outPos] = // [76543210] // [________________________76543210] (((((int)in[52 + inPos]) & 255) ) & -1) | // [76543210] // [________________54321098________] (((((int)in[53 + inPos]) & 255) << 8) & -1) | // [76543210] // [________32109876________________] (((((int)in[54 + inPos]) & 255) << 16) & -1) | // [76543210] // [10987654________________________] (((((int)in[55 + inPos]) & 255) << 24) & -1); out[14 + outPos] = // [76543210] // [________________________76543210] (((((int)in[56 + inPos]) & 255) ) & -1) | // [76543210] // [________________54321098________] (((((int)in[57 + inPos]) & 255) << 8) & -1) | // [76543210] // [________32109876________________] (((((int)in[58 + inPos]) & 255) << 16) & -1) | // [76543210] // [10987654________________________] (((((int)in[59 + inPos]) & 255) << 24) & -1); out[15 + outPos] = // [76543210] // [________________________76543210] (((((int)in[60 + inPos]) & 255) ) & -1) | // [76543210] // [________________54321098________] (((((int)in[61 + inPos]) & 255) << 8) & -1) | // [76543210] // [________32109876________________] (((((int)in[62 + inPos]) & 255) << 16) & -1) | // [76543210] // [10987654________________________] (((((int)in[63 + inPos]) & 255) << 24) & -1); out[16 + outPos] = // [76543210] // [________________________76543210] (((((int)in[64 + inPos]) & 255) ) & -1) | // [76543210] // [________________54321098________] (((((int)in[65 + inPos]) & 255) << 8) & -1) | // [76543210] // [________32109876________________] (((((int)in[66 + inPos]) & 255) << 16) & -1) | // [76543210] // [10987654________________________] (((((int)in[67 + inPos]) & 255) << 24) & -1); out[17 + outPos] = // [76543210] // [________________________76543210] (((((int)in[68 + inPos]) & 255) ) & -1) | // [76543210] // [________________54321098________] (((((int)in[69 + inPos]) & 255) << 8) & -1) | // [76543210] // [________32109876________________] (((((int)in[70 + inPos]) & 255) << 16) & -1) | // [76543210] // [10987654________________________] (((((int)in[71 + inPos]) & 255) << 24) & -1); out[18 + outPos] = // [76543210] // [________________________76543210] (((((int)in[72 + inPos]) & 255) ) & -1) | // [76543210] // [________________54321098________] (((((int)in[73 + inPos]) & 255) << 8) & -1) | // [76543210] // [________32109876________________] (((((int)in[74 + inPos]) & 255) << 16) & -1) | // [76543210] // [10987654________________________] (((((int)in[75 + inPos]) & 255) << 24) & -1); out[19 + outPos] = // [76543210] // [________________________76543210] (((((int)in[76 + inPos]) & 255) ) & -1) | // [76543210] // [________________54321098________] (((((int)in[77 + inPos]) & 255) << 8) & -1) | // [76543210] // [________32109876________________] (((((int)in[78 + inPos]) & 255) << 16) & -1) | // [76543210] // [10987654________________________] (((((int)in[79 + inPos]) & 255) << 24) & -1); out[20 + outPos] = // [76543210] // [________________________76543210] (((((int)in[80 + inPos]) & 255) ) & -1) | // [76543210] // [________________54321098________] (((((int)in[81 + inPos]) & 255) << 8) & -1) | // [76543210] // [________32109876________________] (((((int)in[82 + inPos]) & 255) << 16) & -1) | // [76543210] // [10987654________________________] (((((int)in[83 + inPos]) & 255) << 24) & -1); out[21 + outPos] = // [76543210] // [________________________76543210] (((((int)in[84 + inPos]) & 255) ) & -1) | // [76543210] // [________________54321098________] (((((int)in[85 + inPos]) & 255) << 8) & -1) | // [76543210] // [________32109876________________] (((((int)in[86 + inPos]) & 255) << 16) & -1) | // [76543210] // [10987654________________________] (((((int)in[87 + inPos]) & 255) << 24) & -1); out[22 + outPos] = // [76543210] // [________________________76543210] (((((int)in[88 + inPos]) & 255) ) & -1) | // [76543210] // [________________54321098________] (((((int)in[89 + inPos]) & 255) << 8) & -1) | // [76543210] // [________32109876________________] (((((int)in[90 + inPos]) & 255) << 16) & -1) | // [76543210] // [10987654________________________] (((((int)in[91 + inPos]) & 255) << 24) & -1); out[23 + outPos] = // [76543210] // [________________________76543210] (((((int)in[92 + inPos]) & 255) ) & -1) | // [76543210] // [________________54321098________] (((((int)in[93 + inPos]) & 255) << 8) & -1) | // [76543210] // [________32109876________________] (((((int)in[94 + inPos]) & 255) << 16) & -1) | // [76543210] // [10987654________________________] (((((int)in[95 + inPos]) & 255) << 24) & -1); out[24 + outPos] = // [76543210] // [________________________76543210] (((((int)in[96 + inPos]) & 255) ) & -1) | // [76543210] // [________________54321098________] (((((int)in[97 + inPos]) & 255) << 8) & -1) | // [76543210] // [________32109876________________] (((((int)in[98 + inPos]) & 255) << 16) & -1) | // [76543210] // [10987654________________________] (((((int)in[99 + inPos]) & 255) << 24) & -1); out[25 + outPos] = // [76543210] // [________________________76543210] (((((int)in[100 + inPos]) & 255) ) & -1) | // [76543210] // [________________54321098________] (((((int)in[101 + inPos]) & 255) << 8) & -1) | // [76543210] // [________32109876________________] (((((int)in[102 + inPos]) & 255) << 16) & -1) | // [76543210] // [10987654________________________] (((((int)in[103 + inPos]) & 255) << 24) & -1); out[26 + outPos] = // [76543210] // [________________________76543210] (((((int)in[104 + inPos]) & 255) ) & -1) | // [76543210] // [________________54321098________] (((((int)in[105 + inPos]) & 255) << 8) & -1) | // [76543210] // [________32109876________________] (((((int)in[106 + inPos]) & 255) << 16) & -1) | // [76543210] // [10987654________________________] (((((int)in[107 + inPos]) & 255) << 24) & -1); out[27 + outPos] = // [76543210] // [________________________76543210] (((((int)in[108 + inPos]) & 255) ) & -1) | // [76543210] // [________________54321098________] (((((int)in[109 + inPos]) & 255) << 8) & -1) | // [76543210] // [________32109876________________] (((((int)in[110 + inPos]) & 255) << 16) & -1) | // [76543210] // [10987654________________________] (((((int)in[111 + inPos]) & 255) << 24) & -1); out[28 + outPos] = // [76543210] // [________________________76543210] (((((int)in[112 + inPos]) & 255) ) & -1) | // [76543210] // [________________54321098________] (((((int)in[113 + inPos]) & 255) << 8) & -1) | // [76543210] // [________32109876________________] (((((int)in[114 + inPos]) & 255) << 16) & -1) | // [76543210] // [10987654________________________] (((((int)in[115 + inPos]) & 255) << 24) & -1); out[29 + outPos] = // [76543210] // [________________________76543210] (((((int)in[116 + inPos]) & 255) ) & -1) | // [76543210] // [________________54321098________] (((((int)in[117 + inPos]) & 255) << 8) & -1) | // [76543210] // [________32109876________________] (((((int)in[118 + inPos]) & 255) << 16) & -1) | // [76543210] // [10987654________________________] (((((int)in[119 + inPos]) & 255) << 24) & -1); out[30 + outPos] = // [76543210] // [________________________76543210] (((((int)in[120 + inPos]) & 255) ) & -1) | // [76543210] // [________________54321098________] (((((int)in[121 + inPos]) & 255) << 8) & -1) | // [76543210] // [________32109876________________] (((((int)in[122 + inPos]) & 255) << 16) & -1) | // [76543210] // [10987654________________________] (((((int)in[123 + inPos]) & 255) << 24) & -1); out[31 + outPos] = // [76543210] // [________________________76543210] (((((int)in[124 + inPos]) & 255) ) & -1) | // [76543210] // [________________54321098________] (((((int)in[125 + inPos]) & 255) << 8) & -1) | // [76543210] // [________32109876________________] (((((int)in[126 + inPos]) & 255) << 16) & -1) | // [76543210] // [10987654________________________] (((((int)in[127 + inPos]) & 255) << 24) & -1); } } }