me.lemire.integercompression.BitPacking Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of JavaFastPFOR Show documentation
Show all versions of JavaFastPFOR Show documentation
It is a library to compress and uncompress arrays of integers
very fast. The assumption is that most (but not all) values in
your array use less than 32 bits.
/**
* This code is released under the
* Apache License Version 2.0 http://www.apache.org/licenses/.
*
* (c) Daniel Lemire, http://lemire.me/en/
*/
package me.lemire.integercompression;
import java.util.Arrays;
/**
* Bitpacking routines
*
* For details, please see
*
* Daniel Lemire and Leonid Boytsov, Decoding billions of integers per second
* through vectorization Software: Practice & Experience
* http://onlinelibrary.wiley.com/doi/10.1002/spe.2203/abstract
* http://arxiv.org/abs/1209.2137
*
*
* @author Daniel Lemire
*
*/
public final class BitPacking {
/**
* Pack 32 integers
*
* @param in
* source array
* @param inpos
* position in source array
* @param out
* output array
* @param outpos
* position in output array
* @param bit
* number of bits to use per integer
*/
public static void fastpack(final int[] in, final int inpos,
final int[] out, final int outpos, final int bit) {
switch (bit) {
case 0:
fastpack0(in, inpos, out, outpos);
break;
case 1:
fastpack1(in, inpos, out, outpos);
break;
case 2:
fastpack2(in, inpos, out, outpos);
break;
case 3:
fastpack3(in, inpos, out, outpos);
break;
case 4:
fastpack4(in, inpos, out, outpos);
break;
case 5:
fastpack5(in, inpos, out, outpos);
break;
case 6:
fastpack6(in, inpos, out, outpos);
break;
case 7:
fastpack7(in, inpos, out, outpos);
break;
case 8:
fastpack8(in, inpos, out, outpos);
break;
case 9:
fastpack9(in, inpos, out, outpos);
break;
case 10:
fastpack10(in, inpos, out, outpos);
break;
case 11:
fastpack11(in, inpos, out, outpos);
break;
case 12:
fastpack12(in, inpos, out, outpos);
break;
case 13:
fastpack13(in, inpos, out, outpos);
break;
case 14:
fastpack14(in, inpos, out, outpos);
break;
case 15:
fastpack15(in, inpos, out, outpos);
break;
case 16:
fastpack16(in, inpos, out, outpos);
break;
case 17:
fastpack17(in, inpos, out, outpos);
break;
case 18:
fastpack18(in, inpos, out, outpos);
break;
case 19:
fastpack19(in, inpos, out, outpos);
break;
case 20:
fastpack20(in, inpos, out, outpos);
break;
case 21:
fastpack21(in, inpos, out, outpos);
break;
case 22:
fastpack22(in, inpos, out, outpos);
break;
case 23:
fastpack23(in, inpos, out, outpos);
break;
case 24:
fastpack24(in, inpos, out, outpos);
break;
case 25:
fastpack25(in, inpos, out, outpos);
break;
case 26:
fastpack26(in, inpos, out, outpos);
break;
case 27:
fastpack27(in, inpos, out, outpos);
break;
case 28:
fastpack28(in, inpos, out, outpos);
break;
case 29:
fastpack29(in, inpos, out, outpos);
break;
case 30:
fastpack30(in, inpos, out, outpos);
break;
case 31:
fastpack31(in, inpos, out, outpos);
break;
case 32:
fastpack32(in, inpos, out, outpos);
break;
default:
throw new IllegalArgumentException(
"Unsupported bit width.");
}
}
protected static void fastpack0(final int[] in, int inpos,
final int[] out, int outpos) {
// nothing
}
protected static void fastpack1(final int[] in, int inpos,
final int[] out, int outpos) {
out[0 + outpos] = (in[0 + inpos] & 1)
| ((in[1 + inpos] & 1) << 1)
| ((in[2 + inpos] & 1) << 2)
| ((in[3 + inpos] & 1) << 3)
| ((in[4 + inpos] & 1) << 4)
| ((in[5 + inpos] & 1) << 5)
| ((in[6 + inpos] & 1) << 6)
| ((in[7 + inpos] & 1) << 7)
| ((in[8 + inpos] & 1) << 8)
| ((in[9 + inpos] & 1) << 9)
| ((in[10 + inpos] & 1) << 10)
| ((in[11 + inpos] & 1) << 11)
| ((in[12 + inpos] & 1) << 12)
| ((in[13 + inpos] & 1) << 13)
| ((in[14 + inpos] & 1) << 14)
| ((in[15 + inpos] & 1) << 15)
| ((in[16 + inpos] & 1) << 16)
| ((in[17 + inpos] & 1) << 17)
| ((in[18 + inpos] & 1) << 18)
| ((in[19 + inpos] & 1) << 19)
| ((in[20 + inpos] & 1) << 20)
| ((in[21 + inpos] & 1) << 21)
| ((in[22 + inpos] & 1) << 22)
| ((in[23 + inpos] & 1) << 23)
| ((in[24 + inpos] & 1) << 24)
| ((in[25 + inpos] & 1) << 25)
| ((in[26 + inpos] & 1) << 26)
| ((in[27 + inpos] & 1) << 27)
| ((in[28 + inpos] & 1) << 28)
| ((in[29 + inpos] & 1) << 29)
| ((in[30 + inpos] & 1) << 30)
| ((in[31 + inpos]) << 31);
}
protected static void fastpack10(final int[] in, int inpos,
final int[] out, int outpos) {
out[0 + outpos] = (in[0 + inpos] & 1023)
| ((in[1 + inpos] & 1023) << 10)
| ((in[2 + inpos] & 1023) << 20)
| ((in[3 + inpos]) << 30);
out[1 + outpos] = ((in[3 + inpos] & 1023) >>> (10 - 8))
| ((in[4 + inpos] & 1023) << 8)
| ((in[5 + inpos] & 1023) << 18)
| ((in[6 + inpos]) << 28);
out[2 + outpos] = ((in[6 + inpos] & 1023) >>> (10 - 6))
| ((in[7 + inpos] & 1023) << 6)
| ((in[8 + inpos] & 1023) << 16)
| ((in[9 + inpos]) << 26);
out[3 + outpos] = ((in[9 + inpos] & 1023) >>> (10 - 4))
| ((in[10 + inpos] & 1023) << 4)
| ((in[11 + inpos] & 1023) << 14)
| ((in[12 + inpos]) << 24);
out[4 + outpos] = ((in[12 + inpos] & 1023) >>> (10 - 2))
| ((in[13 + inpos] & 1023) << 2)
| ((in[14 + inpos] & 1023) << 12)
| ((in[15 + inpos]) << 22);
out[5 + outpos] = (in[16 + inpos] & 1023)
| ((in[17 + inpos] & 1023) << 10)
| ((in[18 + inpos] & 1023) << 20)
| ((in[19 + inpos]) << 30);
out[6 + outpos] = ((in[19 + inpos] & 1023) >>> (10 - 8))
| ((in[20 + inpos] & 1023) << 8)
| ((in[21 + inpos] & 1023) << 18)
| ((in[22 + inpos]) << 28);
out[7 + outpos] = ((in[22 + inpos] & 1023) >>> (10 - 6))
| ((in[23 + inpos] & 1023) << 6)
| ((in[24 + inpos] & 1023) << 16)
| ((in[25 + inpos]) << 26);
out[8 + outpos] = ((in[25 + inpos] & 1023) >>> (10 - 4))
| ((in[26 + inpos] & 1023) << 4)
| ((in[27 + inpos] & 1023) << 14)
| ((in[28 + inpos]) << 24);
out[9 + outpos] = ((in[28 + inpos] & 1023) >>> (10 - 2))
| ((in[29 + inpos] & 1023) << 2)
| ((in[30 + inpos] & 1023) << 12)
| ((in[31 + inpos]) << 22);
}
protected static void fastpack11(final int[] in, int inpos,
final int[] out, int outpos) {
out[0 + outpos] = (in[0 + inpos] & 2047)
| ((in[1 + inpos] & 2047) << 11)
| ((in[2 + inpos]) << 22);
out[1 + outpos] = ((in[2 + inpos] & 2047) >>> (11 - 1))
| ((in[3 + inpos] & 2047) << 1)
| ((in[4 + inpos] & 2047) << 12)
| ((in[5 + inpos]) << 23);
out[2 + outpos] = ((in[5 + inpos] & 2047) >>> (11 - 2))
| ((in[6 + inpos] & 2047) << 2)
| ((in[7 + inpos] & 2047) << 13)
| ((in[8 + inpos]) << 24);
out[3 + outpos] = ((in[8 + inpos] & 2047) >>> (11 - 3))
| ((in[9 + inpos] & 2047) << 3)
| ((in[10 + inpos] & 2047) << 14)
| ((in[11 + inpos]) << 25);
out[4 + outpos] = ((in[11 + inpos] & 2047) >>> (11 - 4))
| ((in[12 + inpos] & 2047) << 4)
| ((in[13 + inpos] & 2047) << 15)
| ((in[14 + inpos]) << 26);
out[5 + outpos] = ((in[14 + inpos] & 2047) >>> (11 - 5))
| ((in[15 + inpos] & 2047) << 5)
| ((in[16 + inpos] & 2047) << 16)
| ((in[17 + inpos]) << 27);
out[6 + outpos] = ((in[17 + inpos] & 2047) >>> (11 - 6))
| ((in[18 + inpos] & 2047) << 6)
| ((in[19 + inpos] & 2047) << 17)
| ((in[20 + inpos]) << 28);
out[7 + outpos] = ((in[20 + inpos] & 2047) >>> (11 - 7))
| ((in[21 + inpos] & 2047) << 7)
| ((in[22 + inpos] & 2047) << 18)
| ((in[23 + inpos]) << 29);
out[8 + outpos] = ((in[23 + inpos] & 2047) >>> (11 - 8))
| ((in[24 + inpos] & 2047) << 8)
| ((in[25 + inpos] & 2047) << 19)
| ((in[26 + inpos]) << 30);
out[9 + outpos] = ((in[26 + inpos] & 2047) >>> (11 - 9))
| ((in[27 + inpos] & 2047) << 9)
| ((in[28 + inpos] & 2047) << 20)
| ((in[29 + inpos]) << 31);
out[10 + outpos] = ((in[29 + inpos] & 2047) >>> (11 - 10))
| ((in[30 + inpos] & 2047) << 10)
| ((in[31 + inpos]) << 21);
}
protected static void fastpack12(final int[] in, int inpos,
final int[] out, int outpos) {
out[0 + outpos] = (in[0 + inpos] & 4095)
| ((in[1 + inpos] & 4095) << 12)
| ((in[2 + inpos]) << 24);
out[1 + outpos] = ((in[2 + inpos] & 4095) >>> (12 - 4))
| ((in[3 + inpos] & 4095) << 4)
| ((in[4 + inpos] & 4095) << 16)
| ((in[5 + inpos]) << 28);
out[2 + outpos] = ((in[5 + inpos] & 4095) >>> (12 - 8))
| ((in[6 + inpos] & 4095) << 8)
| ((in[7 + inpos]) << 20);
out[3 + outpos] = (in[8 + inpos] & 4095)
| ((in[9 + inpos] & 4095) << 12)
| ((in[10 + inpos]) << 24);
out[4 + outpos] = ((in[10 + inpos] & 4095) >>> (12 - 4))
| ((in[11 + inpos] & 4095) << 4)
| ((in[12 + inpos] & 4095) << 16)
| ((in[13 + inpos]) << 28);
out[5 + outpos] = ((in[13 + inpos] & 4095) >>> (12 - 8))
| ((in[14 + inpos] & 4095) << 8)
| ((in[15 + inpos]) << 20);
out[6 + outpos] = (in[16 + inpos] & 4095)
| ((in[17 + inpos] & 4095) << 12)
| ((in[18 + inpos]) << 24);
out[7 + outpos] = ((in[18 + inpos] & 4095) >>> (12 - 4))
| ((in[19 + inpos] & 4095) << 4)
| ((in[20 + inpos] & 4095) << 16)
| ((in[21 + inpos]) << 28);
out[8 + outpos] = ((in[21 + inpos] & 4095) >>> (12 - 8))
| ((in[22 + inpos] & 4095) << 8)
| ((in[23 + inpos]) << 20);
out[9 + outpos] = (in[24 + inpos] & 4095)
| ((in[25 + inpos] & 4095) << 12)
| ((in[26 + inpos]) << 24);
out[10 + outpos] = ((in[26 + inpos] & 4095) >>> (12 - 4))
| ((in[27 + inpos] & 4095) << 4)
| ((in[28 + inpos] & 4095) << 16)
| ((in[29 + inpos]) << 28);
out[11 + outpos] = ((in[29 + inpos] & 4095) >>> (12 - 8))
| ((in[30 + inpos] & 4095) << 8)
| ((in[31 + inpos]) << 20);
}
protected static void fastpack13(final int[] in, int inpos,
final int[] out, int outpos) {
out[0 + outpos] = (in[0 + inpos] & 8191)
| ((in[1 + inpos] & 8191) << 13)
| ((in[2 + inpos]) << 26);
out[1 + outpos] = ((in[2 + inpos] & 8191) >>> (13 - 7))
| ((in[3 + inpos] & 8191) << 7)
| ((in[4 + inpos]) << 20);
out[2 + outpos] = ((in[4 + inpos] & 8191) >>> (13 - 1))
| ((in[5 + inpos] & 8191) << 1)
| ((in[6 + inpos] & 8191) << 14)
| ((in[7 + inpos]) << 27);
out[3 + outpos] = ((in[7 + inpos] & 8191) >>> (13 - 8))
| ((in[8 + inpos] & 8191) << 8)
| ((in[9 + inpos]) << 21);
out[4 + outpos] = ((in[9 + inpos] & 8191) >>> (13 - 2))
| ((in[10 + inpos] & 8191) << 2)
| ((in[11 + inpos] & 8191) << 15)
| ((in[12 + inpos]) << 28);
out[5 + outpos] = ((in[12 + inpos] & 8191) >>> (13 - 9))
| ((in[13 + inpos] & 8191) << 9)
| ((in[14 + inpos]) << 22);
out[6 + outpos] = ((in[14 + inpos] & 8191) >>> (13 - 3))
| ((in[15 + inpos] & 8191) << 3)
| ((in[16 + inpos] & 8191) << 16)
| ((in[17 + inpos]) << 29);
out[7 + outpos] = ((in[17 + inpos] & 8191) >>> (13 - 10))
| ((in[18 + inpos] & 8191) << 10)
| ((in[19 + inpos]) << 23);
out[8 + outpos] = ((in[19 + inpos] & 8191) >>> (13 - 4))
| ((in[20 + inpos] & 8191) << 4)
| ((in[21 + inpos] & 8191) << 17)
| ((in[22 + inpos]) << 30);
out[9 + outpos] = ((in[22 + inpos] & 8191) >>> (13 - 11))
| ((in[23 + inpos] & 8191) << 11)
| ((in[24 + inpos]) << 24);
out[10 + outpos] = ((in[24 + inpos] & 8191) >>> (13 - 5))
| ((in[25 + inpos] & 8191) << 5)
| ((in[26 + inpos] & 8191) << 18)
| ((in[27 + inpos]) << 31);
out[11 + outpos] = ((in[27 + inpos] & 8191) >>> (13 - 12))
| ((in[28 + inpos] & 8191) << 12)
| ((in[29 + inpos]) << 25);
out[12 + outpos] = ((in[29 + inpos] & 8191) >>> (13 - 6))
| ((in[30 + inpos] & 8191) << 6)
| ((in[31 + inpos]) << 19);
}
protected static void fastpack14(final int[] in, int inpos,
final int[] out, int outpos) {
out[0 + outpos] = (in[0 + inpos] & 16383)
| ((in[1 + inpos] & 16383) << 14)
| ((in[2 + inpos]) << 28);
out[1 + outpos] = ((in[2 + inpos] & 16383) >>> (14 - 10))
| ((in[3 + inpos] & 16383) << 10)
| ((in[4 + inpos]) << 24);
out[2 + outpos] = ((in[4 + inpos] & 16383) >>> (14 - 6))
| ((in[5 + inpos] & 16383) << 6)
| ((in[6 + inpos]) << 20);
out[3 + outpos] = ((in[6 + inpos] & 16383) >>> (14 - 2))
| ((in[7 + inpos] & 16383) << 2)
| ((in[8 + inpos] & 16383) << 16)
| ((in[9 + inpos]) << 30);
out[4 + outpos] = ((in[9 + inpos] & 16383) >>> (14 - 12))
| ((in[10 + inpos] & 16383) << 12)
| ((in[11 + inpos]) << 26);
out[5 + outpos] = ((in[11 + inpos] & 16383) >>> (14 - 8))
| ((in[12 + inpos] & 16383) << 8)
| ((in[13 + inpos]) << 22);
out[6 + outpos] = ((in[13 + inpos] & 16383) >>> (14 - 4))
| ((in[14 + inpos] & 16383) << 4)
| ((in[15 + inpos]) << 18);
out[7 + outpos] = (in[16 + inpos] & 16383)
| ((in[17 + inpos] & 16383) << 14)
| ((in[18 + inpos]) << 28);
out[8 + outpos] = ((in[18 + inpos] & 16383) >>> (14 - 10))
| ((in[19 + inpos] & 16383) << 10)
| ((in[20 + inpos]) << 24);
out[9 + outpos] = ((in[20 + inpos] & 16383) >>> (14 - 6))
| ((in[21 + inpos] & 16383) << 6)
| ((in[22 + inpos]) << 20);
out[10 + outpos] = ((in[22 + inpos] & 16383) >>> (14 - 2))
| ((in[23 + inpos] & 16383) << 2)
| ((in[24 + inpos] & 16383) << 16)
| ((in[25 + inpos]) << 30);
out[11 + outpos] = ((in[25 + inpos] & 16383) >>> (14 - 12))
| ((in[26 + inpos] & 16383) << 12)
| ((in[27 + inpos]) << 26);
out[12 + outpos] = ((in[27 + inpos] & 16383) >>> (14 - 8))
| ((in[28 + inpos] & 16383) << 8)
| ((in[29 + inpos]) << 22);
out[13 + outpos] = ((in[29 + inpos] & 16383) >>> (14 - 4))
| ((in[30 + inpos] & 16383) << 4)
| ((in[31 + inpos]) << 18);
}
protected static void fastpack15(final int[] in, int inpos,
final int[] out, int outpos) {
out[0 + outpos] = (in[0 + inpos] & 32767)
| ((in[1 + inpos] & 32767) << 15)
| ((in[2 + inpos]) << 30);
out[1 + outpos] = ((in[2 + inpos] & 32767) >>> (15 - 13))
| ((in[3 + inpos] & 32767) << 13)
| ((in[4 + inpos]) << 28);
out[2 + outpos] = ((in[4 + inpos] & 32767) >>> (15 - 11))
| ((in[5 + inpos] & 32767) << 11)
| ((in[6 + inpos]) << 26);
out[3 + outpos] = ((in[6 + inpos] & 32767) >>> (15 - 9))
| ((in[7 + inpos] & 32767) << 9)
| ((in[8 + inpos]) << 24);
out[4 + outpos] = ((in[8 + inpos] & 32767) >>> (15 - 7))
| ((in[9 + inpos] & 32767) << 7)
| ((in[10 + inpos]) << 22);
out[5 + outpos] = ((in[10 + inpos] & 32767) >>> (15 - 5))
| ((in[11 + inpos] & 32767) << 5)
| ((in[12 + inpos]) << 20);
out[6 + outpos] = ((in[12 + inpos] & 32767) >>> (15 - 3))
| ((in[13 + inpos] & 32767) << 3)
| ((in[14 + inpos]) << 18);
out[7 + outpos] = ((in[14 + inpos] & 32767) >>> (15 - 1))
| ((in[15 + inpos] & 32767) << 1)
| ((in[16 + inpos] & 32767) << 16)
| ((in[17 + inpos]) << 31);
out[8 + outpos] = ((in[17 + inpos] & 32767) >>> (15 - 14))
| ((in[18 + inpos] & 32767) << 14)
| ((in[19 + inpos]) << 29);
out[9 + outpos] = ((in[19 + inpos] & 32767) >>> (15 - 12))
| ((in[20 + inpos] & 32767) << 12)
| ((in[21 + inpos]) << 27);
out[10 + outpos] = ((in[21 + inpos] & 32767) >>> (15 - 10))
| ((in[22 + inpos] & 32767) << 10)
| ((in[23 + inpos]) << 25);
out[11 + outpos] = ((in[23 + inpos] & 32767) >>> (15 - 8))
| ((in[24 + inpos] & 32767) << 8)
| ((in[25 + inpos]) << 23);
out[12 + outpos] = ((in[25 + inpos] & 32767) >>> (15 - 6))
| ((in[26 + inpos] & 32767) << 6)
| ((in[27 + inpos]) << 21);
out[13 + outpos] = ((in[27 + inpos] & 32767) >>> (15 - 4))
| ((in[28 + inpos] & 32767) << 4)
| ((in[29 + inpos]) << 19);
out[14 + outpos] = ((in[29 + inpos] & 32767) >>> (15 - 2))
| ((in[30 + inpos] & 32767) << 2)
| ((in[31 + inpos]) << 17);
}
protected static void fastpack16(final int[] in, int inpos,
final int[] out, int outpos) {
out[0 + outpos] = (in[0 + inpos] & 65535)
| ((in[1 + inpos]) << 16);
out[1 + outpos] = (in[2 + inpos] & 65535)
| ((in[3 + inpos]) << 16);
out[2 + outpos] = (in[4 + inpos] & 65535)
| ((in[5 + inpos]) << 16);
out[3 + outpos] = (in[6 + inpos] & 65535)
| ((in[7 + inpos]) << 16);
out[4 + outpos] = (in[8 + inpos] & 65535)
| ((in[9 + inpos]) << 16);
out[5 + outpos] = (in[10 + inpos] & 65535)
| ((in[11 + inpos]) << 16);
out[6 + outpos] = (in[12 + inpos] & 65535)
| ((in[13 + inpos]) << 16);
out[7 + outpos] = (in[14 + inpos] & 65535)
| ((in[15 + inpos]) << 16);
out[8 + outpos] = (in[16 + inpos] & 65535)
| ((in[17 + inpos]) << 16);
out[9 + outpos] = (in[18 + inpos] & 65535)
| ((in[19 + inpos]) << 16);
out[10 + outpos] = (in[20 + inpos] & 65535)
| ((in[21 + inpos]) << 16);
out[11 + outpos] = (in[22 + inpos] & 65535)
| ((in[23 + inpos]) << 16);
out[12 + outpos] = (in[24 + inpos] & 65535)
| ((in[25 + inpos]) << 16);
out[13 + outpos] = (in[26 + inpos] & 65535)
| ((in[27 + inpos]) << 16);
out[14 + outpos] = (in[28 + inpos] & 65535)
| ((in[29 + inpos]) << 16);
out[15 + outpos] = (in[30 + inpos] & 65535)
| ((in[31 + inpos]) << 16);
}
protected static void fastpack17(final int[] in, int inpos,
final int[] out, int outpos) {
out[0 + outpos] = (in[0 + inpos] & 131071)
| ((in[1 + inpos]) << 17);
out[1 + outpos] = ((in[1 + inpos] & 131071) >>> (17 - 2))
| ((in[2 + inpos] & 131071) << 2)
| ((in[3 + inpos]) << 19);
out[2 + outpos] = ((in[3 + inpos] & 131071) >>> (17 - 4))
| ((in[4 + inpos] & 131071) << 4)
| ((in[5 + inpos]) << 21);
out[3 + outpos] = ((in[5 + inpos] & 131071) >>> (17 - 6))
| ((in[6 + inpos] & 131071) << 6)
| ((in[7 + inpos]) << 23);
out[4 + outpos] = ((in[7 + inpos] & 131071) >>> (17 - 8))
| ((in[8 + inpos] & 131071) << 8)
| ((in[9 + inpos]) << 25);
out[5 + outpos] = ((in[9 + inpos] & 131071) >>> (17 - 10))
| ((in[10 + inpos] & 131071) << 10)
| ((in[11 + inpos]) << 27);
out[6 + outpos] = ((in[11 + inpos] & 131071) >>> (17 - 12))
| ((in[12 + inpos] & 131071) << 12)
| ((in[13 + inpos]) << 29);
out[7 + outpos] = ((in[13 + inpos] & 131071) >>> (17 - 14))
| ((in[14 + inpos] & 131071) << 14)
| ((in[15 + inpos]) << 31);
out[8 + outpos] = ((in[15 + inpos] & 131071) >>> (17 - 16))
| ((in[16 + inpos]) << 16);
out[9 + outpos] = ((in[16 + inpos] & 131071) >>> (17 - 1))
| ((in[17 + inpos] & 131071) << 1)
| ((in[18 + inpos]) << 18);
out[10 + outpos] = ((in[18 + inpos] & 131071) >>> (17 - 3))
| ((in[19 + inpos] & 131071) << 3)
| ((in[20 + inpos]) << 20);
out[11 + outpos] = ((in[20 + inpos] & 131071) >>> (17 - 5))
| ((in[21 + inpos] & 131071) << 5)
| ((in[22 + inpos]) << 22);
out[12 + outpos] = ((in[22 + inpos] & 131071) >>> (17 - 7))
| ((in[23 + inpos] & 131071) << 7)
| ((in[24 + inpos]) << 24);
out[13 + outpos] = ((in[24 + inpos] & 131071) >>> (17 - 9))
| ((in[25 + inpos] & 131071) << 9)
| ((in[26 + inpos]) << 26);
out[14 + outpos] = ((in[26 + inpos] & 131071) >>> (17 - 11))
| ((in[27 + inpos] & 131071) << 11)
| ((in[28 + inpos]) << 28);
out[15 + outpos] = ((in[28 + inpos] & 131071) >>> (17 - 13))
| ((in[29 + inpos] & 131071) << 13)
| ((in[30 + inpos]) << 30);
out[16 + outpos] = ((in[30 + inpos] & 131071) >>> (17 - 15))
| ((in[31 + inpos]) << 15);
}
protected static void fastpack18(final int[] in, int inpos,
final int[] out, int outpos) {
out[0 + outpos] = (in[0 + inpos] & 262143)
| ((in[1 + inpos]) << 18);
out[1 + outpos] = ((in[1 + inpos] & 262143) >>> (18 - 4))
| ((in[2 + inpos] & 262143) << 4)
| ((in[3 + inpos]) << 22);
out[2 + outpos] = ((in[3 + inpos] & 262143) >>> (18 - 8))
| ((in[4 + inpos] & 262143) << 8)
| ((in[5 + inpos]) << 26);
out[3 + outpos] = ((in[5 + inpos] & 262143) >>> (18 - 12))
| ((in[6 + inpos] & 262143) << 12)
| ((in[7 + inpos]) << 30);
out[4 + outpos] = ((in[7 + inpos] & 262143) >>> (18 - 16))
| ((in[8 + inpos]) << 16);
out[5 + outpos] = ((in[8 + inpos] & 262143) >>> (18 - 2))
| ((in[9 + inpos] & 262143) << 2)
| ((in[10 + inpos]) << 20);
out[6 + outpos] = ((in[10 + inpos] & 262143) >>> (18 - 6))
| ((in[11 + inpos] & 262143) << 6)
| ((in[12 + inpos]) << 24);
out[7 + outpos] = ((in[12 + inpos] & 262143) >>> (18 - 10))
| ((in[13 + inpos] & 262143) << 10)
| ((in[14 + inpos]) << 28);
out[8 + outpos] = ((in[14 + inpos] & 262143) >>> (18 - 14))
| ((in[15 + inpos]) << 14);
out[9 + outpos] = (in[16 + inpos] & 262143)
| ((in[17 + inpos]) << 18);
out[10 + outpos] = ((in[17 + inpos] & 262143) >>> (18 - 4))
| ((in[18 + inpos] & 262143) << 4)
| ((in[19 + inpos]) << 22);
out[11 + outpos] = ((in[19 + inpos] & 262143) >>> (18 - 8))
| ((in[20 + inpos] & 262143) << 8)
| ((in[21 + inpos]) << 26);
out[12 + outpos] = ((in[21 + inpos] & 262143) >>> (18 - 12))
| ((in[22 + inpos] & 262143) << 12)
| ((in[23 + inpos]) << 30);
out[13 + outpos] = ((in[23 + inpos] & 262143) >>> (18 - 16))
| ((in[24 + inpos]) << 16);
out[14 + outpos] = ((in[24 + inpos] & 262143) >>> (18 - 2))
| ((in[25 + inpos] & 262143) << 2)
| ((in[26 + inpos]) << 20);
out[15 + outpos] = ((in[26 + inpos] & 262143) >>> (18 - 6))
| ((in[27 + inpos] & 262143) << 6)
| ((in[28 + inpos]) << 24);
out[16 + outpos] = ((in[28 + inpos] & 262143) >>> (18 - 10))
| ((in[29 + inpos] & 262143) << 10)
| ((in[30 + inpos]) << 28);
out[17 + outpos] = ((in[30 + inpos] & 262143) >>> (18 - 14))
| ((in[31 + inpos]) << 14);
}
protected static void fastpack19(final int[] in, int inpos,
final int[] out, int outpos) {
out[0 + outpos] = (in[0 + inpos] & 524287)
| ((in[1 + inpos]) << 19);
out[1 + outpos] = ((in[1 + inpos] & 524287) >>> (19 - 6))
| ((in[2 + inpos] & 524287) << 6)
| ((in[3 + inpos]) << 25);
out[2 + outpos] = ((in[3 + inpos] & 524287) >>> (19 - 12))
| ((in[4 + inpos] & 524287) << 12)
| ((in[5 + inpos]) << 31);
out[3 + outpos] = ((in[5 + inpos] & 524287) >>> (19 - 18))
| ((in[6 + inpos]) << 18);
out[4 + outpos] = ((in[6 + inpos] & 524287) >>> (19 - 5))
| ((in[7 + inpos] & 524287) << 5)
| ((in[8 + inpos]) << 24);
out[5 + outpos] = ((in[8 + inpos] & 524287) >>> (19 - 11))
| ((in[9 + inpos] & 524287) << 11)
| ((in[10 + inpos]) << 30);
out[6 + outpos] = ((in[10 + inpos] & 524287) >>> (19 - 17))
| ((in[11 + inpos]) << 17);
out[7 + outpos] = ((in[11 + inpos] & 524287) >>> (19 - 4))
| ((in[12 + inpos] & 524287) << 4)
| ((in[13 + inpos]) << 23);
out[8 + outpos] = ((in[13 + inpos] & 524287) >>> (19 - 10))
| ((in[14 + inpos] & 524287) << 10)
| ((in[15 + inpos]) << 29);
out[9 + outpos] = ((in[15 + inpos] & 524287) >>> (19 - 16))
| ((in[16 + inpos]) << 16);
out[10 + outpos] = ((in[16 + inpos] & 524287) >>> (19 - 3))
| ((in[17 + inpos] & 524287) << 3)
| ((in[18 + inpos]) << 22);
out[11 + outpos] = ((in[18 + inpos] & 524287) >>> (19 - 9))
| ((in[19 + inpos] & 524287) << 9)
| ((in[20 + inpos]) << 28);
out[12 + outpos] = ((in[20 + inpos] & 524287) >>> (19 - 15))
| ((in[21 + inpos]) << 15);
out[13 + outpos] = ((in[21 + inpos] & 524287) >>> (19 - 2))
| ((in[22 + inpos] & 524287) << 2)
| ((in[23 + inpos]) << 21);
out[14 + outpos] = ((in[23 + inpos] & 524287) >>> (19 - 8))
| ((in[24 + inpos] & 524287) << 8)
| ((in[25 + inpos]) << 27);
out[15 + outpos] = ((in[25 + inpos] & 524287) >>> (19 - 14))
| ((in[26 + inpos]) << 14);
out[16 + outpos] = ((in[26 + inpos] & 524287) >>> (19 - 1))
| ((in[27 + inpos] & 524287) << 1)
| ((in[28 + inpos]) << 20);
out[17 + outpos] = ((in[28 + inpos] & 524287) >>> (19 - 7))
| ((in[29 + inpos] & 524287) << 7)
| ((in[30 + inpos]) << 26);
out[18 + outpos] = ((in[30 + inpos] & 524287) >>> (19 - 13))
| ((in[31 + inpos]) << 13);
}
protected static void fastpack2(final int[] in, int inpos,
final int[] out, int outpos) {
out[0 + outpos] = (in[0 + inpos] & 3)
| ((in[1 + inpos] & 3) << 2)
| ((in[2 + inpos] & 3) << 4)
| ((in[3 + inpos] & 3) << 6)
| ((in[4 + inpos] & 3) << 8)
| ((in[5 + inpos] & 3) << 10)
| ((in[6 + inpos] & 3) << 12)
| ((in[7 + inpos] & 3) << 14)
| ((in[8 + inpos] & 3) << 16)
| ((in[9 + inpos] & 3) << 18)
| ((in[10 + inpos] & 3) << 20)
| ((in[11 + inpos] & 3) << 22)
| ((in[12 + inpos] & 3) << 24)
| ((in[13 + inpos] & 3) << 26)
| ((in[14 + inpos] & 3) << 28)
| ((in[15 + inpos]) << 30);
out[1 + outpos] = (in[16 + inpos] & 3)
| ((in[17 + inpos] & 3) << 2)
| ((in[18 + inpos] & 3) << 4)
| ((in[19 + inpos] & 3) << 6)
| ((in[20 + inpos] & 3) << 8)
| ((in[21 + inpos] & 3) << 10)
| ((in[22 + inpos] & 3) << 12)
| ((in[23 + inpos] & 3) << 14)
| ((in[24 + inpos] & 3) << 16)
| ((in[25 + inpos] & 3) << 18)
| ((in[26 + inpos] & 3) << 20)
| ((in[27 + inpos] & 3) << 22)
| ((in[28 + inpos] & 3) << 24)
| ((in[29 + inpos] & 3) << 26)
| ((in[30 + inpos] & 3) << 28)
| ((in[31 + inpos]) << 30);
}
protected static void fastpack20(final int[] in, int inpos,
final int[] out, int outpos) {
out[0 + outpos] = (in[0 + inpos] & 1048575)
| ((in[1 + inpos]) << 20);
out[1 + outpos] = ((in[1 + inpos] & 1048575) >>> (20 - 8))
| ((in[2 + inpos] & 1048575) << 8)
| ((in[3 + inpos]) << 28);
out[2 + outpos] = ((in[3 + inpos] & 1048575) >>> (20 - 16))
| ((in[4 + inpos]) << 16);
out[3 + outpos] = ((in[4 + inpos] & 1048575) >>> (20 - 4))
| ((in[5 + inpos] & 1048575) << 4)
| ((in[6 + inpos]) << 24);
out[4 + outpos] = ((in[6 + inpos] & 1048575) >>> (20 - 12))
| ((in[7 + inpos]) << 12);
out[5 + outpos] = (in[8 + inpos] & 1048575)
| ((in[9 + inpos]) << 20);
out[6 + outpos] = ((in[9 + inpos] & 1048575) >>> (20 - 8))
| ((in[10 + inpos] & 1048575) << 8)
| ((in[11 + inpos]) << 28);
out[7 + outpos] = ((in[11 + inpos] & 1048575) >>> (20 - 16))
| ((in[12 + inpos]) << 16);
out[8 + outpos] = ((in[12 + inpos] & 1048575) >>> (20 - 4))
| ((in[13 + inpos] & 1048575) << 4)
| ((in[14 + inpos]) << 24);
out[9 + outpos] = ((in[14 + inpos] & 1048575) >>> (20 - 12))
| ((in[15 + inpos]) << 12);
out[10 + outpos] = (in[16 + inpos] & 1048575)
| ((in[17 + inpos]) << 20);
out[11 + outpos] = ((in[17 + inpos] & 1048575) >>> (20 - 8))
| ((in[18 + inpos] & 1048575) << 8)
| ((in[19 + inpos]) << 28);
out[12 + outpos] = ((in[19 + inpos] & 1048575) >>> (20 - 16))
| ((in[20 + inpos]) << 16);
out[13 + outpos] = ((in[20 + inpos] & 1048575) >>> (20 - 4))
| ((in[21 + inpos] & 1048575) << 4)
| ((in[22 + inpos]) << 24);
out[14 + outpos] = ((in[22 + inpos] & 1048575) >>> (20 - 12))
| ((in[23 + inpos]) << 12);
out[15 + outpos] = (in[24 + inpos] & 1048575)
| ((in[25 + inpos]) << 20);
out[16 + outpos] = ((in[25 + inpos] & 1048575) >>> (20 - 8))
| ((in[26 + inpos] & 1048575) << 8)
| ((in[27 + inpos]) << 28);
out[17 + outpos] = ((in[27 + inpos] & 1048575) >>> (20 - 16))
| ((in[28 + inpos]) << 16);
out[18 + outpos] = ((in[28 + inpos] & 1048575) >>> (20 - 4))
| ((in[29 + inpos] & 1048575) << 4)
| ((in[30 + inpos]) << 24);
out[19 + outpos] = ((in[30 + inpos] & 1048575) >>> (20 - 12))
| ((in[31 + inpos]) << 12);
}
protected static void fastpack21(final int[] in, int inpos,
final int[] out, int outpos) {
out[0 + outpos] = (in[0 + inpos] & 2097151)
| ((in[1 + inpos]) << 21);
out[1 + outpos] = ((in[1 + inpos] & 2097151) >>> (21 - 10))
| ((in[2 + inpos] & 2097151) << 10)
| ((in[3 + inpos]) << 31);
out[2 + outpos] = ((in[3 + inpos] & 2097151) >>> (21 - 20))
| ((in[4 + inpos]) << 20);
out[3 + outpos] = ((in[4 + inpos] & 2097151) >>> (21 - 9))
| ((in[5 + inpos] & 2097151) << 9)
| ((in[6 + inpos]) << 30);
out[4 + outpos] = ((in[6 + inpos] & 2097151) >>> (21 - 19))
| ((in[7 + inpos]) << 19);
out[5 + outpos] = ((in[7 + inpos] & 2097151) >>> (21 - 8))
| ((in[8 + inpos] & 2097151) << 8)
| ((in[9 + inpos]) << 29);
out[6 + outpos] = ((in[9 + inpos] & 2097151) >>> (21 - 18))
| ((in[10 + inpos]) << 18);
out[7 + outpos] = ((in[10 + inpos] & 2097151) >>> (21 - 7))
| ((in[11 + inpos] & 2097151) << 7)
| ((in[12 + inpos]) << 28);
out[8 + outpos] = ((in[12 + inpos] & 2097151) >>> (21 - 17))
| ((in[13 + inpos]) << 17);
out[9 + outpos] = ((in[13 + inpos] & 2097151) >>> (21 - 6))
| ((in[14 + inpos] & 2097151) << 6)
| ((in[15 + inpos]) << 27);
out[10 + outpos] = ((in[15 + inpos] & 2097151) >>> (21 - 16))
| ((in[16 + inpos]) << 16);
out[11 + outpos] = ((in[16 + inpos] & 2097151) >>> (21 - 5))
| ((in[17 + inpos] & 2097151) << 5)
| ((in[18 + inpos]) << 26);
out[12 + outpos] = ((in[18 + inpos] & 2097151) >>> (21 - 15))
| ((in[19 + inpos]) << 15);
out[13 + outpos] = ((in[19 + inpos] & 2097151) >>> (21 - 4))
| ((in[20 + inpos] & 2097151) << 4)
| ((in[21 + inpos]) << 25);
out[14 + outpos] = ((in[21 + inpos] & 2097151) >>> (21 - 14))
| ((in[22 + inpos]) << 14);
out[15 + outpos] = ((in[22 + inpos] & 2097151) >>> (21 - 3))
| ((in[23 + inpos] & 2097151) << 3)
| ((in[24 + inpos]) << 24);
out[16 + outpos] = ((in[24 + inpos] & 2097151) >>> (21 - 13))
| ((in[25 + inpos]) << 13);
out[17 + outpos] = ((in[25 + inpos] & 2097151) >>> (21 - 2))
| ((in[26 + inpos] & 2097151) << 2)
| ((in[27 + inpos]) << 23);
out[18 + outpos] = ((in[27 + inpos] & 2097151) >>> (21 - 12))
| ((in[28 + inpos]) << 12);
out[19 + outpos] = ((in[28 + inpos] & 2097151) >>> (21 - 1))
| ((in[29 + inpos] & 2097151) << 1)
| ((in[30 + inpos]) << 22);
out[20 + outpos] = ((in[30 + inpos] & 2097151) >>> (21 - 11))
| ((in[31 + inpos]) << 11);
}
protected static void fastpack22(final int[] in, int inpos,
final int[] out, int outpos) {
out[0 + outpos] = (in[0 + inpos] & 4194303)
| ((in[1 + inpos]) << 22);
out[1 + outpos] = ((in[1 + inpos] & 4194303) >>> (22 - 12))
| ((in[2 + inpos]) << 12);
out[2 + outpos] = ((in[2 + inpos] & 4194303) >>> (22 - 2))
| ((in[3 + inpos] & 4194303) << 2)
| ((in[4 + inpos]) << 24);
out[3 + outpos] = ((in[4 + inpos] & 4194303) >>> (22 - 14))
| ((in[5 + inpos]) << 14);
out[4 + outpos] = ((in[5 + inpos] & 4194303) >>> (22 - 4))
| ((in[6 + inpos] & 4194303) << 4)
| ((in[7 + inpos]) << 26);
out[5 + outpos] = ((in[7 + inpos] & 4194303) >>> (22 - 16))
| ((in[8 + inpos]) << 16);
out[6 + outpos] = ((in[8 + inpos] & 4194303) >>> (22 - 6))
| ((in[9 + inpos] & 4194303) << 6)
| ((in[10 + inpos]) << 28);
out[7 + outpos] = ((in[10 + inpos] & 4194303) >>> (22 - 18))
| ((in[11 + inpos]) << 18);
out[8 + outpos] = ((in[11 + inpos] & 4194303) >>> (22 - 8))
| ((in[12 + inpos] & 4194303) << 8)
| ((in[13 + inpos]) << 30);
out[9 + outpos] = ((in[13 + inpos] & 4194303) >>> (22 - 20))
| ((in[14 + inpos]) << 20);
out[10 + outpos] = ((in[14 + inpos] & 4194303) >>> (22 - 10))
| ((in[15 + inpos]) << 10);
out[11 + outpos] = (in[16 + inpos] & 4194303)
| ((in[17 + inpos]) << 22);
out[12 + outpos] = ((in[17 + inpos] & 4194303) >>> (22 - 12))
| ((in[18 + inpos]) << 12);
out[13 + outpos] = ((in[18 + inpos] & 4194303) >>> (22 - 2))
| ((in[19 + inpos] & 4194303) << 2)
| ((in[20 + inpos]) << 24);
out[14 + outpos] = ((in[20 + inpos] & 4194303) >>> (22 - 14))
| ((in[21 + inpos]) << 14);
out[15 + outpos] = ((in[21 + inpos] & 4194303) >>> (22 - 4))
| ((in[22 + inpos] & 4194303) << 4)
| ((in[23 + inpos]) << 26);
out[16 + outpos] = ((in[23 + inpos] & 4194303) >>> (22 - 16))
| ((in[24 + inpos]) << 16);
out[17 + outpos] = ((in[24 + inpos] & 4194303) >>> (22 - 6))
| ((in[25 + inpos] & 4194303) << 6)
| ((in[26 + inpos]) << 28);
out[18 + outpos] = ((in[26 + inpos] & 4194303) >>> (22 - 18))
| ((in[27 + inpos]) << 18);
out[19 + outpos] = ((in[27 + inpos] & 4194303) >>> (22 - 8))
| ((in[28 + inpos] & 4194303) << 8)
| ((in[29 + inpos]) << 30);
out[20 + outpos] = ((in[29 + inpos] & 4194303) >>> (22 - 20))
| ((in[30 + inpos]) << 20);
out[21 + outpos] = ((in[30 + inpos] & 4194303) >>> (22 - 10))
| ((in[31 + inpos]) << 10);
}
protected static void fastpack23(final int[] in, int inpos,
final int[] out, int outpos) {
out[0 + outpos] = (in[0 + inpos] & 8388607)
| ((in[1 + inpos]) << 23);
out[1 + outpos] = ((in[1 + inpos] & 8388607) >>> (23 - 14))
| ((in[2 + inpos]) << 14);
out[2 + outpos] = ((in[2 + inpos] & 8388607) >>> (23 - 5))
| ((in[3 + inpos] & 8388607) << 5)
| ((in[4 + inpos]) << 28);
out[3 + outpos] = ((in[4 + inpos] & 8388607) >>> (23 - 19))
| ((in[5 + inpos]) << 19);
out[4 + outpos] = ((in[5 + inpos] & 8388607) >>> (23 - 10))
| ((in[6 + inpos]) << 10);
out[5 + outpos] = ((in[6 + inpos] & 8388607) >>> (23 - 1))
| ((in[7 + inpos] & 8388607) << 1)
| ((in[8 + inpos]) << 24);
out[6 + outpos] = ((in[8 + inpos] & 8388607) >>> (23 - 15))
| ((in[9 + inpos]) << 15);
out[7 + outpos] = ((in[9 + inpos] & 8388607) >>> (23 - 6))
| ((in[10 + inpos] & 8388607) << 6)
| ((in[11 + inpos]) << 29);
out[8 + outpos] = ((in[11 + inpos] & 8388607) >>> (23 - 20))
| ((in[12 + inpos]) << 20);
out[9 + outpos] = ((in[12 + inpos] & 8388607) >>> (23 - 11))
| ((in[13 + inpos]) << 11);
out[10 + outpos] = ((in[13 + inpos] & 8388607) >>> (23 - 2))
| ((in[14 + inpos] & 8388607) << 2)
| ((in[15 + inpos]) << 25);
out[11 + outpos] = ((in[15 + inpos] & 8388607) >>> (23 - 16))
| ((in[16 + inpos]) << 16);
out[12 + outpos] = ((in[16 + inpos] & 8388607) >>> (23 - 7))
| ((in[17 + inpos] & 8388607) << 7)
| ((in[18 + inpos]) << 30);
out[13 + outpos] = ((in[18 + inpos] & 8388607) >>> (23 - 21))
| ((in[19 + inpos]) << 21);
out[14 + outpos] = ((in[19 + inpos] & 8388607) >>> (23 - 12))
| ((in[20 + inpos]) << 12);
out[15 + outpos] = ((in[20 + inpos] & 8388607) >>> (23 - 3))
| ((in[21 + inpos] & 8388607) << 3)
| ((in[22 + inpos]) << 26);
out[16 + outpos] = ((in[22 + inpos] & 8388607) >>> (23 - 17))
| ((in[23 + inpos]) << 17);
out[17 + outpos] = ((in[23 + inpos] & 8388607) >>> (23 - 8))
| ((in[24 + inpos] & 8388607) << 8)
| ((in[25 + inpos]) << 31);
out[18 + outpos] = ((in[25 + inpos] & 8388607) >>> (23 - 22))
| ((in[26 + inpos]) << 22);
out[19 + outpos] = ((in[26 + inpos] & 8388607) >>> (23 - 13))
| ((in[27 + inpos]) << 13);
out[20 + outpos] = ((in[27 + inpos] & 8388607) >>> (23 - 4))
| ((in[28 + inpos] & 8388607) << 4)
| ((in[29 + inpos]) << 27);
out[21 + outpos] = ((in[29 + inpos] & 8388607) >>> (23 - 18))
| ((in[30 + inpos]) << 18);
out[22 + outpos] = ((in[30 + inpos] & 8388607) >>> (23 - 9))
| ((in[31 + inpos]) << 9);
}
protected static void fastpack24(final int[] in, int inpos,
final int[] out, int outpos) {
out[0 + outpos] = (in[0 + inpos] & 16777215)
| ((in[1 + inpos]) << 24);
out[1 + outpos] = ((in[1 + inpos] & 16777215) >>> (24 - 16))
| ((in[2 + inpos]) << 16);
out[2 + outpos] = ((in[2 + inpos] & 16777215) >>> (24 - 8))
| ((in[3 + inpos]) << 8);
out[3 + outpos] = (in[4 + inpos] & 16777215)
| ((in[5 + inpos]) << 24);
out[4 + outpos] = ((in[5 + inpos] & 16777215) >>> (24 - 16))
| ((in[6 + inpos]) << 16);
out[5 + outpos] = ((in[6 + inpos] & 16777215) >>> (24 - 8))
| ((in[7 + inpos]) << 8);
out[6 + outpos] = (in[8 + inpos] & 16777215)
| ((in[9 + inpos]) << 24);
out[7 + outpos] = ((in[9 + inpos] & 16777215) >>> (24 - 16))
| ((in[10 + inpos]) << 16);
out[8 + outpos] = ((in[10 + inpos] & 16777215) >>> (24 - 8))
| ((in[11 + inpos]) << 8);
out[9 + outpos] = (in[12 + inpos] & 16777215)
| ((in[13 + inpos]) << 24);
out[10 + outpos] = ((in[13 + inpos] & 16777215) >>> (24 - 16))
| ((in[14 + inpos]) << 16);
out[11 + outpos] = ((in[14 + inpos] & 16777215) >>> (24 - 8))
| ((in[15 + inpos]) << 8);
out[12 + outpos] = (in[16 + inpos] & 16777215)
| ((in[17 + inpos]) << 24);
out[13 + outpos] = ((in[17 + inpos] & 16777215) >>> (24 - 16))
| ((in[18 + inpos]) << 16);
out[14 + outpos] = ((in[18 + inpos] & 16777215) >>> (24 - 8))
| ((in[19 + inpos]) << 8);
out[15 + outpos] = (in[20 + inpos] & 16777215)
| ((in[21 + inpos]) << 24);
out[16 + outpos] = ((in[21 + inpos] & 16777215) >>> (24 - 16))
| ((in[22 + inpos]) << 16);
out[17 + outpos] = ((in[22 + inpos] & 16777215) >>> (24 - 8))
| ((in[23 + inpos]) << 8);
out[18 + outpos] = (in[24 + inpos] & 16777215)
| ((in[25 + inpos]) << 24);
out[19 + outpos] = ((in[25 + inpos] & 16777215) >>> (24 - 16))
| ((in[26 + inpos]) << 16);
out[20 + outpos] = ((in[26 + inpos] & 16777215) >>> (24 - 8))
| ((in[27 + inpos]) << 8);
out[21 + outpos] = (in[28 + inpos] & 16777215)
| ((in[29 + inpos]) << 24);
out[22 + outpos] = ((in[29 + inpos] & 16777215) >>> (24 - 16))
| ((in[30 + inpos]) << 16);
out[23 + outpos] = ((in[30 + inpos] & 16777215) >>> (24 - 8))
| ((in[31 + inpos]) << 8);
}
protected static void fastpack25(final int[] in, int inpos,
final int[] out, int outpos) {
out[0 + outpos] = (in[0 + inpos] & 33554431)
| ((in[1 + inpos]) << 25);
out[1 + outpos] = ((in[1 + inpos] & 33554431) >>> (25 - 18))
| ((in[2 + inpos]) << 18);
out[2 + outpos] = ((in[2 + inpos] & 33554431) >>> (25 - 11))
| ((in[3 + inpos]) << 11);
out[3 + outpos] = ((in[3 + inpos] & 33554431) >>> (25 - 4))
| ((in[4 + inpos] & 33554431) << 4)
| ((in[5 + inpos]) << 29);
out[4 + outpos] = ((in[5 + inpos] & 33554431) >>> (25 - 22))
| ((in[6 + inpos]) << 22);
out[5 + outpos] = ((in[6 + inpos] & 33554431) >>> (25 - 15))
| ((in[7 + inpos]) << 15);
out[6 + outpos] = ((in[7 + inpos] & 33554431) >>> (25 - 8))
| ((in[8 + inpos]) << 8);
out[7 + outpos] = ((in[8 + inpos] & 33554431) >>> (25 - 1))
| ((in[9 + inpos] & 33554431) << 1)
| ((in[10 + inpos]) << 26);
out[8 + outpos] = ((in[10 + inpos] & 33554431) >>> (25 - 19))
| ((in[11 + inpos]) << 19);
out[9 + outpos] = ((in[11 + inpos] & 33554431) >>> (25 - 12))
| ((in[12 + inpos]) << 12);
out[10 + outpos] = ((in[12 + inpos] & 33554431) >>> (25 - 5))
| ((in[13 + inpos] & 33554431) << 5)
| ((in[14 + inpos]) << 30);
out[11 + outpos] = ((in[14 + inpos] & 33554431) >>> (25 - 23))
| ((in[15 + inpos]) << 23);
out[12 + outpos] = ((in[15 + inpos] & 33554431) >>> (25 - 16))
| ((in[16 + inpos]) << 16);
out[13 + outpos] = ((in[16 + inpos] & 33554431) >>> (25 - 9))
| ((in[17 + inpos]) << 9);
out[14 + outpos] = ((in[17 + inpos] & 33554431) >>> (25 - 2))
| ((in[18 + inpos] & 33554431) << 2)
| ((in[19 + inpos]) << 27);
out[15 + outpos] = ((in[19 + inpos] & 33554431) >>> (25 - 20))
| ((in[20 + inpos]) << 20);
out[16 + outpos] = ((in[20 + inpos] & 33554431) >>> (25 - 13))
| ((in[21 + inpos]) << 13);
out[17 + outpos] = ((in[21 + inpos] & 33554431) >>> (25 - 6))
| ((in[22 + inpos] & 33554431) << 6)
| ((in[23 + inpos]) << 31);
out[18 + outpos] = ((in[23 + inpos] & 33554431) >>> (25 - 24))
| ((in[24 + inpos]) << 24);
out[19 + outpos] = ((in[24 + inpos] & 33554431) >>> (25 - 17))
| ((in[25 + inpos]) << 17);
out[20 + outpos] = ((in[25 + inpos] & 33554431) >>> (25 - 10))
| ((in[26 + inpos]) << 10);
out[21 + outpos] = ((in[26 + inpos] & 33554431) >>> (25 - 3))
| ((in[27 + inpos] & 33554431) << 3)
| ((in[28 + inpos]) << 28);
out[22 + outpos] = ((in[28 + inpos] & 33554431) >>> (25 - 21))
| ((in[29 + inpos]) << 21);
out[23 + outpos] = ((in[29 + inpos] & 33554431) >>> (25 - 14))
| ((in[30 + inpos]) << 14);
out[24 + outpos] = ((in[30 + inpos] & 33554431) >>> (25 - 7))
| ((in[31 + inpos]) << 7);
}
protected static void fastpack26(final int[] in, int inpos,
final int[] out, int outpos) {
out[0 + outpos] = (in[0 + inpos] & 67108863)
| ((in[1 + inpos]) << 26);
out[1 + outpos] = ((in[1 + inpos] & 67108863) >>> (26 - 20))
| ((in[2 + inpos]) << 20);
out[2 + outpos] = ((in[2 + inpos] & 67108863) >>> (26 - 14))
| ((in[3 + inpos]) << 14);
out[3 + outpos] = ((in[3 + inpos] & 67108863) >>> (26 - 8))
| ((in[4 + inpos]) << 8);
out[4 + outpos] = ((in[4 + inpos] & 67108863) >>> (26 - 2))
| ((in[5 + inpos] & 67108863) << 2)
| ((in[6 + inpos]) << 28);
out[5 + outpos] = ((in[6 + inpos] & 67108863) >>> (26 - 22))
| ((in[7 + inpos]) << 22);
out[6 + outpos] = ((in[7 + inpos] & 67108863) >>> (26 - 16))
| ((in[8 + inpos]) << 16);
out[7 + outpos] = ((in[8 + inpos] & 67108863) >>> (26 - 10))
| ((in[9 + inpos]) << 10);
out[8 + outpos] = ((in[9 + inpos] & 67108863) >>> (26 - 4))
| ((in[10 + inpos] & 67108863) << 4)
| ((in[11 + inpos]) << 30);
out[9 + outpos] = ((in[11 + inpos] & 67108863) >>> (26 - 24))
| ((in[12 + inpos]) << 24);
out[10 + outpos] = ((in[12 + inpos] & 67108863) >>> (26 - 18))
| ((in[13 + inpos]) << 18);
out[11 + outpos] = ((in[13 + inpos] & 67108863) >>> (26 - 12))
| ((in[14 + inpos]) << 12);
out[12 + outpos] = ((in[14 + inpos] & 67108863) >>> (26 - 6))
| ((in[15 + inpos]) << 6);
out[13 + outpos] = (in[16 + inpos] & 67108863)
| ((in[17 + inpos]) << 26);
out[14 + outpos] = ((in[17 + inpos] & 67108863) >>> (26 - 20))
| ((in[18 + inpos]) << 20);
out[15 + outpos] = ((in[18 + inpos] & 67108863) >>> (26 - 14))
| ((in[19 + inpos]) << 14);
out[16 + outpos] = ((in[19 + inpos] & 67108863) >>> (26 - 8))
| ((in[20 + inpos]) << 8);
out[17 + outpos] = ((in[20 + inpos] & 67108863) >>> (26 - 2))
| ((in[21 + inpos] & 67108863) << 2)
| ((in[22 + inpos]) << 28);
out[18 + outpos] = ((in[22 + inpos] & 67108863) >>> (26 - 22))
| ((in[23 + inpos]) << 22);
out[19 + outpos] = ((in[23 + inpos] & 67108863) >>> (26 - 16))
| ((in[24 + inpos]) << 16);
out[20 + outpos] = ((in[24 + inpos] & 67108863) >>> (26 - 10))
| ((in[25 + inpos]) << 10);
out[21 + outpos] = ((in[25 + inpos] & 67108863) >>> (26 - 4))
| ((in[26 + inpos] & 67108863) << 4)
| ((in[27 + inpos]) << 30);
out[22 + outpos] = ((in[27 + inpos] & 67108863) >>> (26 - 24))
| ((in[28 + inpos]) << 24);
out[23 + outpos] = ((in[28 + inpos] & 67108863) >>> (26 - 18))
| ((in[29 + inpos]) << 18);
out[24 + outpos] = ((in[29 + inpos] & 67108863) >>> (26 - 12))
| ((in[30 + inpos]) << 12);
out[25 + outpos] = ((in[30 + inpos] & 67108863) >>> (26 - 6))
| ((in[31 + inpos]) << 6);
}
protected static void fastpack27(final int[] in, int inpos,
final int[] out, int outpos) {
out[0 + outpos] = (in[0 + inpos] & 134217727)
| ((in[1 + inpos]) << 27);
out[1 + outpos] = ((in[1 + inpos] & 134217727) >>> (27 - 22))
| ((in[2 + inpos]) << 22);
out[2 + outpos] = ((in[2 + inpos] & 134217727) >>> (27 - 17))
| ((in[3 + inpos]) << 17);
out[3 + outpos] = ((in[3 + inpos] & 134217727) >>> (27 - 12))
| ((in[4 + inpos]) << 12);
out[4 + outpos] = ((in[4 + inpos] & 134217727) >>> (27 - 7))
| ((in[5 + inpos]) << 7);
out[5 + outpos] = ((in[5 + inpos] & 134217727) >>> (27 - 2))
| ((in[6 + inpos] & 134217727) << 2)
| ((in[7 + inpos]) << 29);
out[6 + outpos] = ((in[7 + inpos] & 134217727) >>> (27 - 24))
| ((in[8 + inpos]) << 24);
out[7 + outpos] = ((in[8 + inpos] & 134217727) >>> (27 - 19))
| ((in[9 + inpos]) << 19);
out[8 + outpos] = ((in[9 + inpos] & 134217727) >>> (27 - 14))
| ((in[10 + inpos]) << 14);
out[9 + outpos] = ((in[10 + inpos] & 134217727) >>> (27 - 9))
| ((in[11 + inpos]) << 9);
out[10 + outpos] = ((in[11 + inpos] & 134217727) >>> (27 - 4))
| ((in[12 + inpos] & 134217727) << 4)
| ((in[13 + inpos]) << 31);
out[11 + outpos] = ((in[13 + inpos] & 134217727) >>> (27 - 26))
| ((in[14 + inpos]) << 26);
out[12 + outpos] = ((in[14 + inpos] & 134217727) >>> (27 - 21))
| ((in[15 + inpos]) << 21);
out[13 + outpos] = ((in[15 + inpos] & 134217727) >>> (27 - 16))
| ((in[16 + inpos]) << 16);
out[14 + outpos] = ((in[16 + inpos] & 134217727) >>> (27 - 11))
| ((in[17 + inpos]) << 11);
out[15 + outpos] = ((in[17 + inpos] & 134217727) >>> (27 - 6))
| ((in[18 + inpos]) << 6);
out[16 + outpos] = ((in[18 + inpos] & 134217727) >>> (27 - 1))
| ((in[19 + inpos] & 134217727) << 1)
| ((in[20 + inpos]) << 28);
out[17 + outpos] = ((in[20 + inpos] & 134217727) >>> (27 - 23))
| ((in[21 + inpos]) << 23);
out[18 + outpos] = ((in[21 + inpos] & 134217727) >>> (27 - 18))
| ((in[22 + inpos]) << 18);
out[19 + outpos] = ((in[22 + inpos] & 134217727) >>> (27 - 13))
| ((in[23 + inpos]) << 13);
out[20 + outpos] = ((in[23 + inpos] & 134217727) >>> (27 - 8))
| ((in[24 + inpos]) << 8);
out[21 + outpos] = ((in[24 + inpos] & 134217727) >>> (27 - 3))
| ((in[25 + inpos] & 134217727) << 3)
| ((in[26 + inpos]) << 30);
out[22 + outpos] = ((in[26 + inpos] & 134217727) >>> (27 - 25))
| ((in[27 + inpos]) << 25);
out[23 + outpos] = ((in[27 + inpos] & 134217727) >>> (27 - 20))
| ((in[28 + inpos]) << 20);
out[24 + outpos] = ((in[28 + inpos] & 134217727) >>> (27 - 15))
| ((in[29 + inpos]) << 15);
out[25 + outpos] = ((in[29 + inpos] & 134217727) >>> (27 - 10))
| ((in[30 + inpos]) << 10);
out[26 + outpos] = ((in[30 + inpos] & 134217727) >>> (27 - 5))
| ((in[31 + inpos]) << 5);
}
protected static void fastpack28(final int[] in, int inpos,
final int[] out, int outpos) {
out[0 + outpos] = (in[0 + inpos] & 268435455)
| ((in[1 + inpos]) << 28);
out[1 + outpos] = ((in[1 + inpos] & 268435455) >>> (28 - 24))
| ((in[2 + inpos]) << 24);
out[2 + outpos] = ((in[2 + inpos] & 268435455) >>> (28 - 20))
| ((in[3 + inpos]) << 20);
out[3 + outpos] = ((in[3 + inpos] & 268435455) >>> (28 - 16))
| ((in[4 + inpos]) << 16);
out[4 + outpos] = ((in[4 + inpos] & 268435455) >>> (28 - 12))
| ((in[5 + inpos]) << 12);
out[5 + outpos] = ((in[5 + inpos] & 268435455) >>> (28 - 8))
| ((in[6 + inpos]) << 8);
out[6 + outpos] = ((in[6 + inpos] & 268435455) >>> (28 - 4))
| ((in[7 + inpos]) << 4);
out[7 + outpos] = (in[8 + inpos] & 268435455)
| ((in[9 + inpos]) << 28);
out[8 + outpos] = ((in[9 + inpos] & 268435455) >>> (28 - 24))
| ((in[10 + inpos]) << 24);
out[9 + outpos] = ((in[10 + inpos] & 268435455) >>> (28 - 20))
| ((in[11 + inpos]) << 20);
out[10 + outpos] = ((in[11 + inpos] & 268435455) >>> (28 - 16))
| ((in[12 + inpos]) << 16);
out[11 + outpos] = ((in[12 + inpos] & 268435455) >>> (28 - 12))
| ((in[13 + inpos]) << 12);
out[12 + outpos] = ((in[13 + inpos] & 268435455) >>> (28 - 8))
| ((in[14 + inpos]) << 8);
out[13 + outpos] = ((in[14 + inpos] & 268435455) >>> (28 - 4))
| ((in[15 + inpos]) << 4);
out[14 + outpos] = (in[16 + inpos] & 268435455)
| ((in[17 + inpos]) << 28);
out[15 + outpos] = ((in[17 + inpos] & 268435455) >>> (28 - 24))
| ((in[18 + inpos]) << 24);
out[16 + outpos] = ((in[18 + inpos] & 268435455) >>> (28 - 20))
| ((in[19 + inpos]) << 20);
out[17 + outpos] = ((in[19 + inpos] & 268435455) >>> (28 - 16))
| ((in[20 + inpos]) << 16);
out[18 + outpos] = ((in[20 + inpos] & 268435455) >>> (28 - 12))
| ((in[21 + inpos]) << 12);
out[19 + outpos] = ((in[21 + inpos] & 268435455) >>> (28 - 8))
| ((in[22 + inpos]) << 8);
out[20 + outpos] = ((in[22 + inpos] & 268435455) >>> (28 - 4))
| ((in[23 + inpos]) << 4);
out[21 + outpos] = (in[24 + inpos] & 268435455)
| ((in[25 + inpos]) << 28);
out[22 + outpos] = ((in[25 + inpos] & 268435455) >>> (28 - 24))
| ((in[26 + inpos]) << 24);
out[23 + outpos] = ((in[26 + inpos] & 268435455) >>> (28 - 20))
| ((in[27 + inpos]) << 20);
out[24 + outpos] = ((in[27 + inpos] & 268435455) >>> (28 - 16))
| ((in[28 + inpos]) << 16);
out[25 + outpos] = ((in[28 + inpos] & 268435455) >>> (28 - 12))
| ((in[29 + inpos]) << 12);
out[26 + outpos] = ((in[29 + inpos] & 268435455) >>> (28 - 8))
| ((in[30 + inpos]) << 8);
out[27 + outpos] = ((in[30 + inpos] & 268435455) >>> (28 - 4))
| ((in[31 + inpos]) << 4);
}
protected static void fastpack29(final int[] in, int inpos,
final int[] out, int outpos) {
out[0 + outpos] = (in[0 + inpos] & 536870911)
| ((in[1 + inpos]) << 29);
out[1 + outpos] = ((in[1 + inpos] & 536870911) >>> (29 - 26))
| ((in[2 + inpos]) << 26);
out[2 + outpos] = ((in[2 + inpos] & 536870911) >>> (29 - 23))
| ((in[3 + inpos]) << 23);
out[3 + outpos] = ((in[3 + inpos] & 536870911) >>> (29 - 20))
| ((in[4 + inpos]) << 20);
out[4 + outpos] = ((in[4 + inpos] & 536870911) >>> (29 - 17))
| ((in[5 + inpos]) << 17);
out[5 + outpos] = ((in[5 + inpos] & 536870911) >>> (29 - 14))
| ((in[6 + inpos]) << 14);
out[6 + outpos] = ((in[6 + inpos] & 536870911) >>> (29 - 11))
| ((in[7 + inpos]) << 11);
out[7 + outpos] = ((in[7 + inpos] & 536870911) >>> (29 - 8))
| ((in[8 + inpos]) << 8);
out[8 + outpos] = ((in[8 + inpos] & 536870911) >>> (29 - 5))
| ((in[9 + inpos]) << 5);
out[9 + outpos] = ((in[9 + inpos] & 536870911) >>> (29 - 2))
| ((in[10 + inpos] & 536870911) << 2)
| ((in[11 + inpos]) << 31);
out[10 + outpos] = ((in[11 + inpos] & 536870911) >>> (29 - 28))
| ((in[12 + inpos]) << 28);
out[11 + outpos] = ((in[12 + inpos] & 536870911) >>> (29 - 25))
| ((in[13 + inpos]) << 25);
out[12 + outpos] = ((in[13 + inpos] & 536870911) >>> (29 - 22))
| ((in[14 + inpos]) << 22);
out[13 + outpos] = ((in[14 + inpos] & 536870911) >>> (29 - 19))
| ((in[15 + inpos]) << 19);
out[14 + outpos] = ((in[15 + inpos] & 536870911) >>> (29 - 16))
| ((in[16 + inpos]) << 16);
out[15 + outpos] = ((in[16 + inpos] & 536870911) >>> (29 - 13))
| ((in[17 + inpos]) << 13);
out[16 + outpos] = ((in[17 + inpos] & 536870911) >>> (29 - 10))
| ((in[18 + inpos]) << 10);
out[17 + outpos] = ((in[18 + inpos] & 536870911) >>> (29 - 7))
| ((in[19 + inpos]) << 7);
out[18 + outpos] = ((in[19 + inpos] & 536870911) >>> (29 - 4))
| ((in[20 + inpos]) << 4);
out[19 + outpos] = ((in[20 + inpos] & 536870911) >>> (29 - 1))
| ((in[21 + inpos] & 536870911) << 1)
| ((in[22 + inpos]) << 30);
out[20 + outpos] = ((in[22 + inpos] & 536870911) >>> (29 - 27))
| ((in[23 + inpos]) << 27);
out[21 + outpos] = ((in[23 + inpos] & 536870911) >>> (29 - 24))
| ((in[24 + inpos]) << 24);
out[22 + outpos] = ((in[24 + inpos] & 536870911) >>> (29 - 21))
| ((in[25 + inpos]) << 21);
out[23 + outpos] = ((in[25 + inpos] & 536870911) >>> (29 - 18))
| ((in[26 + inpos]) << 18);
out[24 + outpos] = ((in[26 + inpos] & 536870911) >>> (29 - 15))
| ((in[27 + inpos]) << 15);
out[25 + outpos] = ((in[27 + inpos] & 536870911) >>> (29 - 12))
| ((in[28 + inpos]) << 12);
out[26 + outpos] = ((in[28 + inpos] & 536870911) >>> (29 - 9))
| ((in[29 + inpos]) << 9);
out[27 + outpos] = ((in[29 + inpos] & 536870911) >>> (29 - 6))
| ((in[30 + inpos]) << 6);
out[28 + outpos] = ((in[30 + inpos] & 536870911) >>> (29 - 3))
| ((in[31 + inpos]) << 3);
}
protected static void fastpack3(final int[] in, int inpos,
final int[] out, int outpos) {
out[0 + outpos] = (in[0 + inpos] & 7)
| ((in[1 + inpos] & 7) << 3)
| ((in[2 + inpos] & 7) << 6)
| ((in[3 + inpos] & 7) << 9)
| ((in[4 + inpos] & 7) << 12)
| ((in[5 + inpos] & 7) << 15)
| ((in[6 + inpos] & 7) << 18)
| ((in[7 + inpos] & 7) << 21)
| ((in[8 + inpos] & 7) << 24)
| ((in[9 + inpos] & 7) << 27)
| ((in[10 + inpos]) << 30);
out[1 + outpos] = ((in[10 + inpos] & 7) >>> (3 - 1))
| ((in[11 + inpos] & 7) << 1)
| ((in[12 + inpos] & 7) << 4)
| ((in[13 + inpos] & 7) << 7)
| ((in[14 + inpos] & 7) << 10)
| ((in[15 + inpos] & 7) << 13)
| ((in[16 + inpos] & 7) << 16)
| ((in[17 + inpos] & 7) << 19)
| ((in[18 + inpos] & 7) << 22)
| ((in[19 + inpos] & 7) << 25)
| ((in[20 + inpos] & 7) << 28)
| ((in[21 + inpos]) << 31);
out[2 + outpos] = ((in[21 + inpos] & 7) >>> (3 - 2))
| ((in[22 + inpos] & 7) << 2)
| ((in[23 + inpos] & 7) << 5)
| ((in[24 + inpos] & 7) << 8)
| ((in[25 + inpos] & 7) << 11)
| ((in[26 + inpos] & 7) << 14)
| ((in[27 + inpos] & 7) << 17)
| ((in[28 + inpos] & 7) << 20)
| ((in[29 + inpos] & 7) << 23)
| ((in[30 + inpos] & 7) << 26)
| ((in[31 + inpos]) << 29);
}
protected static void fastpack30(final int[] in, int inpos,
final int[] out, int outpos) {
out[0 + outpos] = (in[0 + inpos] & 1073741823)
| ((in[1 + inpos]) << 30);
out[1 + outpos] = ((in[1 + inpos] & 1073741823) >>> (30 - 28))
| ((in[2 + inpos]) << 28);
out[2 + outpos] = ((in[2 + inpos] & 1073741823) >>> (30 - 26))
| ((in[3 + inpos]) << 26);
out[3 + outpos] = ((in[3 + inpos] & 1073741823) >>> (30 - 24))
| ((in[4 + inpos]) << 24);
out[4 + outpos] = ((in[4 + inpos] & 1073741823) >>> (30 - 22))
| ((in[5 + inpos]) << 22);
out[5 + outpos] = ((in[5 + inpos] & 1073741823) >>> (30 - 20))
| ((in[6 + inpos]) << 20);
out[6 + outpos] = ((in[6 + inpos] & 1073741823) >>> (30 - 18))
| ((in[7 + inpos]) << 18);
out[7 + outpos] = ((in[7 + inpos] & 1073741823) >>> (30 - 16))
| ((in[8 + inpos]) << 16);
out[8 + outpos] = ((in[8 + inpos] & 1073741823) >>> (30 - 14))
| ((in[9 + inpos]) << 14);
out[9 + outpos] = ((in[9 + inpos] & 1073741823) >>> (30 - 12))
| ((in[10 + inpos]) << 12);
out[10 + outpos] = ((in[10 + inpos] & 1073741823) >>> (30 - 10))
| ((in[11 + inpos]) << 10);
out[11 + outpos] = ((in[11 + inpos] & 1073741823) >>> (30 - 8))
| ((in[12 + inpos]) << 8);
out[12 + outpos] = ((in[12 + inpos] & 1073741823) >>> (30 - 6))
| ((in[13 + inpos]) << 6);
out[13 + outpos] = ((in[13 + inpos] & 1073741823) >>> (30 - 4))
| ((in[14 + inpos]) << 4);
out[14 + outpos] = ((in[14 + inpos] & 1073741823) >>> (30 - 2))
| ((in[15 + inpos]) << 2);
out[15 + outpos] = (in[16 + inpos] & 1073741823)
| ((in[17 + inpos]) << 30);
out[16 + outpos] = ((in[17 + inpos] & 1073741823) >>> (30 - 28))
| ((in[18 + inpos]) << 28);
out[17 + outpos] = ((in[18 + inpos] & 1073741823) >>> (30 - 26))
| ((in[19 + inpos]) << 26);
out[18 + outpos] = ((in[19 + inpos] & 1073741823) >>> (30 - 24))
| ((in[20 + inpos]) << 24);
out[19 + outpos] = ((in[20 + inpos] & 1073741823) >>> (30 - 22))
| ((in[21 + inpos]) << 22);
out[20 + outpos] = ((in[21 + inpos] & 1073741823) >>> (30 - 20))
| ((in[22 + inpos]) << 20);
out[21 + outpos] = ((in[22 + inpos] & 1073741823) >>> (30 - 18))
| ((in[23 + inpos]) << 18);
out[22 + outpos] = ((in[23 + inpos] & 1073741823) >>> (30 - 16))
| ((in[24 + inpos]) << 16);
out[23 + outpos] = ((in[24 + inpos] & 1073741823) >>> (30 - 14))
| ((in[25 + inpos]) << 14);
out[24 + outpos] = ((in[25 + inpos] & 1073741823) >>> (30 - 12))
| ((in[26 + inpos]) << 12);
out[25 + outpos] = ((in[26 + inpos] & 1073741823) >>> (30 - 10))
| ((in[27 + inpos]) << 10);
out[26 + outpos] = ((in[27 + inpos] & 1073741823) >>> (30 - 8))
| ((in[28 + inpos]) << 8);
out[27 + outpos] = ((in[28 + inpos] & 1073741823) >>> (30 - 6))
| ((in[29 + inpos]) << 6);
out[28 + outpos] = ((in[29 + inpos] & 1073741823) >>> (30 - 4))
| ((in[30 + inpos]) << 4);
out[29 + outpos] = ((in[30 + inpos] & 1073741823) >>> (30 - 2))
| ((in[31 + inpos]) << 2);
}
protected static void fastpack31(final int[] in, int inpos,
final int[] out, int outpos) {
out[0 + outpos] = (in[0 + inpos] & 2147483647)
| ((in[1 + inpos]) << 31);
out[1 + outpos] = ((in[1 + inpos] & 2147483647) >>> (31 - 30))
| ((in[2 + inpos]) << 30);
out[2 + outpos] = ((in[2 + inpos] & 2147483647) >>> (31 - 29))
| ((in[3 + inpos]) << 29);
out[3 + outpos] = ((in[3 + inpos] & 2147483647) >>> (31 - 28))
| ((in[4 + inpos]) << 28);
out[4 + outpos] = ((in[4 + inpos] & 2147483647) >>> (31 - 27))
| ((in[5 + inpos]) << 27);
out[5 + outpos] = ((in[5 + inpos] & 2147483647) >>> (31 - 26))
| ((in[6 + inpos]) << 26);
out[6 + outpos] = ((in[6 + inpos] & 2147483647) >>> (31 - 25))
| ((in[7 + inpos]) << 25);
out[7 + outpos] = ((in[7 + inpos] & 2147483647) >>> (31 - 24))
| ((in[8 + inpos]) << 24);
out[8 + outpos] = ((in[8 + inpos] & 2147483647) >>> (31 - 23))
| ((in[9 + inpos]) << 23);
out[9 + outpos] = ((in[9 + inpos] & 2147483647) >>> (31 - 22))
| ((in[10 + inpos]) << 22);
out[10 + outpos] = ((in[10 + inpos] & 2147483647) >>> (31 - 21))
| ((in[11 + inpos]) << 21);
out[11 + outpos] = ((in[11 + inpos] & 2147483647) >>> (31 - 20))
| ((in[12 + inpos]) << 20);
out[12 + outpos] = ((in[12 + inpos] & 2147483647) >>> (31 - 19))
| ((in[13 + inpos]) << 19);
out[13 + outpos] = ((in[13 + inpos] & 2147483647) >>> (31 - 18))
| ((in[14 + inpos]) << 18);
out[14 + outpos] = ((in[14 + inpos] & 2147483647) >>> (31 - 17))
| ((in[15 + inpos]) << 17);
out[15 + outpos] = ((in[15 + inpos] & 2147483647) >>> (31 - 16))
| ((in[16 + inpos]) << 16);
out[16 + outpos] = ((in[16 + inpos] & 2147483647) >>> (31 - 15))
| ((in[17 + inpos]) << 15);
out[17 + outpos] = ((in[17 + inpos] & 2147483647) >>> (31 - 14))
| ((in[18 + inpos]) << 14);
out[18 + outpos] = ((in[18 + inpos] & 2147483647) >>> (31 - 13))
| ((in[19 + inpos]) << 13);
out[19 + outpos] = ((in[19 + inpos] & 2147483647) >>> (31 - 12))
| ((in[20 + inpos]) << 12);
out[20 + outpos] = ((in[20 + inpos] & 2147483647) >>> (31 - 11))
| ((in[21 + inpos]) << 11);
out[21 + outpos] = ((in[21 + inpos] & 2147483647) >>> (31 - 10))
| ((in[22 + inpos]) << 10);
out[22 + outpos] = ((in[22 + inpos] & 2147483647) >>> (31 - 9))
| ((in[23 + inpos]) << 9);
out[23 + outpos] = ((in[23 + inpos] & 2147483647) >>> (31 - 8))
| ((in[24 + inpos]) << 8);
out[24 + outpos] = ((in[24 + inpos] & 2147483647) >>> (31 - 7))
| ((in[25 + inpos]) << 7);
out[25 + outpos] = ((in[25 + inpos] & 2147483647) >>> (31 - 6))
| ((in[26 + inpos]) << 6);
out[26 + outpos] = ((in[26 + inpos] & 2147483647) >>> (31 - 5))
| ((in[27 + inpos]) << 5);
out[27 + outpos] = ((in[27 + inpos] & 2147483647) >>> (31 - 4))
| ((in[28 + inpos]) << 4);
out[28 + outpos] = ((in[28 + inpos] & 2147483647) >>> (31 - 3))
| ((in[29 + inpos]) << 3);
out[29 + outpos] = ((in[29 + inpos] & 2147483647) >>> (31 - 2))
| ((in[30 + inpos]) << 2);
out[30 + outpos] = ((in[30 + inpos] & 2147483647) >>> (31 - 1))
| ((in[31 + inpos]) << 1);
}
protected static void fastpack32(final int[] in, int inpos,
final int[] out, int outpos) {
System.arraycopy(in, inpos, out, outpos, 32);
}
protected static void fastpack4(final int[] in, int inpos,
final int[] out, int outpos) {
out[0 + outpos] = (in[0 + inpos] & 15)
| ((in[1 + inpos] & 15) << 4)
| ((in[2 + inpos] & 15) << 8)
| ((in[3 + inpos] & 15) << 12)
| ((in[4 + inpos] & 15) << 16)
| ((in[5 + inpos] & 15) << 20)
| ((in[6 + inpos] & 15) << 24)
| ((in[7 + inpos]) << 28);
out[1 + outpos] = (in[8 + inpos] & 15)
| ((in[9 + inpos] & 15) << 4)
| ((in[10 + inpos] & 15) << 8)
| ((in[11 + inpos] & 15) << 12)
| ((in[12 + inpos] & 15) << 16)
| ((in[13 + inpos] & 15) << 20)
| ((in[14 + inpos] & 15) << 24)
| ((in[15 + inpos]) << 28);
out[2 + outpos] = (in[16 + inpos] & 15)
| ((in[17 + inpos] & 15) << 4)
| ((in[18 + inpos] & 15) << 8)
| ((in[19 + inpos] & 15) << 12)
| ((in[20 + inpos] & 15) << 16)
| ((in[21 + inpos] & 15) << 20)
| ((in[22 + inpos] & 15) << 24)
| ((in[23 + inpos]) << 28);
out[3 + outpos] = (in[24 + inpos] & 15)
| ((in[25 + inpos] & 15) << 4)
| ((in[26 + inpos] & 15) << 8)
| ((in[27 + inpos] & 15) << 12)
| ((in[28 + inpos] & 15) << 16)
| ((in[29 + inpos] & 15) << 20)
| ((in[30 + inpos] & 15) << 24)
| ((in[31 + inpos]) << 28);
}
protected static void fastpack5(final int[] in, int inpos,
final int[] out, int outpos) {
out[0 + outpos] = (in[0 + inpos] & 31)
| ((in[1 + inpos] & 31) << 5)
| ((in[2 + inpos] & 31) << 10)
| ((in[3 + inpos] & 31) << 15)
| ((in[4 + inpos] & 31) << 20)
| ((in[5 + inpos] & 31) << 25)
| ((in[6 + inpos]) << 30);
out[1 + outpos] = ((in[6 + inpos] & 31) >>> (5 - 3))
| ((in[7 + inpos] & 31) << 3)
| ((in[8 + inpos] & 31) << 8)
| ((in[9 + inpos] & 31) << 13)
| ((in[10 + inpos] & 31) << 18)
| ((in[11 + inpos] & 31) << 23)
| ((in[12 + inpos]) << 28);
out[2 + outpos] = ((in[12 + inpos] & 31) >>> (5 - 1))
| ((in[13 + inpos] & 31) << 1)
| ((in[14 + inpos] & 31) << 6)
| ((in[15 + inpos] & 31) << 11)
| ((in[16 + inpos] & 31) << 16)
| ((in[17 + inpos] & 31) << 21)
| ((in[18 + inpos] & 31) << 26)
| ((in[19 + inpos]) << 31);
out[3 + outpos] = ((in[19 + inpos] & 31) >>> (5 - 4))
| ((in[20 + inpos] & 31) << 4)
| ((in[21 + inpos] & 31) << 9)
| ((in[22 + inpos] & 31) << 14)
| ((in[23 + inpos] & 31) << 19)
| ((in[24 + inpos] & 31) << 24)
| ((in[25 + inpos]) << 29);
out[4 + outpos] = ((in[25 + inpos] & 31) >>> (5 - 2))
| ((in[26 + inpos] & 31) << 2)
| ((in[27 + inpos] & 31) << 7)
| ((in[28 + inpos] & 31) << 12)
| ((in[29 + inpos] & 31) << 17)
| ((in[30 + inpos] & 31) << 22)
| ((in[31 + inpos]) << 27);
}
protected static void fastpack6(final int[] in, int inpos,
final int[] out, int outpos) {
out[0 + outpos] = (in[0 + inpos] & 63)
| ((in[1 + inpos] & 63) << 6)
| ((in[2 + inpos] & 63) << 12)
| ((in[3 + inpos] & 63) << 18)
| ((in[4 + inpos] & 63) << 24)
| ((in[5 + inpos]) << 30);
out[1 + outpos] = ((in[5 + inpos] & 63) >>> (6 - 4))
| ((in[6 + inpos] & 63) << 4)
| ((in[7 + inpos] & 63) << 10)
| ((in[8 + inpos] & 63) << 16)
| ((in[9 + inpos] & 63) << 22)
| ((in[10 + inpos]) << 28);
out[2 + outpos] = ((in[10 + inpos] & 63) >>> (6 - 2))
| ((in[11 + inpos] & 63) << 2)
| ((in[12 + inpos] & 63) << 8)
| ((in[13 + inpos] & 63) << 14)
| ((in[14 + inpos] & 63) << 20)
| ((in[15 + inpos]) << 26);
out[3 + outpos] = (in[16 + inpos] & 63)
| ((in[17 + inpos] & 63) << 6)
| ((in[18 + inpos] & 63) << 12)
| ((in[19 + inpos] & 63) << 18)
| ((in[20 + inpos] & 63) << 24)
| ((in[21 + inpos]) << 30);
out[4 + outpos] = ((in[21 + inpos] & 63) >>> (6 - 4))
| ((in[22 + inpos] & 63) << 4)
| ((in[23 + inpos] & 63) << 10)
| ((in[24 + inpos] & 63) << 16)
| ((in[25 + inpos] & 63) << 22)
| ((in[26 + inpos]) << 28);
out[5 + outpos] = ((in[26 + inpos] & 63) >>> (6 - 2))
| ((in[27 + inpos] & 63) << 2)
| ((in[28 + inpos] & 63) << 8)
| ((in[29 + inpos] & 63) << 14)
| ((in[30 + inpos] & 63) << 20)
| ((in[31 + inpos]) << 26);
}
protected static void fastpack7(final int[] in, int inpos,
final int[] out, int outpos) {
out[0 + outpos] = (in[0 + inpos] & 127)
| ((in[1 + inpos] & 127) << 7)
| ((in[2 + inpos] & 127) << 14)
| ((in[3 + inpos] & 127) << 21)
| ((in[4 + inpos]) << 28);
out[1 + outpos] = ((in[4 + inpos] & 127) >>> (7 - 3))
| ((in[5 + inpos] & 127) << 3)
| ((in[6 + inpos] & 127) << 10)
| ((in[7 + inpos] & 127) << 17)
| ((in[8 + inpos] & 127) << 24)
| ((in[9 + inpos]) << 31);
out[2 + outpos] = ((in[9 + inpos] & 127) >>> (7 - 6))
| ((in[10 + inpos] & 127) << 6)
| ((in[11 + inpos] & 127) << 13)
| ((in[12 + inpos] & 127) << 20)
| ((in[13 + inpos]) << 27);
out[3 + outpos] = ((in[13 + inpos] & 127) >>> (7 - 2))
| ((in[14 + inpos] & 127) << 2)
| ((in[15 + inpos] & 127) << 9)
| ((in[16 + inpos] & 127) << 16)
| ((in[17 + inpos] & 127) << 23)
| ((in[18 + inpos]) << 30);
out[4 + outpos] = ((in[18 + inpos] & 127) >>> (7 - 5))
| ((in[19 + inpos] & 127) << 5)
| ((in[20 + inpos] & 127) << 12)
| ((in[21 + inpos] & 127) << 19)
| ((in[22 + inpos]) << 26);
out[5 + outpos] = ((in[22 + inpos] & 127) >>> (7 - 1))
| ((in[23 + inpos] & 127) << 1)
| ((in[24 + inpos] & 127) << 8)
| ((in[25 + inpos] & 127) << 15)
| ((in[26 + inpos] & 127) << 22)
| ((in[27 + inpos]) << 29);
out[6 + outpos] = ((in[27 + inpos] & 127) >>> (7 - 4))
| ((in[28 + inpos] & 127) << 4)
| ((in[29 + inpos] & 127) << 11)
| ((in[30 + inpos] & 127) << 18)
| ((in[31 + inpos]) << 25);
}
protected static void fastpack8(final int[] in, int inpos,
final int[] out, int outpos) {
out[0 + outpos] = (in[0 + inpos] & 255)
| ((in[1 + inpos] & 255) << 8)
| ((in[2 + inpos] & 255) << 16)
| ((in[3 + inpos]) << 24);
out[1 + outpos] = (in[4 + inpos] & 255)
| ((in[5 + inpos] & 255) << 8)
| ((in[6 + inpos] & 255) << 16)
| ((in[7 + inpos]) << 24);
out[2 + outpos] = (in[8 + inpos] & 255)
| ((in[9 + inpos] & 255) << 8)
| ((in[10 + inpos] & 255) << 16)
| ((in[11 + inpos]) << 24);
out[3 + outpos] = (in[12 + inpos] & 255)
| ((in[13 + inpos] & 255) << 8)
| ((in[14 + inpos] & 255) << 16)
| ((in[15 + inpos]) << 24);
out[4 + outpos] = (in[16 + inpos] & 255)
| ((in[17 + inpos] & 255) << 8)
| ((in[18 + inpos] & 255) << 16)
| ((in[19 + inpos]) << 24);
out[5 + outpos] = (in[20 + inpos] & 255)
| ((in[21 + inpos] & 255) << 8)
| ((in[22 + inpos] & 255) << 16)
| ((in[23 + inpos]) << 24);
out[6 + outpos] = (in[24 + inpos] & 255)
| ((in[25 + inpos] & 255) << 8)
| ((in[26 + inpos] & 255) << 16)
| ((in[27 + inpos]) << 24);
out[7 + outpos] = (in[28 + inpos] & 255)
| ((in[29 + inpos] & 255) << 8)
| ((in[30 + inpos] & 255) << 16)
| ((in[31 + inpos]) << 24);
}
protected static void fastpack9(final int[] in, int inpos,
final int[] out, int outpos) {
out[0 + outpos] = (in[0 + inpos] & 511)
| ((in[1 + inpos] & 511) << 9)
| ((in[2 + inpos] & 511) << 18)
| ((in[3 + inpos]) << 27);
out[1 + outpos] = ((in[3 + inpos] & 511) >>> (9 - 4))
| ((in[4 + inpos] & 511) << 4)
| ((in[5 + inpos] & 511) << 13)
| ((in[6 + inpos] & 511) << 22)
| ((in[7 + inpos]) << 31);
out[2 + outpos] = ((in[7 + inpos] & 511) >>> (9 - 8))
| ((in[8 + inpos] & 511) << 8)
| ((in[9 + inpos] & 511) << 17)
| ((in[10 + inpos]) << 26);
out[3 + outpos] = ((in[10 + inpos] & 511) >>> (9 - 3))
| ((in[11 + inpos] & 511) << 3)
| ((in[12 + inpos] & 511) << 12)
| ((in[13 + inpos] & 511) << 21)
| ((in[14 + inpos]) << 30);
out[4 + outpos] = ((in[14 + inpos] & 511) >>> (9 - 7))
| ((in[15 + inpos] & 511) << 7)
| ((in[16 + inpos] & 511) << 16)
| ((in[17 + inpos]) << 25);
out[5 + outpos] = ((in[17 + inpos] & 511) >>> (9 - 2))
| ((in[18 + inpos] & 511) << 2)
| ((in[19 + inpos] & 511) << 11)
| ((in[20 + inpos] & 511) << 20)
| ((in[21 + inpos]) << 29);
out[6 + outpos] = ((in[21 + inpos] & 511) >>> (9 - 6))
| ((in[22 + inpos] & 511) << 6)
| ((in[23 + inpos] & 511) << 15)
| ((in[24 + inpos]) << 24);
out[7 + outpos] = ((in[24 + inpos] & 511) >>> (9 - 1))
| ((in[25 + inpos] & 511) << 1)
| ((in[26 + inpos] & 511) << 10)
| ((in[27 + inpos] & 511) << 19)
| ((in[28 + inpos]) << 28);
out[8 + outpos] = ((in[28 + inpos] & 511) >>> (9 - 5))
| ((in[29 + inpos] & 511) << 5)
| ((in[30 + inpos] & 511) << 14)
| ((in[31 + inpos]) << 23);
}
/**
* Unpack 32 integers
*
* @param in
* source array
* @param inpos
* position in source array
* @param out
* output array
* @param outpos
* position in output array
* @param bit
* number of bits to use per integer
*/
public static void fastpackwithoutmask(final int[] in, final int inpos,
final int[] out, final int outpos, final int bit) {
switch (bit) {
case 0:
fastpackwithoutmask0(in, inpos, out, outpos);
break;
case 1:
fastpackwithoutmask1(in, inpos, out, outpos);
break;
case 2:
fastpackwithoutmask2(in, inpos, out, outpos);
break;
case 3:
fastpackwithoutmask3(in, inpos, out, outpos);
break;
case 4:
fastpackwithoutmask4(in, inpos, out, outpos);
break;
case 5:
fastpackwithoutmask5(in, inpos, out, outpos);
break;
case 6:
fastpackwithoutmask6(in, inpos, out, outpos);
break;
case 7:
fastpackwithoutmask7(in, inpos, out, outpos);
break;
case 8:
fastpackwithoutmask8(in, inpos, out, outpos);
break;
case 9:
fastpackwithoutmask9(in, inpos, out, outpos);
break;
case 10:
fastpackwithoutmask10(in, inpos, out, outpos);
break;
case 11:
fastpackwithoutmask11(in, inpos, out, outpos);
break;
case 12:
fastpackwithoutmask12(in, inpos, out, outpos);
break;
case 13:
fastpackwithoutmask13(in, inpos, out, outpos);
break;
case 14:
fastpackwithoutmask14(in, inpos, out, outpos);
break;
case 15:
fastpackwithoutmask15(in, inpos, out, outpos);
break;
case 16:
fastpackwithoutmask16(in, inpos, out, outpos);
break;
case 17:
fastpackwithoutmask17(in, inpos, out, outpos);
break;
case 18:
fastpackwithoutmask18(in, inpos, out, outpos);
break;
case 19:
fastpackwithoutmask19(in, inpos, out, outpos);
break;
case 20:
fastpackwithoutmask20(in, inpos, out, outpos);
break;
case 21:
fastpackwithoutmask21(in, inpos, out, outpos);
break;
case 22:
fastpackwithoutmask22(in, inpos, out, outpos);
break;
case 23:
fastpackwithoutmask23(in, inpos, out, outpos);
break;
case 24:
fastpackwithoutmask24(in, inpos, out, outpos);
break;
case 25:
fastpackwithoutmask25(in, inpos, out, outpos);
break;
case 26:
fastpackwithoutmask26(in, inpos, out, outpos);
break;
case 27:
fastpackwithoutmask27(in, inpos, out, outpos);
break;
case 28:
fastpackwithoutmask28(in, inpos, out, outpos);
break;
case 29:
fastpackwithoutmask29(in, inpos, out, outpos);
break;
case 30:
fastpackwithoutmask30(in, inpos, out, outpos);
break;
case 31:
fastpackwithoutmask31(in, inpos, out, outpos);
break;
case 32:
fastpackwithoutmask32(in, inpos, out, outpos);
break;
default:
throw new IllegalArgumentException(
"Unsupported bit width.");
}
}
protected static void fastpackwithoutmask0(final int[] in, int inpos,
final int[] out, int outpos) {
// nothing
}
protected static void fastpackwithoutmask1(final int[] in, int inpos,
final int[] out, int outpos) {
out[0 + outpos] = in[0 + inpos] | ((in[1 + inpos]) << 1)
| ((in[2 + inpos]) << 2) | ((in[3 + inpos]) << 3)
| ((in[4 + inpos]) << 4) | ((in[5 + inpos]) << 5)
| ((in[6 + inpos]) << 6) | ((in[7 + inpos]) << 7)
| ((in[8 + inpos]) << 8) | ((in[9 + inpos]) << 9)
| ((in[10 + inpos]) << 10) | ((in[11 + inpos]) << 11)
| ((in[12 + inpos]) << 12) | ((in[13 + inpos]) << 13)
| ((in[14 + inpos]) << 14) | ((in[15 + inpos]) << 15)
| ((in[16 + inpos]) << 16) | ((in[17 + inpos]) << 17)
| ((in[18 + inpos]) << 18) | ((in[19 + inpos]) << 19)
| ((in[20 + inpos]) << 20) | ((in[21 + inpos]) << 21)
| ((in[22 + inpos]) << 22) | ((in[23 + inpos]) << 23)
| ((in[24 + inpos]) << 24) | ((in[25 + inpos]) << 25)
| ((in[26 + inpos]) << 26) | ((in[27 + inpos]) << 27)
| ((in[28 + inpos]) << 28) | ((in[29 + inpos]) << 29)
| ((in[30 + inpos]) << 30) | ((in[31 + inpos]) << 31);
}
protected static void fastpackwithoutmask10(final int[] in, int inpos,
final int[] out, int outpos) {
out[0 + outpos] = in[0 + inpos] | ((in[1 + inpos]) << 10)
| ((in[2 + inpos]) << 20) | ((in[3 + inpos]) << 30);
out[1 + outpos] = ((in[3 + inpos]) >>> (10 - 8))
| ((in[4 + inpos]) << 8) | ((in[5 + inpos]) << 18)
| ((in[6 + inpos]) << 28);
out[2 + outpos] = ((in[6 + inpos]) >>> (10 - 6))
| ((in[7 + inpos]) << 6) | ((in[8 + inpos]) << 16)
| ((in[9 + inpos]) << 26);
out[3 + outpos] = ((in[9 + inpos]) >>> (10 - 4))
| ((in[10 + inpos]) << 4) | ((in[11 + inpos]) << 14)
| ((in[12 + inpos]) << 24);
out[4 + outpos] = ((in[12 + inpos]) >>> (10 - 2))
| ((in[13 + inpos]) << 2) | ((in[14 + inpos]) << 12)
| ((in[15 + inpos]) << 22);
out[5 + outpos] = in[16 + inpos] | ((in[17 + inpos]) << 10)
| ((in[18 + inpos]) << 20) | ((in[19 + inpos]) << 30);
out[6 + outpos] = ((in[19 + inpos]) >>> (10 - 8))
| ((in[20 + inpos]) << 8) | ((in[21 + inpos]) << 18)
| ((in[22 + inpos]) << 28);
out[7 + outpos] = ((in[22 + inpos]) >>> (10 - 6))
| ((in[23 + inpos]) << 6) | ((in[24 + inpos]) << 16)
| ((in[25 + inpos]) << 26);
out[8 + outpos] = ((in[25 + inpos]) >>> (10 - 4))
| ((in[26 + inpos]) << 4) | ((in[27 + inpos]) << 14)
| ((in[28 + inpos]) << 24);
out[9 + outpos] = ((in[28 + inpos]) >>> (10 - 2))
| ((in[29 + inpos]) << 2) | ((in[30 + inpos]) << 12)
| ((in[31 + inpos]) << 22);
}
protected static void fastpackwithoutmask11(final int[] in, int inpos,
final int[] out, int outpos) {
out[0 + outpos] = in[0 + inpos] | ((in[1 + inpos]) << 11)
| ((in[2 + inpos]) << 22);
out[1 + outpos] = ((in[2 + inpos]) >>> (11 - 1))
| ((in[3 + inpos]) << 1) | ((in[4 + inpos]) << 12)
| ((in[5 + inpos]) << 23);
out[2 + outpos] = ((in[5 + inpos]) >>> (11 - 2))
| ((in[6 + inpos]) << 2) | ((in[7 + inpos]) << 13)
| ((in[8 + inpos]) << 24);
out[3 + outpos] = ((in[8 + inpos]) >>> (11 - 3))
| ((in[9 + inpos]) << 3) | ((in[10 + inpos]) << 14)
| ((in[11 + inpos]) << 25);
out[4 + outpos] = ((in[11 + inpos]) >>> (11 - 4))
| ((in[12 + inpos]) << 4) | ((in[13 + inpos]) << 15)
| ((in[14 + inpos]) << 26);
out[5 + outpos] = ((in[14 + inpos]) >>> (11 - 5))
| ((in[15 + inpos]) << 5) | ((in[16 + inpos]) << 16)
| ((in[17 + inpos]) << 27);
out[6 + outpos] = ((in[17 + inpos]) >>> (11 - 6))
| ((in[18 + inpos]) << 6) | ((in[19 + inpos]) << 17)
| ((in[20 + inpos]) << 28);
out[7 + outpos] = ((in[20 + inpos]) >>> (11 - 7))
| ((in[21 + inpos]) << 7) | ((in[22 + inpos]) << 18)
| ((in[23 + inpos]) << 29);
out[8 + outpos] = ((in[23 + inpos]) >>> (11 - 8))
| ((in[24 + inpos]) << 8) | ((in[25 + inpos]) << 19)
| ((in[26 + inpos]) << 30);
out[9 + outpos] = ((in[26 + inpos]) >>> (11 - 9))
| ((in[27 + inpos]) << 9) | ((in[28 + inpos]) << 20)
| ((in[29 + inpos]) << 31);
out[10 + outpos] = ((in[29 + inpos]) >>> (11 - 10))
| ((in[30 + inpos]) << 10) | ((in[31 + inpos]) << 21);
}
protected static void fastpackwithoutmask12(final int[] in, int inpos,
final int[] out, int outpos) {
out[0 + outpos] = in[0 + inpos] | ((in[1 + inpos]) << 12)
| ((in[2 + inpos]) << 24);
out[1 + outpos] = ((in[2 + inpos]) >>> (12 - 4))
| ((in[3 + inpos]) << 4) | ((in[4 + inpos]) << 16)
| ((in[5 + inpos]) << 28);
out[2 + outpos] = ((in[5 + inpos]) >>> (12 - 8))
| ((in[6 + inpos]) << 8) | ((in[7 + inpos]) << 20);
out[3 + outpos] = in[8 + inpos] | ((in[9 + inpos]) << 12)
| ((in[10 + inpos]) << 24);
out[4 + outpos] = ((in[10 + inpos]) >>> (12 - 4))
| ((in[11 + inpos]) << 4) | ((in[12 + inpos]) << 16)
| ((in[13 + inpos]) << 28);
out[5 + outpos] = ((in[13 + inpos]) >>> (12 - 8))
| ((in[14 + inpos]) << 8) | ((in[15 + inpos]) << 20);
out[6 + outpos] = in[16 + inpos] | ((in[17 + inpos]) << 12)
| ((in[18 + inpos]) << 24);
out[7 + outpos] = ((in[18 + inpos]) >>> (12 - 4))
| ((in[19 + inpos]) << 4) | ((in[20 + inpos]) << 16)
| ((in[21 + inpos]) << 28);
out[8 + outpos] = ((in[21 + inpos]) >>> (12 - 8))
| ((in[22 + inpos]) << 8) | ((in[23 + inpos]) << 20);
out[9 + outpos] = in[24 + inpos] | ((in[25 + inpos]) << 12)
| ((in[26 + inpos]) << 24);
out[10 + outpos] = ((in[26 + inpos]) >>> (12 - 4))
| ((in[27 + inpos]) << 4) | ((in[28 + inpos]) << 16)
| ((in[29 + inpos]) << 28);
out[11 + outpos] = ((in[29 + inpos]) >>> (12 - 8))
| ((in[30 + inpos]) << 8) | ((in[31 + inpos]) << 20);
}
protected static void fastpackwithoutmask13(final int[] in, int inpos,
final int[] out, int outpos) {
out[0 + outpos] = in[0 + inpos] | ((in[1 + inpos]) << 13)
| ((in[2 + inpos]) << 26);
out[1 + outpos] = ((in[2 + inpos]) >>> (13 - 7))
| ((in[3 + inpos]) << 7) | ((in[4 + inpos]) << 20);
out[2 + outpos] = ((in[4 + inpos]) >>> (13 - 1))
| ((in[5 + inpos]) << 1) | ((in[6 + inpos]) << 14)
| ((in[7 + inpos]) << 27);
out[3 + outpos] = ((in[7 + inpos]) >>> (13 - 8))
| ((in[8 + inpos]) << 8) | ((in[9 + inpos]) << 21);
out[4 + outpos] = ((in[9 + inpos]) >>> (13 - 2))
| ((in[10 + inpos]) << 2) | ((in[11 + inpos]) << 15)
| ((in[12 + inpos]) << 28);
out[5 + outpos] = ((in[12 + inpos]) >>> (13 - 9))
| ((in[13 + inpos]) << 9) | ((in[14 + inpos]) << 22);
out[6 + outpos] = ((in[14 + inpos]) >>> (13 - 3))
| ((in[15 + inpos]) << 3) | ((in[16 + inpos]) << 16)
| ((in[17 + inpos]) << 29);
out[7 + outpos] = ((in[17 + inpos]) >>> (13 - 10))
| ((in[18 + inpos]) << 10) | ((in[19 + inpos]) << 23);
out[8 + outpos] = ((in[19 + inpos]) >>> (13 - 4))
| ((in[20 + inpos]) << 4) | ((in[21 + inpos]) << 17)
| ((in[22 + inpos]) << 30);
out[9 + outpos] = ((in[22 + inpos]) >>> (13 - 11))
| ((in[23 + inpos]) << 11) | ((in[24 + inpos]) << 24);
out[10 + outpos] = ((in[24 + inpos]) >>> (13 - 5))
| ((in[25 + inpos]) << 5) | ((in[26 + inpos]) << 18)
| ((in[27 + inpos]) << 31);
out[11 + outpos] = ((in[27 + inpos]) >>> (13 - 12))
| ((in[28 + inpos]) << 12) | ((in[29 + inpos]) << 25);
out[12 + outpos] = ((in[29 + inpos]) >>> (13 - 6))
| ((in[30 + inpos]) << 6) | ((in[31 + inpos]) << 19);
}
protected static void fastpackwithoutmask14(final int[] in, int inpos,
final int[] out, int outpos) {
out[0 + outpos] = in[0 + inpos] | ((in[1 + inpos]) << 14)
| ((in[2 + inpos]) << 28);
out[1 + outpos] = ((in[2 + inpos]) >>> (14 - 10))
| ((in[3 + inpos]) << 10) | ((in[4 + inpos]) << 24);
out[2 + outpos] = ((in[4 + inpos]) >>> (14 - 6))
| ((in[5 + inpos]) << 6) | ((in[6 + inpos]) << 20);
out[3 + outpos] = ((in[6 + inpos]) >>> (14 - 2))
| ((in[7 + inpos]) << 2) | ((in[8 + inpos]) << 16)
| ((in[9 + inpos]) << 30);
out[4 + outpos] = ((in[9 + inpos]) >>> (14 - 12))
| ((in[10 + inpos]) << 12) | ((in[11 + inpos]) << 26);
out[5 + outpos] = ((in[11 + inpos]) >>> (14 - 8))
| ((in[12 + inpos]) << 8) | ((in[13 + inpos]) << 22);
out[6 + outpos] = ((in[13 + inpos]) >>> (14 - 4))
| ((in[14 + inpos]) << 4) | ((in[15 + inpos]) << 18);
out[7 + outpos] = in[16 + inpos] | ((in[17 + inpos]) << 14)
| ((in[18 + inpos]) << 28);
out[8 + outpos] = ((in[18 + inpos]) >>> (14 - 10))
| ((in[19 + inpos]) << 10) | ((in[20 + inpos]) << 24);
out[9 + outpos] = ((in[20 + inpos]) >>> (14 - 6))
| ((in[21 + inpos]) << 6) | ((in[22 + inpos]) << 20);
out[10 + outpos] = ((in[22 + inpos]) >>> (14 - 2))
| ((in[23 + inpos]) << 2) | ((in[24 + inpos]) << 16)
| ((in[25 + inpos]) << 30);
out[11 + outpos] = ((in[25 + inpos]) >>> (14 - 12))
| ((in[26 + inpos]) << 12) | ((in[27 + inpos]) << 26);
out[12 + outpos] = ((in[27 + inpos]) >>> (14 - 8))
| ((in[28 + inpos]) << 8) | ((in[29 + inpos]) << 22);
out[13 + outpos] = ((in[29 + inpos]) >>> (14 - 4))
| ((in[30 + inpos]) << 4) | ((in[31 + inpos]) << 18);
}
protected static void fastpackwithoutmask15(final int[] in, int inpos,
final int[] out, int outpos) {
out[0 + outpos] = in[0 + inpos] | ((in[1 + inpos]) << 15)
| ((in[2 + inpos]) << 30);
out[1 + outpos] = ((in[2 + inpos]) >>> (15 - 13))
| ((in[3 + inpos]) << 13) | ((in[4 + inpos]) << 28);
out[2 + outpos] = ((in[4 + inpos]) >>> (15 - 11))
| ((in[5 + inpos]) << 11) | ((in[6 + inpos]) << 26);
out[3 + outpos] = ((in[6 + inpos]) >>> (15 - 9))
| ((in[7 + inpos]) << 9) | ((in[8 + inpos]) << 24);
out[4 + outpos] = ((in[8 + inpos]) >>> (15 - 7))
| ((in[9 + inpos]) << 7) | ((in[10 + inpos]) << 22);
out[5 + outpos] = ((in[10 + inpos]) >>> (15 - 5))
| ((in[11 + inpos]) << 5) | ((in[12 + inpos]) << 20);
out[6 + outpos] = ((in[12 + inpos]) >>> (15 - 3))
| ((in[13 + inpos]) << 3) | ((in[14 + inpos]) << 18);
out[7 + outpos] = ((in[14 + inpos]) >>> (15 - 1))
| ((in[15 + inpos]) << 1) | ((in[16 + inpos]) << 16)
| ((in[17 + inpos]) << 31);
out[8 + outpos] = ((in[17 + inpos]) >>> (15 - 14))
| ((in[18 + inpos]) << 14) | ((in[19 + inpos]) << 29);
out[9 + outpos] = ((in[19 + inpos]) >>> (15 - 12))
| ((in[20 + inpos]) << 12) | ((in[21 + inpos]) << 27);
out[10 + outpos] = ((in[21 + inpos]) >>> (15 - 10))
| ((in[22 + inpos]) << 10) | ((in[23 + inpos]) << 25);
out[11 + outpos] = ((in[23 + inpos]) >>> (15 - 8))
| ((in[24 + inpos]) << 8) | ((in[25 + inpos]) << 23);
out[12 + outpos] = ((in[25 + inpos]) >>> (15 - 6))
| ((in[26 + inpos]) << 6) | ((in[27 + inpos]) << 21);
out[13 + outpos] = ((in[27 + inpos]) >>> (15 - 4))
| ((in[28 + inpos]) << 4) | ((in[29 + inpos]) << 19);
out[14 + outpos] = ((in[29 + inpos]) >>> (15 - 2))
| ((in[30 + inpos]) << 2) | ((in[31 + inpos]) << 17);
}
protected static void fastpackwithoutmask16(final int[] in, int inpos,
final int[] out, int outpos) {
out[0 + outpos] = in[0 + inpos] | ((in[1 + inpos]) << 16);
out[1 + outpos] = in[2 + inpos] | ((in[3 + inpos]) << 16);
out[2 + outpos] = in[4 + inpos] | ((in[5 + inpos]) << 16);
out[3 + outpos] = in[6 + inpos] | ((in[7 + inpos]) << 16);
out[4 + outpos] = in[8 + inpos] | ((in[9 + inpos]) << 16);
out[5 + outpos] = in[10 + inpos] | ((in[11 + inpos]) << 16);
out[6 + outpos] = in[12 + inpos] | ((in[13 + inpos]) << 16);
out[7 + outpos] = in[14 + inpos] | ((in[15 + inpos]) << 16);
out[8 + outpos] = in[16 + inpos] | ((in[17 + inpos]) << 16);
out[9 + outpos] = in[18 + inpos] | ((in[19 + inpos]) << 16);
out[10 + outpos] = in[20 + inpos] | ((in[21 + inpos]) << 16);
out[11 + outpos] = in[22 + inpos] | ((in[23 + inpos]) << 16);
out[12 + outpos] = in[24 + inpos] | ((in[25 + inpos]) << 16);
out[13 + outpos] = in[26 + inpos] | ((in[27 + inpos]) << 16);
out[14 + outpos] = in[28 + inpos] | ((in[29 + inpos]) << 16);
out[15 + outpos] = in[30 + inpos] | ((in[31 + inpos]) << 16);
}
protected static void fastpackwithoutmask17(final int[] in, int inpos,
final int[] out, int outpos) {
out[0 + outpos] = in[0 + inpos] | ((in[1 + inpos]) << 17);
out[1 + outpos] = ((in[1 + inpos]) >>> (17 - 2))
| ((in[2 + inpos]) << 2) | ((in[3 + inpos]) << 19);
out[2 + outpos] = ((in[3 + inpos]) >>> (17 - 4))
| ((in[4 + inpos]) << 4) | ((in[5 + inpos]) << 21);
out[3 + outpos] = ((in[5 + inpos]) >>> (17 - 6))
| ((in[6 + inpos]) << 6) | ((in[7 + inpos]) << 23);
out[4 + outpos] = ((in[7 + inpos]) >>> (17 - 8))
| ((in[8 + inpos]) << 8) | ((in[9 + inpos]) << 25);
out[5 + outpos] = ((in[9 + inpos]) >>> (17 - 10))
| ((in[10 + inpos]) << 10) | ((in[11 + inpos]) << 27);
out[6 + outpos] = ((in[11 + inpos]) >>> (17 - 12))
| ((in[12 + inpos]) << 12) | ((in[13 + inpos]) << 29);
out[7 + outpos] = ((in[13 + inpos]) >>> (17 - 14))
| ((in[14 + inpos]) << 14) | ((in[15 + inpos]) << 31);
out[8 + outpos] = ((in[15 + inpos]) >>> (17 - 16))
| ((in[16 + inpos]) << 16);
out[9 + outpos] = ((in[16 + inpos]) >>> (17 - 1))
| ((in[17 + inpos]) << 1) | ((in[18 + inpos]) << 18);
out[10 + outpos] = ((in[18 + inpos]) >>> (17 - 3))
| ((in[19 + inpos]) << 3) | ((in[20 + inpos]) << 20);
out[11 + outpos] = ((in[20 + inpos]) >>> (17 - 5))
| ((in[21 + inpos]) << 5) | ((in[22 + inpos]) << 22);
out[12 + outpos] = ((in[22 + inpos]) >>> (17 - 7))
| ((in[23 + inpos]) << 7) | ((in[24 + inpos]) << 24);
out[13 + outpos] = ((in[24 + inpos]) >>> (17 - 9))
| ((in[25 + inpos]) << 9) | ((in[26 + inpos]) << 26);
out[14 + outpos] = ((in[26 + inpos]) >>> (17 - 11))
| ((in[27 + inpos]) << 11) | ((in[28 + inpos]) << 28);
out[15 + outpos] = ((in[28 + inpos]) >>> (17 - 13))
| ((in[29 + inpos]) << 13) | ((in[30 + inpos]) << 30);
out[16 + outpos] = ((in[30 + inpos]) >>> (17 - 15))
| ((in[31 + inpos]) << 15);
}
protected static void fastpackwithoutmask18(final int[] in, int inpos,
final int[] out, int outpos) {
out[0 + outpos] = in[0 + inpos] | ((in[1 + inpos]) << 18);
out[1 + outpos] = ((in[1 + inpos]) >>> (18 - 4))
| ((in[2 + inpos]) << 4) | ((in[3 + inpos]) << 22);
out[2 + outpos] = ((in[3 + inpos]) >>> (18 - 8))
| ((in[4 + inpos]) << 8) | ((in[5 + inpos]) << 26);
out[3 + outpos] = ((in[5 + inpos]) >>> (18 - 12))
| ((in[6 + inpos]) << 12) | ((in[7 + inpos]) << 30);
out[4 + outpos] = ((in[7 + inpos]) >>> (18 - 16))
| ((in[8 + inpos]) << 16);
out[5 + outpos] = ((in[8 + inpos]) >>> (18 - 2))
| ((in[9 + inpos]) << 2) | ((in[10 + inpos]) << 20);
out[6 + outpos] = ((in[10 + inpos]) >>> (18 - 6))
| ((in[11 + inpos]) << 6) | ((in[12 + inpos]) << 24);
out[7 + outpos] = ((in[12 + inpos]) >>> (18 - 10))
| ((in[13 + inpos]) << 10) | ((in[14 + inpos]) << 28);
out[8 + outpos] = ((in[14 + inpos]) >>> (18 - 14))
| ((in[15 + inpos]) << 14);
out[9 + outpos] = in[16 + inpos] | ((in[17 + inpos]) << 18);
out[10 + outpos] = ((in[17 + inpos]) >>> (18 - 4))
| ((in[18 + inpos]) << 4) | ((in[19 + inpos]) << 22);
out[11 + outpos] = ((in[19 + inpos]) >>> (18 - 8))
| ((in[20 + inpos]) << 8) | ((in[21 + inpos]) << 26);
out[12 + outpos] = ((in[21 + inpos]) >>> (18 - 12))
| ((in[22 + inpos]) << 12) | ((in[23 + inpos]) << 30);
out[13 + outpos] = ((in[23 + inpos]) >>> (18 - 16))
| ((in[24 + inpos]) << 16);
out[14 + outpos] = ((in[24 + inpos]) >>> (18 - 2))
| ((in[25 + inpos]) << 2) | ((in[26 + inpos]) << 20);
out[15 + outpos] = ((in[26 + inpos]) >>> (18 - 6))
| ((in[27 + inpos]) << 6) | ((in[28 + inpos]) << 24);
out[16 + outpos] = ((in[28 + inpos]) >>> (18 - 10))
| ((in[29 + inpos]) << 10) | ((in[30 + inpos]) << 28);
out[17 + outpos] = ((in[30 + inpos]) >>> (18 - 14))
| ((in[31 + inpos]) << 14);
}
protected static void fastpackwithoutmask19(final int[] in, int inpos,
final int[] out, int outpos) {
out[0 + outpos] = in[0 + inpos] | ((in[1 + inpos]) << 19);
out[1 + outpos] = ((in[1 + inpos]) >>> (19 - 6))
| ((in[2 + inpos]) << 6) | ((in[3 + inpos]) << 25);
out[2 + outpos] = ((in[3 + inpos]) >>> (19 - 12))
| ((in[4 + inpos]) << 12) | ((in[5 + inpos]) << 31);
out[3 + outpos] = ((in[5 + inpos]) >>> (19 - 18))
| ((in[6 + inpos]) << 18);
out[4 + outpos] = ((in[6 + inpos]) >>> (19 - 5))
| ((in[7 + inpos]) << 5) | ((in[8 + inpos]) << 24);
out[5 + outpos] = ((in[8 + inpos]) >>> (19 - 11))
| ((in[9 + inpos]) << 11) | ((in[10 + inpos]) << 30);
out[6 + outpos] = ((in[10 + inpos]) >>> (19 - 17))
| ((in[11 + inpos]) << 17);
out[7 + outpos] = ((in[11 + inpos]) >>> (19 - 4))
| ((in[12 + inpos]) << 4) | ((in[13 + inpos]) << 23);
out[8 + outpos] = ((in[13 + inpos]) >>> (19 - 10))
| ((in[14 + inpos]) << 10) | ((in[15 + inpos]) << 29);
out[9 + outpos] = ((in[15 + inpos]) >>> (19 - 16))
| ((in[16 + inpos]) << 16);
out[10 + outpos] = ((in[16 + inpos]) >>> (19 - 3))
| ((in[17 + inpos]) << 3) | ((in[18 + inpos]) << 22);
out[11 + outpos] = ((in[18 + inpos]) >>> (19 - 9))
| ((in[19 + inpos]) << 9) | ((in[20 + inpos]) << 28);
out[12 + outpos] = ((in[20 + inpos]) >>> (19 - 15))
| ((in[21 + inpos]) << 15);
out[13 + outpos] = ((in[21 + inpos]) >>> (19 - 2))
| ((in[22 + inpos]) << 2) | ((in[23 + inpos]) << 21);
out[14 + outpos] = ((in[23 + inpos]) >>> (19 - 8))
| ((in[24 + inpos]) << 8) | ((in[25 + inpos]) << 27);
out[15 + outpos] = ((in[25 + inpos]) >>> (19 - 14))
| ((in[26 + inpos]) << 14);
out[16 + outpos] = ((in[26 + inpos]) >>> (19 - 1))
| ((in[27 + inpos]) << 1) | ((in[28 + inpos]) << 20);
out[17 + outpos] = ((in[28 + inpos]) >>> (19 - 7))
| ((in[29 + inpos]) << 7) | ((in[30 + inpos]) << 26);
out[18 + outpos] = ((in[30 + inpos]) >>> (19 - 13))
| ((in[31 + inpos]) << 13);
}
protected static void fastpackwithoutmask2(final int[] in, int inpos,
final int[] out, int outpos) {
out[0 + outpos] = in[0 + inpos] | ((in[1 + inpos]) << 2)
| ((in[2 + inpos]) << 4) | ((in[3 + inpos]) << 6)
| ((in[4 + inpos]) << 8) | ((in[5 + inpos]) << 10)
| ((in[6 + inpos]) << 12) | ((in[7 + inpos]) << 14)
| ((in[8 + inpos]) << 16) | ((in[9 + inpos]) << 18)
| ((in[10 + inpos]) << 20) | ((in[11 + inpos]) << 22)
| ((in[12 + inpos]) << 24) | ((in[13 + inpos]) << 26)
| ((in[14 + inpos]) << 28) | ((in[15 + inpos]) << 30);
out[1 + outpos] = in[16 + inpos] | ((in[17 + inpos]) << 2)
| ((in[18 + inpos]) << 4) | ((in[19 + inpos]) << 6)
| ((in[20 + inpos]) << 8) | ((in[21 + inpos]) << 10)
| ((in[22 + inpos]) << 12) | ((in[23 + inpos]) << 14)
| ((in[24 + inpos]) << 16) | ((in[25 + inpos]) << 18)
| ((in[26 + inpos]) << 20) | ((in[27 + inpos]) << 22)
| ((in[28 + inpos]) << 24) | ((in[29 + inpos]) << 26)
| ((in[30 + inpos]) << 28) | ((in[31 + inpos]) << 30);
}
protected static void fastpackwithoutmask20(final int[] in, int inpos,
final int[] out, int outpos) {
out[0 + outpos] = in[0 + inpos] | ((in[1 + inpos]) << 20);
out[1 + outpos] = ((in[1 + inpos]) >>> (20 - 8))
| ((in[2 + inpos]) << 8) | ((in[3 + inpos]) << 28);
out[2 + outpos] = ((in[3 + inpos]) >>> (20 - 16))
| ((in[4 + inpos]) << 16);
out[3 + outpos] = ((in[4 + inpos]) >>> (20 - 4))
| ((in[5 + inpos]) << 4) | ((in[6 + inpos]) << 24);
out[4 + outpos] = ((in[6 + inpos]) >>> (20 - 12))
| ((in[7 + inpos]) << 12);
out[5 + outpos] = in[8 + inpos] | ((in[9 + inpos]) << 20);
out[6 + outpos] = ((in[9 + inpos]) >>> (20 - 8))
| ((in[10 + inpos]) << 8) | ((in[11 + inpos]) << 28);
out[7 + outpos] = ((in[11 + inpos]) >>> (20 - 16))
| ((in[12 + inpos]) << 16);
out[8 + outpos] = ((in[12 + inpos]) >>> (20 - 4))
| ((in[13 + inpos]) << 4) | ((in[14 + inpos]) << 24);
out[9 + outpos] = ((in[14 + inpos]) >>> (20 - 12))
| ((in[15 + inpos]) << 12);
out[10 + outpos] = in[16 + inpos] | ((in[17 + inpos]) << 20);
out[11 + outpos] = ((in[17 + inpos]) >>> (20 - 8))
| ((in[18 + inpos]) << 8) | ((in[19 + inpos]) << 28);
out[12 + outpos] = ((in[19 + inpos]) >>> (20 - 16))
| ((in[20 + inpos]) << 16);
out[13 + outpos] = ((in[20 + inpos]) >>> (20 - 4))
| ((in[21 + inpos]) << 4) | ((in[22 + inpos]) << 24);
out[14 + outpos] = ((in[22 + inpos]) >>> (20 - 12))
| ((in[23 + inpos]) << 12);
out[15 + outpos] = in[24 + inpos] | ((in[25 + inpos]) << 20);
out[16 + outpos] = ((in[25 + inpos]) >>> (20 - 8))
| ((in[26 + inpos]) << 8) | ((in[27 + inpos]) << 28);
out[17 + outpos] = ((in[27 + inpos]) >>> (20 - 16))
| ((in[28 + inpos]) << 16);
out[18 + outpos] = ((in[28 + inpos]) >>> (20 - 4))
| ((in[29 + inpos]) << 4) | ((in[30 + inpos]) << 24);
out[19 + outpos] = ((in[30 + inpos]) >>> (20 - 12))
| ((in[31 + inpos]) << 12);
}
protected static void fastpackwithoutmask21(final int[] in, int inpos,
final int[] out, int outpos) {
out[0 + outpos] = in[0 + inpos] | ((in[1 + inpos]) << 21);
out[1 + outpos] = ((in[1 + inpos]) >>> (21 - 10))
| ((in[2 + inpos]) << 10) | ((in[3 + inpos]) << 31);
out[2 + outpos] = ((in[3 + inpos]) >>> (21 - 20))
| ((in[4 + inpos]) << 20);
out[3 + outpos] = ((in[4 + inpos]) >>> (21 - 9))
| ((in[5 + inpos]) << 9) | ((in[6 + inpos]) << 30);
out[4 + outpos] = ((in[6 + inpos]) >>> (21 - 19))
| ((in[7 + inpos]) << 19);
out[5 + outpos] = ((in[7 + inpos]) >>> (21 - 8))
| ((in[8 + inpos]) << 8) | ((in[9 + inpos]) << 29);
out[6 + outpos] = ((in[9 + inpos]) >>> (21 - 18))
| ((in[10 + inpos]) << 18);
out[7 + outpos] = ((in[10 + inpos]) >>> (21 - 7))
| ((in[11 + inpos]) << 7) | ((in[12 + inpos]) << 28);
out[8 + outpos] = ((in[12 + inpos]) >>> (21 - 17))
| ((in[13 + inpos]) << 17);
out[9 + outpos] = ((in[13 + inpos]) >>> (21 - 6))
| ((in[14 + inpos]) << 6) | ((in[15 + inpos]) << 27);
out[10 + outpos] = ((in[15 + inpos]) >>> (21 - 16))
| ((in[16 + inpos]) << 16);
out[11 + outpos] = ((in[16 + inpos]) >>> (21 - 5))
| ((in[17 + inpos]) << 5) | ((in[18 + inpos]) << 26);
out[12 + outpos] = ((in[18 + inpos]) >>> (21 - 15))
| ((in[19 + inpos]) << 15);
out[13 + outpos] = ((in[19 + inpos]) >>> (21 - 4))
| ((in[20 + inpos]) << 4) | ((in[21 + inpos]) << 25);
out[14 + outpos] = ((in[21 + inpos]) >>> (21 - 14))
| ((in[22 + inpos]) << 14);
out[15 + outpos] = ((in[22 + inpos]) >>> (21 - 3))
| ((in[23 + inpos]) << 3) | ((in[24 + inpos]) << 24);
out[16 + outpos] = ((in[24 + inpos]) >>> (21 - 13))
| ((in[25 + inpos]) << 13);
out[17 + outpos] = ((in[25 + inpos]) >>> (21 - 2))
| ((in[26 + inpos]) << 2) | ((in[27 + inpos]) << 23);
out[18 + outpos] = ((in[27 + inpos]) >>> (21 - 12))
| ((in[28 + inpos]) << 12);
out[19 + outpos] = ((in[28 + inpos]) >>> (21 - 1))
| ((in[29 + inpos]) << 1) | ((in[30 + inpos]) << 22);
out[20 + outpos] = ((in[30 + inpos]) >>> (21 - 11))
| ((in[31 + inpos]) << 11);
}
protected static void fastpackwithoutmask22(final int[] in, int inpos,
final int[] out, int outpos) {
out[0 + outpos] = in[0 + inpos] | ((in[1 + inpos]) << 22);
out[1 + outpos] = ((in[1 + inpos]) >>> (22 - 12))
| ((in[2 + inpos]) << 12);
out[2 + outpos] = ((in[2 + inpos]) >>> (22 - 2))
| ((in[3 + inpos]) << 2) | ((in[4 + inpos]) << 24);
out[3 + outpos] = ((in[4 + inpos]) >>> (22 - 14))
| ((in[5 + inpos]) << 14);
out[4 + outpos] = ((in[5 + inpos]) >>> (22 - 4))
| ((in[6 + inpos]) << 4) | ((in[7 + inpos]) << 26);
out[5 + outpos] = ((in[7 + inpos]) >>> (22 - 16))
| ((in[8 + inpos]) << 16);
out[6 + outpos] = ((in[8 + inpos]) >>> (22 - 6))
| ((in[9 + inpos]) << 6) | ((in[10 + inpos]) << 28);
out[7 + outpos] = ((in[10 + inpos]) >>> (22 - 18))
| ((in[11 + inpos]) << 18);
out[8 + outpos] = ((in[11 + inpos]) >>> (22 - 8))
| ((in[12 + inpos]) << 8) | ((in[13 + inpos]) << 30);
out[9 + outpos] = ((in[13 + inpos]) >>> (22 - 20))
| ((in[14 + inpos]) << 20);
out[10 + outpos] = ((in[14 + inpos]) >>> (22 - 10))
| ((in[15 + inpos]) << 10);
out[11 + outpos] = in[16 + inpos] | ((in[17 + inpos]) << 22);
out[12 + outpos] = ((in[17 + inpos]) >>> (22 - 12))
| ((in[18 + inpos]) << 12);
out[13 + outpos] = ((in[18 + inpos]) >>> (22 - 2))
| ((in[19 + inpos]) << 2) | ((in[20 + inpos]) << 24);
out[14 + outpos] = ((in[20 + inpos]) >>> (22 - 14))
| ((in[21 + inpos]) << 14);
out[15 + outpos] = ((in[21 + inpos]) >>> (22 - 4))
| ((in[22 + inpos]) << 4) | ((in[23 + inpos]) << 26);
out[16 + outpos] = ((in[23 + inpos]) >>> (22 - 16))
| ((in[24 + inpos]) << 16);
out[17 + outpos] = ((in[24 + inpos]) >>> (22 - 6))
| ((in[25 + inpos]) << 6) | ((in[26 + inpos]) << 28);
out[18 + outpos] = ((in[26 + inpos]) >>> (22 - 18))
| ((in[27 + inpos]) << 18);
out[19 + outpos] = ((in[27 + inpos]) >>> (22 - 8))
| ((in[28 + inpos]) << 8) | ((in[29 + inpos]) << 30);
out[20 + outpos] = ((in[29 + inpos]) >>> (22 - 20))
| ((in[30 + inpos]) << 20);
out[21 + outpos] = ((in[30 + inpos]) >>> (22 - 10))
| ((in[31 + inpos]) << 10);
}
protected static void fastpackwithoutmask23(final int[] in, int inpos,
final int[] out, int outpos) {
out[0 + outpos] = in[0 + inpos] | ((in[1 + inpos]) << 23);
out[1 + outpos] = ((in[1 + inpos]) >>> (23 - 14))
| ((in[2 + inpos]) << 14);
out[2 + outpos] = ((in[2 + inpos]) >>> (23 - 5))
| ((in[3 + inpos]) << 5) | ((in[4 + inpos]) << 28);
out[3 + outpos] = ((in[4 + inpos]) >>> (23 - 19))
| ((in[5 + inpos]) << 19);
out[4 + outpos] = ((in[5 + inpos]) >>> (23 - 10))
| ((in[6 + inpos]) << 10);
out[5 + outpos] = ((in[6 + inpos]) >>> (23 - 1))
| ((in[7 + inpos]) << 1) | ((in[8 + inpos]) << 24);
out[6 + outpos] = ((in[8 + inpos]) >>> (23 - 15))
| ((in[9 + inpos]) << 15);
out[7 + outpos] = ((in[9 + inpos]) >>> (23 - 6))
| ((in[10 + inpos]) << 6) | ((in[11 + inpos]) << 29);
out[8 + outpos] = ((in[11 + inpos]) >>> (23 - 20))
| ((in[12 + inpos]) << 20);
out[9 + outpos] = ((in[12 + inpos]) >>> (23 - 11))
| ((in[13 + inpos]) << 11);
out[10 + outpos] = ((in[13 + inpos]) >>> (23 - 2))
| ((in[14 + inpos]) << 2) | ((in[15 + inpos]) << 25);
out[11 + outpos] = ((in[15 + inpos]) >>> (23 - 16))
| ((in[16 + inpos]) << 16);
out[12 + outpos] = ((in[16 + inpos]) >>> (23 - 7))
| ((in[17 + inpos]) << 7) | ((in[18 + inpos]) << 30);
out[13 + outpos] = ((in[18 + inpos]) >>> (23 - 21))
| ((in[19 + inpos]) << 21);
out[14 + outpos] = ((in[19 + inpos]) >>> (23 - 12))
| ((in[20 + inpos]) << 12);
out[15 + outpos] = ((in[20 + inpos]) >>> (23 - 3))
| ((in[21 + inpos]) << 3) | ((in[22 + inpos]) << 26);
out[16 + outpos] = ((in[22 + inpos]) >>> (23 - 17))
| ((in[23 + inpos]) << 17);
out[17 + outpos] = ((in[23 + inpos]) >>> (23 - 8))
| ((in[24 + inpos]) << 8) | ((in[25 + inpos]) << 31);
out[18 + outpos] = ((in[25 + inpos]) >>> (23 - 22))
| ((in[26 + inpos]) << 22);
out[19 + outpos] = ((in[26 + inpos]) >>> (23 - 13))
| ((in[27 + inpos]) << 13);
out[20 + outpos] = ((in[27 + inpos]) >>> (23 - 4))
| ((in[28 + inpos]) << 4) | ((in[29 + inpos]) << 27);
out[21 + outpos] = ((in[29 + inpos]) >>> (23 - 18))
| ((in[30 + inpos]) << 18);
out[22 + outpos] = ((in[30 + inpos]) >>> (23 - 9))
| ((in[31 + inpos]) << 9);
}
protected static void fastpackwithoutmask24(final int[] in, int inpos,
final int[] out, int outpos) {
out[0 + outpos] = in[0 + inpos] | ((in[1 + inpos]) << 24);
out[1 + outpos] = ((in[1 + inpos]) >>> (24 - 16))
| ((in[2 + inpos]) << 16);
out[2 + outpos] = ((in[2 + inpos]) >>> (24 - 8))
| ((in[3 + inpos]) << 8);
out[3 + outpos] = in[4 + inpos] | ((in[5 + inpos]) << 24);
out[4 + outpos] = ((in[5 + inpos]) >>> (24 - 16))
| ((in[6 + inpos]) << 16);
out[5 + outpos] = ((in[6 + inpos]) >>> (24 - 8))
| ((in[7 + inpos]) << 8);
out[6 + outpos] = in[8 + inpos] | ((in[9 + inpos]) << 24);
out[7 + outpos] = ((in[9 + inpos]) >>> (24 - 16))
| ((in[10 + inpos]) << 16);
out[8 + outpos] = ((in[10 + inpos]) >>> (24 - 8))
| ((in[11 + inpos]) << 8);
out[9 + outpos] = in[12 + inpos] | ((in[13 + inpos]) << 24);
out[10 + outpos] = ((in[13 + inpos]) >>> (24 - 16))
| ((in[14 + inpos]) << 16);
out[11 + outpos] = ((in[14 + inpos]) >>> (24 - 8))
| ((in[15 + inpos]) << 8);
out[12 + outpos] = in[16 + inpos] | ((in[17 + inpos]) << 24);
out[13 + outpos] = ((in[17 + inpos]) >>> (24 - 16))
| ((in[18 + inpos]) << 16);
out[14 + outpos] = ((in[18 + inpos]) >>> (24 - 8))
| ((in[19 + inpos]) << 8);
out[15 + outpos] = in[20 + inpos] | ((in[21 + inpos]) << 24);
out[16 + outpos] = ((in[21 + inpos]) >>> (24 - 16))
| ((in[22 + inpos]) << 16);
out[17 + outpos] = ((in[22 + inpos]) >>> (24 - 8))
| ((in[23 + inpos]) << 8);
out[18 + outpos] = in[24 + inpos] | ((in[25 + inpos]) << 24);
out[19 + outpos] = ((in[25 + inpos]) >>> (24 - 16))
| ((in[26 + inpos]) << 16);
out[20 + outpos] = ((in[26 + inpos]) >>> (24 - 8))
| ((in[27 + inpos]) << 8);
out[21 + outpos] = in[28 + inpos] | ((in[29 + inpos]) << 24);
out[22 + outpos] = ((in[29 + inpos]) >>> (24 - 16))
| ((in[30 + inpos]) << 16);
out[23 + outpos] = ((in[30 + inpos]) >>> (24 - 8))
| ((in[31 + inpos]) << 8);
}
protected static void fastpackwithoutmask25(final int[] in, int inpos,
final int[] out, int outpos) {
out[0 + outpos] = in[0 + inpos] | ((in[1 + inpos]) << 25);
out[1 + outpos] = ((in[1 + inpos]) >>> (25 - 18))
| ((in[2 + inpos]) << 18);
out[2 + outpos] = ((in[2 + inpos]) >>> (25 - 11))
| ((in[3 + inpos]) << 11);
out[3 + outpos] = ((in[3 + inpos]) >>> (25 - 4))
| ((in[4 + inpos]) << 4) | ((in[5 + inpos]) << 29);
out[4 + outpos] = ((in[5 + inpos]) >>> (25 - 22))
| ((in[6 + inpos]) << 22);
out[5 + outpos] = ((in[6 + inpos]) >>> (25 - 15))
| ((in[7 + inpos]) << 15);
out[6 + outpos] = ((in[7 + inpos]) >>> (25 - 8))
| ((in[8 + inpos]) << 8);
out[7 + outpos] = ((in[8 + inpos]) >>> (25 - 1))
| ((in[9 + inpos]) << 1) | ((in[10 + inpos]) << 26);
out[8 + outpos] = ((in[10 + inpos]) >>> (25 - 19))
| ((in[11 + inpos]) << 19);
out[9 + outpos] = ((in[11 + inpos]) >>> (25 - 12))
| ((in[12 + inpos]) << 12);
out[10 + outpos] = ((in[12 + inpos]) >>> (25 - 5))
| ((in[13 + inpos]) << 5) | ((in[14 + inpos]) << 30);
out[11 + outpos] = ((in[14 + inpos]) >>> (25 - 23))
| ((in[15 + inpos]) << 23);
out[12 + outpos] = ((in[15 + inpos]) >>> (25 - 16))
| ((in[16 + inpos]) << 16);
out[13 + outpos] = ((in[16 + inpos]) >>> (25 - 9))
| ((in[17 + inpos]) << 9);
out[14 + outpos] = ((in[17 + inpos]) >>> (25 - 2))
| ((in[18 + inpos]) << 2) | ((in[19 + inpos]) << 27);
out[15 + outpos] = ((in[19 + inpos]) >>> (25 - 20))
| ((in[20 + inpos]) << 20);
out[16 + outpos] = ((in[20 + inpos]) >>> (25 - 13))
| ((in[21 + inpos]) << 13);
out[17 + outpos] = ((in[21 + inpos]) >>> (25 - 6))
| ((in[22 + inpos]) << 6) | ((in[23 + inpos]) << 31);
out[18 + outpos] = ((in[23 + inpos]) >>> (25 - 24))
| ((in[24 + inpos]) << 24);
out[19 + outpos] = ((in[24 + inpos]) >>> (25 - 17))
| ((in[25 + inpos]) << 17);
out[20 + outpos] = ((in[25 + inpos]) >>> (25 - 10))
| ((in[26 + inpos]) << 10);
out[21 + outpos] = ((in[26 + inpos]) >>> (25 - 3))
| ((in[27 + inpos]) << 3) | ((in[28 + inpos]) << 28);
out[22 + outpos] = ((in[28 + inpos]) >>> (25 - 21))
| ((in[29 + inpos]) << 21);
out[23 + outpos] = ((in[29 + inpos]) >>> (25 - 14))
| ((in[30 + inpos]) << 14);
out[24 + outpos] = ((in[30 + inpos]) >>> (25 - 7))
| ((in[31 + inpos]) << 7);
}
protected static void fastpackwithoutmask26(final int[] in, int inpos,
final int[] out, int outpos) {
out[0 + outpos] = in[0 + inpos] | ((in[1 + inpos]) << 26);
out[1 + outpos] = ((in[1 + inpos]) >>> (26 - 20))
| ((in[2 + inpos]) << 20);
out[2 + outpos] = ((in[2 + inpos]) >>> (26 - 14))
| ((in[3 + inpos]) << 14);
out[3 + outpos] = ((in[3 + inpos]) >>> (26 - 8))
| ((in[4 + inpos]) << 8);
out[4 + outpos] = ((in[4 + inpos]) >>> (26 - 2))
| ((in[5 + inpos]) << 2) | ((in[6 + inpos]) << 28);
out[5 + outpos] = ((in[6 + inpos]) >>> (26 - 22))
| ((in[7 + inpos]) << 22);
out[6 + outpos] = ((in[7 + inpos]) >>> (26 - 16))
| ((in[8 + inpos]) << 16);
out[7 + outpos] = ((in[8 + inpos]) >>> (26 - 10))
| ((in[9 + inpos]) << 10);
out[8 + outpos] = ((in[9 + inpos]) >>> (26 - 4))
| ((in[10 + inpos]) << 4) | ((in[11 + inpos]) << 30);
out[9 + outpos] = ((in[11 + inpos]) >>> (26 - 24))
| ((in[12 + inpos]) << 24);
out[10 + outpos] = ((in[12 + inpos]) >>> (26 - 18))
| ((in[13 + inpos]) << 18);
out[11 + outpos] = ((in[13 + inpos]) >>> (26 - 12))
| ((in[14 + inpos]) << 12);
out[12 + outpos] = ((in[14 + inpos]) >>> (26 - 6))
| ((in[15 + inpos]) << 6);
out[13 + outpos] = in[16 + inpos] | ((in[17 + inpos]) << 26);
out[14 + outpos] = ((in[17 + inpos]) >>> (26 - 20))
| ((in[18 + inpos]) << 20);
out[15 + outpos] = ((in[18 + inpos]) >>> (26 - 14))
| ((in[19 + inpos]) << 14);
out[16 + outpos] = ((in[19 + inpos]) >>> (26 - 8))
| ((in[20 + inpos]) << 8);
out[17 + outpos] = ((in[20 + inpos]) >>> (26 - 2))
| ((in[21 + inpos]) << 2) | ((in[22 + inpos]) << 28);
out[18 + outpos] = ((in[22 + inpos]) >>> (26 - 22))
| ((in[23 + inpos]) << 22);
out[19 + outpos] = ((in[23 + inpos]) >>> (26 - 16))
| ((in[24 + inpos]) << 16);
out[20 + outpos] = ((in[24 + inpos]) >>> (26 - 10))
| ((in[25 + inpos]) << 10);
out[21 + outpos] = ((in[25 + inpos]) >>> (26 - 4))
| ((in[26 + inpos]) << 4) | ((in[27 + inpos]) << 30);
out[22 + outpos] = ((in[27 + inpos]) >>> (26 - 24))
| ((in[28 + inpos]) << 24);
out[23 + outpos] = ((in[28 + inpos]) >>> (26 - 18))
| ((in[29 + inpos]) << 18);
out[24 + outpos] = ((in[29 + inpos]) >>> (26 - 12))
| ((in[30 + inpos]) << 12);
out[25 + outpos] = ((in[30 + inpos]) >>> (26 - 6))
| ((in[31 + inpos]) << 6);
}
protected static void fastpackwithoutmask27(final int[] in, int inpos,
final int[] out, int outpos) {
out[0 + outpos] = in[0 + inpos] | ((in[1 + inpos]) << 27);
out[1 + outpos] = ((in[1 + inpos]) >>> (27 - 22))
| ((in[2 + inpos]) << 22);
out[2 + outpos] = ((in[2 + inpos]) >>> (27 - 17))
| ((in[3 + inpos]) << 17);
out[3 + outpos] = ((in[3 + inpos]) >>> (27 - 12))
| ((in[4 + inpos]) << 12);
out[4 + outpos] = ((in[4 + inpos]) >>> (27 - 7))
| ((in[5 + inpos]) << 7);
out[5 + outpos] = ((in[5 + inpos]) >>> (27 - 2))
| ((in[6 + inpos]) << 2) | ((in[7 + inpos]) << 29);
out[6 + outpos] = ((in[7 + inpos]) >>> (27 - 24))
| ((in[8 + inpos]) << 24);
out[7 + outpos] = ((in[8 + inpos]) >>> (27 - 19))
| ((in[9 + inpos]) << 19);
out[8 + outpos] = ((in[9 + inpos]) >>> (27 - 14))
| ((in[10 + inpos]) << 14);
out[9 + outpos] = ((in[10 + inpos]) >>> (27 - 9))
| ((in[11 + inpos]) << 9);
out[10 + outpos] = ((in[11 + inpos]) >>> (27 - 4))
| ((in[12 + inpos]) << 4) | ((in[13 + inpos]) << 31);
out[11 + outpos] = ((in[13 + inpos]) >>> (27 - 26))
| ((in[14 + inpos]) << 26);
out[12 + outpos] = ((in[14 + inpos]) >>> (27 - 21))
| ((in[15 + inpos]) << 21);
out[13 + outpos] = ((in[15 + inpos]) >>> (27 - 16))
| ((in[16 + inpos]) << 16);
out[14 + outpos] = ((in[16 + inpos]) >>> (27 - 11))
| ((in[17 + inpos]) << 11);
out[15 + outpos] = ((in[17 + inpos]) >>> (27 - 6))
| ((in[18 + inpos]) << 6);
out[16 + outpos] = ((in[18 + inpos]) >>> (27 - 1))
| ((in[19 + inpos]) << 1) | ((in[20 + inpos]) << 28);
out[17 + outpos] = ((in[20 + inpos]) >>> (27 - 23))
| ((in[21 + inpos]) << 23);
out[18 + outpos] = ((in[21 + inpos]) >>> (27 - 18))
| ((in[22 + inpos]) << 18);
out[19 + outpos] = ((in[22 + inpos]) >>> (27 - 13))
| ((in[23 + inpos]) << 13);
out[20 + outpos] = ((in[23 + inpos]) >>> (27 - 8))
| ((in[24 + inpos]) << 8);
out[21 + outpos] = ((in[24 + inpos]) >>> (27 - 3))
| ((in[25 + inpos]) << 3) | ((in[26 + inpos]) << 30);
out[22 + outpos] = ((in[26 + inpos]) >>> (27 - 25))
| ((in[27 + inpos]) << 25);
out[23 + outpos] = ((in[27 + inpos]) >>> (27 - 20))
| ((in[28 + inpos]) << 20);
out[24 + outpos] = ((in[28 + inpos]) >>> (27 - 15))
| ((in[29 + inpos]) << 15);
out[25 + outpos] = ((in[29 + inpos]) >>> (27 - 10))
| ((in[30 + inpos]) << 10);
out[26 + outpos] = ((in[30 + inpos]) >>> (27 - 5))
| ((in[31 + inpos]) << 5);
}
protected static void fastpackwithoutmask28(final int[] in, int inpos,
final int[] out, int outpos) {
out[0 + outpos] = in[0 + inpos] | ((in[1 + inpos]) << 28);
out[1 + outpos] = ((in[1 + inpos]) >>> (28 - 24))
| ((in[2 + inpos]) << 24);
out[2 + outpos] = ((in[2 + inpos]) >>> (28 - 20))
| ((in[3 + inpos]) << 20);
out[3 + outpos] = ((in[3 + inpos]) >>> (28 - 16))
| ((in[4 + inpos]) << 16);
out[4 + outpos] = ((in[4 + inpos]) >>> (28 - 12))
| ((in[5 + inpos]) << 12);
out[5 + outpos] = ((in[5 + inpos]) >>> (28 - 8))
| ((in[6 + inpos]) << 8);
out[6 + outpos] = ((in[6 + inpos]) >>> (28 - 4))
| ((in[7 + inpos]) << 4);
out[7 + outpos] = in[8 + inpos] | ((in[9 + inpos]) << 28);
out[8 + outpos] = ((in[9 + inpos]) >>> (28 - 24))
| ((in[10 + inpos]) << 24);
out[9 + outpos] = ((in[10 + inpos]) >>> (28 - 20))
| ((in[11 + inpos]) << 20);
out[10 + outpos] = ((in[11 + inpos]) >>> (28 - 16))
| ((in[12 + inpos]) << 16);
out[11 + outpos] = ((in[12 + inpos]) >>> (28 - 12))
| ((in[13 + inpos]) << 12);
out[12 + outpos] = ((in[13 + inpos]) >>> (28 - 8))
| ((in[14 + inpos]) << 8);
out[13 + outpos] = ((in[14 + inpos]) >>> (28 - 4))
| ((in[15 + inpos]) << 4);
out[14 + outpos] = in[16 + inpos] | ((in[17 + inpos]) << 28);
out[15 + outpos] = ((in[17 + inpos]) >>> (28 - 24))
| ((in[18 + inpos]) << 24);
out[16 + outpos] = ((in[18 + inpos]) >>> (28 - 20))
| ((in[19 + inpos]) << 20);
out[17 + outpos] = ((in[19 + inpos]) >>> (28 - 16))
| ((in[20 + inpos]) << 16);
out[18 + outpos] = ((in[20 + inpos]) >>> (28 - 12))
| ((in[21 + inpos]) << 12);
out[19 + outpos] = ((in[21 + inpos]) >>> (28 - 8))
| ((in[22 + inpos]) << 8);
out[20 + outpos] = ((in[22 + inpos]) >>> (28 - 4))
| ((in[23 + inpos]) << 4);
out[21 + outpos] = in[24 + inpos] | ((in[25 + inpos]) << 28);
out[22 + outpos] = ((in[25 + inpos]) >>> (28 - 24))
| ((in[26 + inpos]) << 24);
out[23 + outpos] = ((in[26 + inpos]) >>> (28 - 20))
| ((in[27 + inpos]) << 20);
out[24 + outpos] = ((in[27 + inpos]) >>> (28 - 16))
| ((in[28 + inpos]) << 16);
out[25 + outpos] = ((in[28 + inpos]) >>> (28 - 12))
| ((in[29 + inpos]) << 12);
out[26 + outpos] = ((in[29 + inpos]) >>> (28 - 8))
| ((in[30 + inpos]) << 8);
out[27 + outpos] = ((in[30 + inpos]) >>> (28 - 4))
| ((in[31 + inpos]) << 4);
}
protected static void fastpackwithoutmask29(final int[] in, int inpos,
final int[] out, int outpos) {
out[0 + outpos] = in[0 + inpos] | ((in[1 + inpos]) << 29);
out[1 + outpos] = ((in[1 + inpos]) >>> (29 - 26))
| ((in[2 + inpos]) << 26);
out[2 + outpos] = ((in[2 + inpos]) >>> (29 - 23))
| ((in[3 + inpos]) << 23);
out[3 + outpos] = ((in[3 + inpos]) >>> (29 - 20))
| ((in[4 + inpos]) << 20);
out[4 + outpos] = ((in[4 + inpos]) >>> (29 - 17))
| ((in[5 + inpos]) << 17);
out[5 + outpos] = ((in[5 + inpos]) >>> (29 - 14))
| ((in[6 + inpos]) << 14);
out[6 + outpos] = ((in[6 + inpos]) >>> (29 - 11))
| ((in[7 + inpos]) << 11);
out[7 + outpos] = ((in[7 + inpos]) >>> (29 - 8))
| ((in[8 + inpos]) << 8);
out[8 + outpos] = ((in[8 + inpos]) >>> (29 - 5))
| ((in[9 + inpos]) << 5);
out[9 + outpos] = ((in[9 + inpos]) >>> (29 - 2))
| ((in[10 + inpos]) << 2) | ((in[11 + inpos]) << 31);
out[10 + outpos] = ((in[11 + inpos]) >>> (29 - 28))
| ((in[12 + inpos]) << 28);
out[11 + outpos] = ((in[12 + inpos]) >>> (29 - 25))
| ((in[13 + inpos]) << 25);
out[12 + outpos] = ((in[13 + inpos]) >>> (29 - 22))
| ((in[14 + inpos]) << 22);
out[13 + outpos] = ((in[14 + inpos]) >>> (29 - 19))
| ((in[15 + inpos]) << 19);
out[14 + outpos] = ((in[15 + inpos]) >>> (29 - 16))
| ((in[16 + inpos]) << 16);
out[15 + outpos] = ((in[16 + inpos]) >>> (29 - 13))
| ((in[17 + inpos]) << 13);
out[16 + outpos] = ((in[17 + inpos]) >>> (29 - 10))
| ((in[18 + inpos]) << 10);
out[17 + outpos] = ((in[18 + inpos]) >>> (29 - 7))
| ((in[19 + inpos]) << 7);
out[18 + outpos] = ((in[19 + inpos]) >>> (29 - 4))
| ((in[20 + inpos]) << 4);
out[19 + outpos] = ((in[20 + inpos]) >>> (29 - 1))
| ((in[21 + inpos]) << 1) | ((in[22 + inpos]) << 30);
out[20 + outpos] = ((in[22 + inpos]) >>> (29 - 27))
| ((in[23 + inpos]) << 27);
out[21 + outpos] = ((in[23 + inpos]) >>> (29 - 24))
| ((in[24 + inpos]) << 24);
out[22 + outpos] = ((in[24 + inpos]) >>> (29 - 21))
| ((in[25 + inpos]) << 21);
out[23 + outpos] = ((in[25 + inpos]) >>> (29 - 18))
| ((in[26 + inpos]) << 18);
out[24 + outpos] = ((in[26 + inpos]) >>> (29 - 15))
| ((in[27 + inpos]) << 15);
out[25 + outpos] = ((in[27 + inpos]) >>> (29 - 12))
| ((in[28 + inpos]) << 12);
out[26 + outpos] = ((in[28 + inpos]) >>> (29 - 9))
| ((in[29 + inpos]) << 9);
out[27 + outpos] = ((in[29 + inpos]) >>> (29 - 6))
| ((in[30 + inpos]) << 6);
out[28 + outpos] = ((in[30 + inpos]) >>> (29 - 3))
| ((in[31 + inpos]) << 3);
}
protected static void fastpackwithoutmask3(final int[] in, int inpos,
final int[] out, int outpos) {
out[0 + outpos] = in[0 + inpos] | ((in[1 + inpos]) << 3)
| ((in[2 + inpos]) << 6) | ((in[3 + inpos]) << 9)
| ((in[4 + inpos]) << 12) | ((in[5 + inpos]) << 15)
| ((in[6 + inpos]) << 18) | ((in[7 + inpos]) << 21)
| ((in[8 + inpos]) << 24) | ((in[9 + inpos]) << 27)
| ((in[10 + inpos]) << 30);
out[1 + outpos] = ((in[10 + inpos]) >>> (3 - 1))
| ((in[11 + inpos]) << 1) | ((in[12 + inpos]) << 4)
| ((in[13 + inpos]) << 7) | ((in[14 + inpos]) << 10)
| ((in[15 + inpos]) << 13) | ((in[16 + inpos]) << 16)
| ((in[17 + inpos]) << 19) | ((in[18 + inpos]) << 22)
| ((in[19 + inpos]) << 25) | ((in[20 + inpos]) << 28)
| ((in[21 + inpos]) << 31);
out[2 + outpos] = ((in[21 + inpos]) >>> (3 - 2))
| ((in[22 + inpos]) << 2) | ((in[23 + inpos]) << 5)
| ((in[24 + inpos]) << 8) | ((in[25 + inpos]) << 11)
| ((in[26 + inpos]) << 14) | ((in[27 + inpos]) << 17)
| ((in[28 + inpos]) << 20) | ((in[29 + inpos]) << 23)
| ((in[30 + inpos]) << 26) | ((in[31 + inpos]) << 29);
}
protected static void fastpackwithoutmask30(final int[] in, int inpos,
final int[] out, int outpos) {
out[0 + outpos] = in[0 + inpos] | ((in[1 + inpos]) << 30);
out[1 + outpos] = ((in[1 + inpos]) >>> (30 - 28))
| ((in[2 + inpos]) << 28);
out[2 + outpos] = ((in[2 + inpos]) >>> (30 - 26))
| ((in[3 + inpos]) << 26);
out[3 + outpos] = ((in[3 + inpos]) >>> (30 - 24))
| ((in[4 + inpos]) << 24);
out[4 + outpos] = ((in[4 + inpos]) >>> (30 - 22))
| ((in[5 + inpos]) << 22);
out[5 + outpos] = ((in[5 + inpos]) >>> (30 - 20))
| ((in[6 + inpos]) << 20);
out[6 + outpos] = ((in[6 + inpos]) >>> (30 - 18))
| ((in[7 + inpos]) << 18);
out[7 + outpos] = ((in[7 + inpos]) >>> (30 - 16))
| ((in[8 + inpos]) << 16);
out[8 + outpos] = ((in[8 + inpos]) >>> (30 - 14))
| ((in[9 + inpos]) << 14);
out[9 + outpos] = ((in[9 + inpos]) >>> (30 - 12))
| ((in[10 + inpos]) << 12);
out[10 + outpos] = ((in[10 + inpos]) >>> (30 - 10))
| ((in[11 + inpos]) << 10);
out[11 + outpos] = ((in[11 + inpos]) >>> (30 - 8))
| ((in[12 + inpos]) << 8);
out[12 + outpos] = ((in[12 + inpos]) >>> (30 - 6))
| ((in[13 + inpos]) << 6);
out[13 + outpos] = ((in[13 + inpos]) >>> (30 - 4))
| ((in[14 + inpos]) << 4);
out[14 + outpos] = ((in[14 + inpos]) >>> (30 - 2))
| ((in[15 + inpos]) << 2);
out[15 + outpos] = in[16 + inpos] | ((in[17 + inpos]) << 30);
out[16 + outpos] = ((in[17 + inpos]) >>> (30 - 28))
| ((in[18 + inpos]) << 28);
out[17 + outpos] = ((in[18 + inpos]) >>> (30 - 26))
| ((in[19 + inpos]) << 26);
out[18 + outpos] = ((in[19 + inpos]) >>> (30 - 24))
| ((in[20 + inpos]) << 24);
out[19 + outpos] = ((in[20 + inpos]) >>> (30 - 22))
| ((in[21 + inpos]) << 22);
out[20 + outpos] = ((in[21 + inpos]) >>> (30 - 20))
| ((in[22 + inpos]) << 20);
out[21 + outpos] = ((in[22 + inpos]) >>> (30 - 18))
| ((in[23 + inpos]) << 18);
out[22 + outpos] = ((in[23 + inpos]) >>> (30 - 16))
| ((in[24 + inpos]) << 16);
out[23 + outpos] = ((in[24 + inpos]) >>> (30 - 14))
| ((in[25 + inpos]) << 14);
out[24 + outpos] = ((in[25 + inpos]) >>> (30 - 12))
| ((in[26 + inpos]) << 12);
out[25 + outpos] = ((in[26 + inpos]) >>> (30 - 10))
| ((in[27 + inpos]) << 10);
out[26 + outpos] = ((in[27 + inpos]) >>> (30 - 8))
| ((in[28 + inpos]) << 8);
out[27 + outpos] = ((in[28 + inpos]) >>> (30 - 6))
| ((in[29 + inpos]) << 6);
out[28 + outpos] = ((in[29 + inpos]) >>> (30 - 4))
| ((in[30 + inpos]) << 4);
out[29 + outpos] = ((in[30 + inpos]) >>> (30 - 2))
| ((in[31 + inpos]) << 2);
}
protected static void fastpackwithoutmask31(final int[] in, int inpos,
final int[] out, int outpos) {
out[0 + outpos] = in[0 + inpos] | ((in[1 + inpos]) << 31);
out[1 + outpos] = ((in[1 + inpos]) >>> (31 - 30))
| ((in[2 + inpos]) << 30);
out[2 + outpos] = ((in[2 + inpos]) >>> (31 - 29))
| ((in[3 + inpos]) << 29);
out[3 + outpos] = ((in[3 + inpos]) >>> (31 - 28))
| ((in[4 + inpos]) << 28);
out[4 + outpos] = ((in[4 + inpos]) >>> (31 - 27))
| ((in[5 + inpos]) << 27);
out[5 + outpos] = ((in[5 + inpos]) >>> (31 - 26))
| ((in[6 + inpos]) << 26);
out[6 + outpos] = ((in[6 + inpos]) >>> (31 - 25))
| ((in[7 + inpos]) << 25);
out[7 + outpos] = ((in[7 + inpos]) >>> (31 - 24))
| ((in[8 + inpos]) << 24);
out[8 + outpos] = ((in[8 + inpos]) >>> (31 - 23))
| ((in[9 + inpos]) << 23);
out[9 + outpos] = ((in[9 + inpos]) >>> (31 - 22))
| ((in[10 + inpos]) << 22);
out[10 + outpos] = ((in[10 + inpos]) >>> (31 - 21))
| ((in[11 + inpos]) << 21);
out[11 + outpos] = ((in[11 + inpos]) >>> (31 - 20))
| ((in[12 + inpos]) << 20);
out[12 + outpos] = ((in[12 + inpos]) >>> (31 - 19))
| ((in[13 + inpos]) << 19);
out[13 + outpos] = ((in[13 + inpos]) >>> (31 - 18))
| ((in[14 + inpos]) << 18);
out[14 + outpos] = ((in[14 + inpos]) >>> (31 - 17))
| ((in[15 + inpos]) << 17);
out[15 + outpos] = ((in[15 + inpos]) >>> (31 - 16))
| ((in[16 + inpos]) << 16);
out[16 + outpos] = ((in[16 + inpos]) >>> (31 - 15))
| ((in[17 + inpos]) << 15);
out[17 + outpos] = ((in[17 + inpos]) >>> (31 - 14))
| ((in[18 + inpos]) << 14);
out[18 + outpos] = ((in[18 + inpos]) >>> (31 - 13))
| ((in[19 + inpos]) << 13);
out[19 + outpos] = ((in[19 + inpos]) >>> (31 - 12))
| ((in[20 + inpos]) << 12);
out[20 + outpos] = ((in[20 + inpos]) >>> (31 - 11))
| ((in[21 + inpos]) << 11);
out[21 + outpos] = ((in[21 + inpos]) >>> (31 - 10))
| ((in[22 + inpos]) << 10);
out[22 + outpos] = ((in[22 + inpos]) >>> (31 - 9))
| ((in[23 + inpos]) << 9);
out[23 + outpos] = ((in[23 + inpos]) >>> (31 - 8))
| ((in[24 + inpos]) << 8);
out[24 + outpos] = ((in[24 + inpos]) >>> (31 - 7))
| ((in[25 + inpos]) << 7);
out[25 + outpos] = ((in[25 + inpos]) >>> (31 - 6))
| ((in[26 + inpos]) << 6);
out[26 + outpos] = ((in[26 + inpos]) >>> (31 - 5))
| ((in[27 + inpos]) << 5);
out[27 + outpos] = ((in[27 + inpos]) >>> (31 - 4))
| ((in[28 + inpos]) << 4);
out[28 + outpos] = ((in[28 + inpos]) >>> (31 - 3))
| ((in[29 + inpos]) << 3);
out[29 + outpos] = ((in[29 + inpos]) >>> (31 - 2))
| ((in[30 + inpos]) << 2);
out[30 + outpos] = ((in[30 + inpos]) >>> (31 - 1))
| ((in[31 + inpos]) << 1);
}
protected static void fastpackwithoutmask32(final int[] in, int inpos,
final int[] out, int outpos) {
System.arraycopy(in, inpos, out, outpos, 32);
}
protected static void fastpackwithoutmask4(final int[] in, int inpos,
final int[] out, int outpos) {
out[0 + outpos] = in[0 + inpos] | ((in[1 + inpos]) << 4)
| ((in[2 + inpos]) << 8) | ((in[3 + inpos]) << 12)
| ((in[4 + inpos]) << 16) | ((in[5 + inpos]) << 20)
| ((in[6 + inpos]) << 24) | ((in[7 + inpos]) << 28);
out[1 + outpos] = in[8 + inpos] | ((in[9 + inpos]) << 4)
| ((in[10 + inpos]) << 8) | ((in[11 + inpos]) << 12)
| ((in[12 + inpos]) << 16) | ((in[13 + inpos]) << 20)
| ((in[14 + inpos]) << 24) | ((in[15 + inpos]) << 28);
out[2 + outpos] = in[16 + inpos] | ((in[17 + inpos]) << 4)
| ((in[18 + inpos]) << 8) | ((in[19 + inpos]) << 12)
| ((in[20 + inpos]) << 16) | ((in[21 + inpos]) << 20)
| ((in[22 + inpos]) << 24) | ((in[23 + inpos]) << 28);
out[3 + outpos] = in[24 + inpos] | ((in[25 + inpos]) << 4)
| ((in[26 + inpos]) << 8) | ((in[27 + inpos]) << 12)
| ((in[28 + inpos]) << 16) | ((in[29 + inpos]) << 20)
| ((in[30 + inpos]) << 24) | ((in[31 + inpos]) << 28);
}
protected static void fastpackwithoutmask5(final int[] in, int inpos,
final int[] out, int outpos) {
out[0 + outpos] = in[0 + inpos] | ((in[1 + inpos]) << 5)
| ((in[2 + inpos]) << 10) | ((in[3 + inpos]) << 15)
| ((in[4 + inpos]) << 20) | ((in[5 + inpos]) << 25)
| ((in[6 + inpos]) << 30);
out[1 + outpos] = ((in[6 + inpos]) >>> (5 - 3))
| ((in[7 + inpos]) << 3) | ((in[8 + inpos]) << 8)
| ((in[9 + inpos]) << 13) | ((in[10 + inpos]) << 18)
| ((in[11 + inpos]) << 23) | ((in[12 + inpos]) << 28);
out[2 + outpos] = ((in[12 + inpos]) >>> (5 - 1))
| ((in[13 + inpos]) << 1) | ((in[14 + inpos]) << 6)
| ((in[15 + inpos]) << 11) | ((in[16 + inpos]) << 16)
| ((in[17 + inpos]) << 21) | ((in[18 + inpos]) << 26)
| ((in[19 + inpos]) << 31);
out[3 + outpos] = ((in[19 + inpos]) >>> (5 - 4))
| ((in[20 + inpos]) << 4) | ((in[21 + inpos]) << 9)
| ((in[22 + inpos]) << 14) | ((in[23 + inpos]) << 19)
| ((in[24 + inpos]) << 24) | ((in[25 + inpos]) << 29);
out[4 + outpos] = ((in[25 + inpos]) >>> (5 - 2))
| ((in[26 + inpos]) << 2) | ((in[27 + inpos]) << 7)
| ((in[28 + inpos]) << 12) | ((in[29 + inpos]) << 17)
| ((in[30 + inpos]) << 22) | ((in[31 + inpos]) << 27);
}
protected static void fastpackwithoutmask6(final int[] in, int inpos,
final int[] out, int outpos) {
out[0 + outpos] = in[0 + inpos] | ((in[1 + inpos]) << 6)
| ((in[2 + inpos]) << 12) | ((in[3 + inpos]) << 18)
| ((in[4 + inpos]) << 24) | ((in[5 + inpos]) << 30);
out[1 + outpos] = ((in[5 + inpos]) >>> (6 - 4))
| ((in[6 + inpos]) << 4) | ((in[7 + inpos]) << 10)
| ((in[8 + inpos]) << 16) | ((in[9 + inpos]) << 22)
| ((in[10 + inpos]) << 28);
out[2 + outpos] = ((in[10 + inpos]) >>> (6 - 2))
| ((in[11 + inpos]) << 2) | ((in[12 + inpos]) << 8)
| ((in[13 + inpos]) << 14) | ((in[14 + inpos]) << 20)
| ((in[15 + inpos]) << 26);
out[3 + outpos] = in[16 + inpos] | ((in[17 + inpos]) << 6)
| ((in[18 + inpos]) << 12) | ((in[19 + inpos]) << 18)
| ((in[20 + inpos]) << 24) | ((in[21 + inpos]) << 30);
out[4 + outpos] = ((in[21 + inpos]) >>> (6 - 4))
| ((in[22 + inpos]) << 4) | ((in[23 + inpos]) << 10)
| ((in[24 + inpos]) << 16) | ((in[25 + inpos]) << 22)
| ((in[26 + inpos]) << 28);
out[5 + outpos] = ((in[26 + inpos]) >>> (6 - 2))
| ((in[27 + inpos]) << 2) | ((in[28 + inpos]) << 8)
| ((in[29 + inpos]) << 14) | ((in[30 + inpos]) << 20)
| ((in[31 + inpos]) << 26);
}
protected static void fastpackwithoutmask7(final int[] in, int inpos,
final int[] out, int outpos) {
out[0 + outpos] = in[0 + inpos] | ((in[1 + inpos]) << 7)
| ((in[2 + inpos]) << 14) | ((in[3 + inpos]) << 21)
| ((in[4 + inpos]) << 28);
out[1 + outpos] = ((in[4 + inpos]) >>> (7 - 3))
| ((in[5 + inpos]) << 3) | ((in[6 + inpos]) << 10)
| ((in[7 + inpos]) << 17) | ((in[8 + inpos]) << 24)
| ((in[9 + inpos]) << 31);
out[2 + outpos] = ((in[9 + inpos]) >>> (7 - 6))
| ((in[10 + inpos]) << 6) | ((in[11 + inpos]) << 13)
| ((in[12 + inpos]) << 20) | ((in[13 + inpos]) << 27);
out[3 + outpos] = ((in[13 + inpos]) >>> (7 - 2))
| ((in[14 + inpos]) << 2) | ((in[15 + inpos]) << 9)
| ((in[16 + inpos]) << 16) | ((in[17 + inpos]) << 23)
| ((in[18 + inpos]) << 30);
out[4 + outpos] = ((in[18 + inpos]) >>> (7 - 5))
| ((in[19 + inpos]) << 5) | ((in[20 + inpos]) << 12)
| ((in[21 + inpos]) << 19) | ((in[22 + inpos]) << 26);
out[5 + outpos] = ((in[22 + inpos]) >>> (7 - 1))
| ((in[23 + inpos]) << 1) | ((in[24 + inpos]) << 8)
| ((in[25 + inpos]) << 15) | ((in[26 + inpos]) << 22)
| ((in[27 + inpos]) << 29);
out[6 + outpos] = ((in[27 + inpos]) >>> (7 - 4))
| ((in[28 + inpos]) << 4) | ((in[29 + inpos]) << 11)
| ((in[30 + inpos]) << 18) | ((in[31 + inpos]) << 25);
}
protected static void fastpackwithoutmask8(final int[] in, int inpos,
final int[] out, int outpos) {
out[0 + outpos] = in[0 + inpos] | ((in[1 + inpos]) << 8)
| ((in[2 + inpos]) << 16) | ((in[3 + inpos]) << 24);
out[1 + outpos] = in[4 + inpos] | ((in[5 + inpos]) << 8)
| ((in[6 + inpos]) << 16) | ((in[7 + inpos]) << 24);
out[2 + outpos] = in[8 + inpos] | ((in[9 + inpos]) << 8)
| ((in[10 + inpos]) << 16) | ((in[11 + inpos]) << 24);
out[3 + outpos] = in[12 + inpos] | ((in[13 + inpos]) << 8)
| ((in[14 + inpos]) << 16) | ((in[15 + inpos]) << 24);
out[4 + outpos] = in[16 + inpos] | ((in[17 + inpos]) << 8)
| ((in[18 + inpos]) << 16) | ((in[19 + inpos]) << 24);
out[5 + outpos] = in[20 + inpos] | ((in[21 + inpos]) << 8)
| ((in[22 + inpos]) << 16) | ((in[23 + inpos]) << 24);
out[6 + outpos] = in[24 + inpos] | ((in[25 + inpos]) << 8)
| ((in[26 + inpos]) << 16) | ((in[27 + inpos]) << 24);
out[7 + outpos] = in[28 + inpos] | ((in[29 + inpos]) << 8)
| ((in[30 + inpos]) << 16) | ((in[31 + inpos]) << 24);
}
protected static void fastpackwithoutmask9(final int[] in, int inpos,
final int[] out, int outpos) {
out[0 + outpos] = in[0 + inpos] | ((in[1 + inpos]) << 9)
| ((in[2 + inpos]) << 18) | ((in[3 + inpos]) << 27);
out[1 + outpos] = ((in[3 + inpos]) >>> (9 - 4))
| ((in[4 + inpos]) << 4) | ((in[5 + inpos]) << 13)
| ((in[6 + inpos]) << 22) | ((in[7 + inpos]) << 31);
out[2 + outpos] = ((in[7 + inpos]) >>> (9 - 8))
| ((in[8 + inpos]) << 8) | ((in[9 + inpos]) << 17)
| ((in[10 + inpos]) << 26);
out[3 + outpos] = ((in[10 + inpos]) >>> (9 - 3))
| ((in[11 + inpos]) << 3) | ((in[12 + inpos]) << 12)
| ((in[13 + inpos]) << 21) | ((in[14 + inpos]) << 30);
out[4 + outpos] = ((in[14 + inpos]) >>> (9 - 7))
| ((in[15 + inpos]) << 7) | ((in[16 + inpos]) << 16)
| ((in[17 + inpos]) << 25);
out[5 + outpos] = ((in[17 + inpos]) >>> (9 - 2))
| ((in[18 + inpos]) << 2) | ((in[19 + inpos]) << 11)
| ((in[20 + inpos]) << 20) | ((in[21 + inpos]) << 29);
out[6 + outpos] = ((in[21 + inpos]) >>> (9 - 6))
| ((in[22 + inpos]) << 6) | ((in[23 + inpos]) << 15)
| ((in[24 + inpos]) << 24);
out[7 + outpos] = ((in[24 + inpos]) >>> (9 - 1))
| ((in[25 + inpos]) << 1) | ((in[26 + inpos]) << 10)
| ((in[27 + inpos]) << 19) | ((in[28 + inpos]) << 28);
out[8 + outpos] = ((in[28 + inpos]) >>> (9 - 5))
| ((in[29 + inpos]) << 5) | ((in[30 + inpos]) << 14)
| ((in[31 + inpos]) << 23);
}
/**
* Pack the 32 integers
*
* @param in
* source array
* @param inpos
* starting point in the source array
* @param out
* output array
* @param outpos
* starting point in the output array
* @param bit
* how many bits to use per integer
*/
public static void fastunpack(final int[] in, final int inpos,
final int[] out, final int outpos, final int bit) {
switch (bit) {
case 0:
fastunpack0(in, inpos, out, outpos);
break;
case 1:
fastunpack1(in, inpos, out, outpos);
break;
case 2:
fastunpack2(in, inpos, out, outpos);
break;
case 3:
fastunpack3(in, inpos, out, outpos);
break;
case 4:
fastunpack4(in, inpos, out, outpos);
break;
case 5:
fastunpack5(in, inpos, out, outpos);
break;
case 6:
fastunpack6(in, inpos, out, outpos);
break;
case 7:
fastunpack7(in, inpos, out, outpos);
break;
case 8:
fastunpack8(in, inpos, out, outpos);
break;
case 9:
fastunpack9(in, inpos, out, outpos);
break;
case 10:
fastunpack10(in, inpos, out, outpos);
break;
case 11:
fastunpack11(in, inpos, out, outpos);
break;
case 12:
fastunpack12(in, inpos, out, outpos);
break;
case 13:
fastunpack13(in, inpos, out, outpos);
break;
case 14:
fastunpack14(in, inpos, out, outpos);
break;
case 15:
fastunpack15(in, inpos, out, outpos);
break;
case 16:
fastunpack16(in, inpos, out, outpos);
break;
case 17:
fastunpack17(in, inpos, out, outpos);
break;
case 18:
fastunpack18(in, inpos, out, outpos);
break;
case 19:
fastunpack19(in, inpos, out, outpos);
break;
case 20:
fastunpack20(in, inpos, out, outpos);
break;
case 21:
fastunpack21(in, inpos, out, outpos);
break;
case 22:
fastunpack22(in, inpos, out, outpos);
break;
case 23:
fastunpack23(in, inpos, out, outpos);
break;
case 24:
fastunpack24(in, inpos, out, outpos);
break;
case 25:
fastunpack25(in, inpos, out, outpos);
break;
case 26:
fastunpack26(in, inpos, out, outpos);
break;
case 27:
fastunpack27(in, inpos, out, outpos);
break;
case 28:
fastunpack28(in, inpos, out, outpos);
break;
case 29:
fastunpack29(in, inpos, out, outpos);
break;
case 30:
fastunpack30(in, inpos, out, outpos);
break;
case 31:
fastunpack31(in, inpos, out, outpos);
break;
case 32:
fastunpack32(in, inpos, out, outpos);
break;
default:
throw new IllegalArgumentException(
"Unsupported bit width.");
}
}
protected static void fastunpack0(final int[] in, int inpos,
final int[] out, int outpos) {
Arrays.fill(out, outpos, outpos + 32, 0);
}
protected static void fastunpack1(final int[] in, int inpos,
final int[] out, int outpos) {
out[0 + outpos] = ((in[0 + inpos] >>> 0) & 1);
out[1 + outpos] = ((in[0 + inpos] >>> 1) & 1);
out[2 + outpos] = ((in[0 + inpos] >>> 2) & 1);
out[3 + outpos] = ((in[0 + inpos] >>> 3) & 1);
out[4 + outpos] = ((in[0 + inpos] >>> 4) & 1);
out[5 + outpos] = ((in[0 + inpos] >>> 5) & 1);
out[6 + outpos] = ((in[0 + inpos] >>> 6) & 1);
out[7 + outpos] = ((in[0 + inpos] >>> 7) & 1);
out[8 + outpos] = ((in[0 + inpos] >>> 8) & 1);
out[9 + outpos] = ((in[0 + inpos] >>> 9) & 1);
out[10 + outpos] = ((in[0 + inpos] >>> 10) & 1);
out[11 + outpos] = ((in[0 + inpos] >>> 11) & 1);
out[12 + outpos] = ((in[0 + inpos] >>> 12) & 1);
out[13 + outpos] = ((in[0 + inpos] >>> 13) & 1);
out[14 + outpos] = ((in[0 + inpos] >>> 14) & 1);
out[15 + outpos] = ((in[0 + inpos] >>> 15) & 1);
out[16 + outpos] = ((in[0 + inpos] >>> 16) & 1);
out[17 + outpos] = ((in[0 + inpos] >>> 17) & 1);
out[18 + outpos] = ((in[0 + inpos] >>> 18) & 1);
out[19 + outpos] = ((in[0 + inpos] >>> 19) & 1);
out[20 + outpos] = ((in[0 + inpos] >>> 20) & 1);
out[21 + outpos] = ((in[0 + inpos] >>> 21) & 1);
out[22 + outpos] = ((in[0 + inpos] >>> 22) & 1);
out[23 + outpos] = ((in[0 + inpos] >>> 23) & 1);
out[24 + outpos] = ((in[0 + inpos] >>> 24) & 1);
out[25 + outpos] = ((in[0 + inpos] >>> 25) & 1);
out[26 + outpos] = ((in[0 + inpos] >>> 26) & 1);
out[27 + outpos] = ((in[0 + inpos] >>> 27) & 1);
out[28 + outpos] = ((in[0 + inpos] >>> 28) & 1);
out[29 + outpos] = ((in[0 + inpos] >>> 29) & 1);
out[30 + outpos] = ((in[0 + inpos] >>> 30) & 1);
out[31 + outpos] = (in[0 + inpos] >>> 31);
}
protected static void fastunpack10(final int[] in, int inpos,
final int[] out, int outpos) {
out[0 + outpos] = ((in[0 + inpos] >>> 0) & 1023);
out[1 + outpos] = ((in[0 + inpos] >>> 10) & 1023);
out[2 + outpos] = ((in[0 + inpos] >>> 20) & 1023);
out[3 + outpos] = (in[0 + inpos] >>> 30)
| ((in[1 + inpos] & 255) << (10 - 8));
out[4 + outpos] = ((in[1 + inpos] >>> 8) & 1023);
out[5 + outpos] = ((in[1 + inpos] >>> 18) & 1023);
out[6 + outpos] = (in[1 + inpos] >>> 28)
| ((in[2 + inpos] & 63) << (10 - 6));
out[7 + outpos] = ((in[2 + inpos] >>> 6) & 1023);
out[8 + outpos] = ((in[2 + inpos] >>> 16) & 1023);
out[9 + outpos] = (in[2 + inpos] >>> 26)
| ((in[3 + inpos] & 15) << (10 - 4));
out[10 + outpos] = ((in[3 + inpos] >>> 4) & 1023);
out[11 + outpos] = ((in[3 + inpos] >>> 14) & 1023);
out[12 + outpos] = (in[3 + inpos] >>> 24)
| ((in[4 + inpos] & 3) << (10 - 2));
out[13 + outpos] = ((in[4 + inpos] >>> 2) & 1023);
out[14 + outpos] = ((in[4 + inpos] >>> 12) & 1023);
out[15 + outpos] = (in[4 + inpos] >>> 22);
out[16 + outpos] = ((in[5 + inpos] >>> 0) & 1023);
out[17 + outpos] = ((in[5 + inpos] >>> 10) & 1023);
out[18 + outpos] = ((in[5 + inpos] >>> 20) & 1023);
out[19 + outpos] = (in[5 + inpos] >>> 30)
| ((in[6 + inpos] & 255) << (10 - 8));
out[20 + outpos] = ((in[6 + inpos] >>> 8) & 1023);
out[21 + outpos] = ((in[6 + inpos] >>> 18) & 1023);
out[22 + outpos] = (in[6 + inpos] >>> 28)
| ((in[7 + inpos] & 63) << (10 - 6));
out[23 + outpos] = ((in[7 + inpos] >>> 6) & 1023);
out[24 + outpos] = ((in[7 + inpos] >>> 16) & 1023);
out[25 + outpos] = (in[7 + inpos] >>> 26)
| ((in[8 + inpos] & 15) << (10 - 4));
out[26 + outpos] = ((in[8 + inpos] >>> 4) & 1023);
out[27 + outpos] = ((in[8 + inpos] >>> 14) & 1023);
out[28 + outpos] = (in[8 + inpos] >>> 24)
| ((in[9 + inpos] & 3) << (10 - 2));
out[29 + outpos] = ((in[9 + inpos] >>> 2) & 1023);
out[30 + outpos] = ((in[9 + inpos] >>> 12) & 1023);
out[31 + outpos] = (in[9 + inpos] >>> 22);
}
protected static void fastunpack11(final int[] in, int inpos,
final int[] out, int outpos) {
out[0 + outpos] = ((in[0 + inpos] >>> 0) & 2047);
out[1 + outpos] = ((in[0 + inpos] >>> 11) & 2047);
out[2 + outpos] = (in[0 + inpos] >>> 22)
| ((in[1 + inpos] & 1) << (11 - 1));
out[3 + outpos] = ((in[1 + inpos] >>> 1) & 2047);
out[4 + outpos] = ((in[1 + inpos] >>> 12) & 2047);
out[5 + outpos] = (in[1 + inpos] >>> 23)
| ((in[2 + inpos] & 3) << (11 - 2));
out[6 + outpos] = ((in[2 + inpos] >>> 2) & 2047);
out[7 + outpos] = ((in[2 + inpos] >>> 13) & 2047);
out[8 + outpos] = (in[2 + inpos] >>> 24)
| ((in[3 + inpos] & 7) << (11 - 3));
out[9 + outpos] = ((in[3 + inpos] >>> 3) & 2047);
out[10 + outpos] = ((in[3 + inpos] >>> 14) & 2047);
out[11 + outpos] = (in[3 + inpos] >>> 25)
| ((in[4 + inpos] & 15) << (11 - 4));
out[12 + outpos] = ((in[4 + inpos] >>> 4) & 2047);
out[13 + outpos] = ((in[4 + inpos] >>> 15) & 2047);
out[14 + outpos] = (in[4 + inpos] >>> 26)
| ((in[5 + inpos] & 31) << (11 - 5));
out[15 + outpos] = ((in[5 + inpos] >>> 5) & 2047);
out[16 + outpos] = ((in[5 + inpos] >>> 16) & 2047);
out[17 + outpos] = (in[5 + inpos] >>> 27)
| ((in[6 + inpos] & 63) << (11 - 6));
out[18 + outpos] = ((in[6 + inpos] >>> 6) & 2047);
out[19 + outpos] = ((in[6 + inpos] >>> 17) & 2047);
out[20 + outpos] = (in[6 + inpos] >>> 28)
| ((in[7 + inpos] & 127) << (11 - 7));
out[21 + outpos] = ((in[7 + inpos] >>> 7) & 2047);
out[22 + outpos] = ((in[7 + inpos] >>> 18) & 2047);
out[23 + outpos] = (in[7 + inpos] >>> 29)
| ((in[8 + inpos] & 255) << (11 - 8));
out[24 + outpos] = ((in[8 + inpos] >>> 8) & 2047);
out[25 + outpos] = ((in[8 + inpos] >>> 19) & 2047);
out[26 + outpos] = (in[8 + inpos] >>> 30)
| ((in[9 + inpos] & 511) << (11 - 9));
out[27 + outpos] = ((in[9 + inpos] >>> 9) & 2047);
out[28 + outpos] = ((in[9 + inpos] >>> 20) & 2047);
out[29 + outpos] = (in[9 + inpos] >>> 31)
| ((in[10 + inpos] & 1023) << (11 - 10));
out[30 + outpos] = ((in[10 + inpos] >>> 10) & 2047);
out[31 + outpos] = (in[10 + inpos] >>> 21);
}
protected static void fastunpack12(final int[] in, int inpos,
final int[] out, int outpos) {
out[0 + outpos] = ((in[0 + inpos] >>> 0) & 4095);
out[1 + outpos] = ((in[0 + inpos] >>> 12) & 4095);
out[2 + outpos] = (in[0 + inpos] >>> 24)
| ((in[1 + inpos] & 15) << (12 - 4));
out[3 + outpos] = ((in[1 + inpos] >>> 4) & 4095);
out[4 + outpos] = ((in[1 + inpos] >>> 16) & 4095);
out[5 + outpos] = (in[1 + inpos] >>> 28)
| ((in[2 + inpos] & 255) << (12 - 8));
out[6 + outpos] = ((in[2 + inpos] >>> 8) & 4095);
out[7 + outpos] = (in[2 + inpos] >>> 20);
out[8 + outpos] = ((in[3 + inpos] >>> 0) & 4095);
out[9 + outpos] = ((in[3 + inpos] >>> 12) & 4095);
out[10 + outpos] = (in[3 + inpos] >>> 24)
| ((in[4 + inpos] & 15) << (12 - 4));
out[11 + outpos] = ((in[4 + inpos] >>> 4) & 4095);
out[12 + outpos] = ((in[4 + inpos] >>> 16) & 4095);
out[13 + outpos] = (in[4 + inpos] >>> 28)
| ((in[5 + inpos] & 255) << (12 - 8));
out[14 + outpos] = ((in[5 + inpos] >>> 8) & 4095);
out[15 + outpos] = (in[5 + inpos] >>> 20);
out[16 + outpos] = ((in[6 + inpos] >>> 0) & 4095);
out[17 + outpos] = ((in[6 + inpos] >>> 12) & 4095);
out[18 + outpos] = (in[6 + inpos] >>> 24)
| ((in[7 + inpos] & 15) << (12 - 4));
out[19 + outpos] = ((in[7 + inpos] >>> 4) & 4095);
out[20 + outpos] = ((in[7 + inpos] >>> 16) & 4095);
out[21 + outpos] = (in[7 + inpos] >>> 28)
| ((in[8 + inpos] & 255) << (12 - 8));
out[22 + outpos] = ((in[8 + inpos] >>> 8) & 4095);
out[23 + outpos] = (in[8 + inpos] >>> 20);
out[24 + outpos] = ((in[9 + inpos] >>> 0) & 4095);
out[25 + outpos] = ((in[9 + inpos] >>> 12) & 4095);
out[26 + outpos] = (in[9 + inpos] >>> 24)
| ((in[10 + inpos] & 15) << (12 - 4));
out[27 + outpos] = ((in[10 + inpos] >>> 4) & 4095);
out[28 + outpos] = ((in[10 + inpos] >>> 16) & 4095);
out[29 + outpos] = (in[10 + inpos] >>> 28)
| ((in[11 + inpos] & 255) << (12 - 8));
out[30 + outpos] = ((in[11 + inpos] >>> 8) & 4095);
out[31 + outpos] = (in[11 + inpos] >>> 20);
}
protected static void fastunpack13(final int[] in, int inpos,
final int[] out, int outpos) {
out[0 + outpos] = ((in[0 + inpos] >>> 0) & 8191);
out[1 + outpos] = ((in[0 + inpos] >>> 13) & 8191);
out[2 + outpos] = (in[0 + inpos] >>> 26)
| ((in[1 + inpos] & 127) << (13 - 7));
out[3 + outpos] = ((in[1 + inpos] >>> 7) & 8191);
out[4 + outpos] = (in[1 + inpos] >>> 20)
| ((in[2 + inpos] & 1) << (13 - 1));
out[5 + outpos] = ((in[2 + inpos] >>> 1) & 8191);
out[6 + outpos] = ((in[2 + inpos] >>> 14) & 8191);
out[7 + outpos] = (in[2 + inpos] >>> 27)
| ((in[3 + inpos] & 255) << (13 - 8));
out[8 + outpos] = ((in[3 + inpos] >>> 8) & 8191);
out[9 + outpos] = (in[3 + inpos] >>> 21)
| ((in[4 + inpos] & 3) << (13 - 2));
out[10 + outpos] = ((in[4 + inpos] >>> 2) & 8191);
out[11 + outpos] = ((in[4 + inpos] >>> 15) & 8191);
out[12 + outpos] = (in[4 + inpos] >>> 28)
| ((in[5 + inpos] & 511) << (13 - 9));
out[13 + outpos] = ((in[5 + inpos] >>> 9) & 8191);
out[14 + outpos] = (in[5 + inpos] >>> 22)
| ((in[6 + inpos] & 7) << (13 - 3));
out[15 + outpos] = ((in[6 + inpos] >>> 3) & 8191);
out[16 + outpos] = ((in[6 + inpos] >>> 16) & 8191);
out[17 + outpos] = (in[6 + inpos] >>> 29)
| ((in[7 + inpos] & 1023) << (13 - 10));
out[18 + outpos] = ((in[7 + inpos] >>> 10) & 8191);
out[19 + outpos] = (in[7 + inpos] >>> 23)
| ((in[8 + inpos] & 15) << (13 - 4));
out[20 + outpos] = ((in[8 + inpos] >>> 4) & 8191);
out[21 + outpos] = ((in[8 + inpos] >>> 17) & 8191);
out[22 + outpos] = (in[8 + inpos] >>> 30)
| ((in[9 + inpos] & 2047) << (13 - 11));
out[23 + outpos] = ((in[9 + inpos] >>> 11) & 8191);
out[24 + outpos] = (in[9 + inpos] >>> 24)
| ((in[10 + inpos] & 31) << (13 - 5));
out[25 + outpos] = ((in[10 + inpos] >>> 5) & 8191);
out[26 + outpos] = ((in[10 + inpos] >>> 18) & 8191);
out[27 + outpos] = (in[10 + inpos] >>> 31)
| ((in[11 + inpos] & 4095) << (13 - 12));
out[28 + outpos] = ((in[11 + inpos] >>> 12) & 8191);
out[29 + outpos] = (in[11 + inpos] >>> 25)
| ((in[12 + inpos] & 63) << (13 - 6));
out[30 + outpos] = ((in[12 + inpos] >>> 6) & 8191);
out[31 + outpos] = (in[12 + inpos] >>> 19);
}
protected static void fastunpack14(final int[] in, int inpos,
final int[] out, int outpos) {
out[0 + outpos] = ((in[0 + inpos] >>> 0) & 16383);
out[1 + outpos] = ((in[0 + inpos] >>> 14) & 16383);
out[2 + outpos] = (in[0 + inpos] >>> 28)
| ((in[1 + inpos] & 1023) << (14 - 10));
out[3 + outpos] = ((in[1 + inpos] >>> 10) & 16383);
out[4 + outpos] = (in[1 + inpos] >>> 24)
| ((in[2 + inpos] & 63) << (14 - 6));
out[5 + outpos] = ((in[2 + inpos] >>> 6) & 16383);
out[6 + outpos] = (in[2 + inpos] >>> 20)
| ((in[3 + inpos] & 3) << (14 - 2));
out[7 + outpos] = ((in[3 + inpos] >>> 2) & 16383);
out[8 + outpos] = ((in[3 + inpos] >>> 16) & 16383);
out[9 + outpos] = (in[3 + inpos] >>> 30)
| ((in[4 + inpos] & 4095) << (14 - 12));
out[10 + outpos] = ((in[4 + inpos] >>> 12) & 16383);
out[11 + outpos] = (in[4 + inpos] >>> 26)
| ((in[5 + inpos] & 255) << (14 - 8));
out[12 + outpos] = ((in[5 + inpos] >>> 8) & 16383);
out[13 + outpos] = (in[5 + inpos] >>> 22)
| ((in[6 + inpos] & 15) << (14 - 4));
out[14 + outpos] = ((in[6 + inpos] >>> 4) & 16383);
out[15 + outpos] = (in[6 + inpos] >>> 18);
out[16 + outpos] = ((in[7 + inpos] >>> 0) & 16383);
out[17 + outpos] = ((in[7 + inpos] >>> 14) & 16383);
out[18 + outpos] = (in[7 + inpos] >>> 28)
| ((in[8 + inpos] & 1023) << (14 - 10));
out[19 + outpos] = ((in[8 + inpos] >>> 10) & 16383);
out[20 + outpos] = (in[8 + inpos] >>> 24)
| ((in[9 + inpos] & 63) << (14 - 6));
out[21 + outpos] = ((in[9 + inpos] >>> 6) & 16383);
out[22 + outpos] = (in[9 + inpos] >>> 20)
| ((in[10 + inpos] & 3) << (14 - 2));
out[23 + outpos] = ((in[10 + inpos] >>> 2) & 16383);
out[24 + outpos] = ((in[10 + inpos] >>> 16) & 16383);
out[25 + outpos] = (in[10 + inpos] >>> 30)
| ((in[11 + inpos] & 4095) << (14 - 12));
out[26 + outpos] = ((in[11 + inpos] >>> 12) & 16383);
out[27 + outpos] = (in[11 + inpos] >>> 26)
| ((in[12 + inpos] & 255) << (14 - 8));
out[28 + outpos] = ((in[12 + inpos] >>> 8) & 16383);
out[29 + outpos] = (in[12 + inpos] >>> 22)
| ((in[13 + inpos] & 15) << (14 - 4));
out[30 + outpos] = ((in[13 + inpos] >>> 4) & 16383);
out[31 + outpos] = (in[13 + inpos] >>> 18);
}
protected static void fastunpack15(final int[] in, int inpos,
final int[] out, int outpos) {
out[0 + outpos] = ((in[0 + inpos] >>> 0) & 32767);
out[1 + outpos] = ((in[0 + inpos] >>> 15) & 32767);
out[2 + outpos] = (in[0 + inpos] >>> 30)
| ((in[1 + inpos] & 8191) << (15 - 13));
out[3 + outpos] = ((in[1 + inpos] >>> 13) & 32767);
out[4 + outpos] = (in[1 + inpos] >>> 28)
| ((in[2 + inpos] & 2047) << (15 - 11));
out[5 + outpos] = ((in[2 + inpos] >>> 11) & 32767);
out[6 + outpos] = (in[2 + inpos] >>> 26)
| ((in[3 + inpos] & 511) << (15 - 9));
out[7 + outpos] = ((in[3 + inpos] >>> 9) & 32767);
out[8 + outpos] = (in[3 + inpos] >>> 24)
| ((in[4 + inpos] & 127) << (15 - 7));
out[9 + outpos] = ((in[4 + inpos] >>> 7) & 32767);
out[10 + outpos] = (in[4 + inpos] >>> 22)
| ((in[5 + inpos] & 31) << (15 - 5));
out[11 + outpos] = ((in[5 + inpos] >>> 5) & 32767);
out[12 + outpos] = (in[5 + inpos] >>> 20)
| ((in[6 + inpos] & 7) << (15 - 3));
out[13 + outpos] = ((in[6 + inpos] >>> 3) & 32767);
out[14 + outpos] = (in[6 + inpos] >>> 18)
| ((in[7 + inpos] & 1) << (15 - 1));
out[15 + outpos] = ((in[7 + inpos] >>> 1) & 32767);
out[16 + outpos] = ((in[7 + inpos] >>> 16) & 32767);
out[17 + outpos] = (in[7 + inpos] >>> 31)
| ((in[8 + inpos] & 16383) << (15 - 14));
out[18 + outpos] = ((in[8 + inpos] >>> 14) & 32767);
out[19 + outpos] = (in[8 + inpos] >>> 29)
| ((in[9 + inpos] & 4095) << (15 - 12));
out[20 + outpos] = ((in[9 + inpos] >>> 12) & 32767);
out[21 + outpos] = (in[9 + inpos] >>> 27)
| ((in[10 + inpos] & 1023) << (15 - 10));
out[22 + outpos] = ((in[10 + inpos] >>> 10) & 32767);
out[23 + outpos] = (in[10 + inpos] >>> 25)
| ((in[11 + inpos] & 255) << (15 - 8));
out[24 + outpos] = ((in[11 + inpos] >>> 8) & 32767);
out[25 + outpos] = (in[11 + inpos] >>> 23)
| ((in[12 + inpos] & 63) << (15 - 6));
out[26 + outpos] = ((in[12 + inpos] >>> 6) & 32767);
out[27 + outpos] = (in[12 + inpos] >>> 21)
| ((in[13 + inpos] & 15) << (15 - 4));
out[28 + outpos] = ((in[13 + inpos] >>> 4) & 32767);
out[29 + outpos] = (in[13 + inpos] >>> 19)
| ((in[14 + inpos] & 3) << (15 - 2));
out[30 + outpos] = ((in[14 + inpos] >>> 2) & 32767);
out[31 + outpos] = (in[14 + inpos] >>> 17);
}
protected static void fastunpack16(final int[] in, int inpos,
final int[] out, int outpos) {
out[0 + outpos] = ((in[0 + inpos] >>> 0) & 65535);
out[1 + outpos] = (in[0 + inpos] >>> 16);
out[2 + outpos] = ((in[1 + inpos] >>> 0) & 65535);
out[3 + outpos] = (in[1 + inpos] >>> 16);
out[4 + outpos] = ((in[2 + inpos] >>> 0) & 65535);
out[5 + outpos] = (in[2 + inpos] >>> 16);
out[6 + outpos] = ((in[3 + inpos] >>> 0) & 65535);
out[7 + outpos] = (in[3 + inpos] >>> 16);
out[8 + outpos] = ((in[4 + inpos] >>> 0) & 65535);
out[9 + outpos] = (in[4 + inpos] >>> 16);
out[10 + outpos] = ((in[5 + inpos] >>> 0) & 65535);
out[11 + outpos] = (in[5 + inpos] >>> 16);
out[12 + outpos] = ((in[6 + inpos] >>> 0) & 65535);
out[13 + outpos] = (in[6 + inpos] >>> 16);
out[14 + outpos] = ((in[7 + inpos] >>> 0) & 65535);
out[15 + outpos] = (in[7 + inpos] >>> 16);
out[16 + outpos] = ((in[8 + inpos] >>> 0) & 65535);
out[17 + outpos] = (in[8 + inpos] >>> 16);
out[18 + outpos] = ((in[9 + inpos] >>> 0) & 65535);
out[19 + outpos] = (in[9 + inpos] >>> 16);
out[20 + outpos] = ((in[10 + inpos] >>> 0) & 65535);
out[21 + outpos] = (in[10 + inpos] >>> 16);
out[22 + outpos] = ((in[11 + inpos] >>> 0) & 65535);
out[23 + outpos] = (in[11 + inpos] >>> 16);
out[24 + outpos] = ((in[12 + inpos] >>> 0) & 65535);
out[25 + outpos] = (in[12 + inpos] >>> 16);
out[26 + outpos] = ((in[13 + inpos] >>> 0) & 65535);
out[27 + outpos] = (in[13 + inpos] >>> 16);
out[28 + outpos] = ((in[14 + inpos] >>> 0) & 65535);
out[29 + outpos] = (in[14 + inpos] >>> 16);
out[30 + outpos] = ((in[15 + inpos] >>> 0) & 65535);
out[31 + outpos] = (in[15 + inpos] >>> 16);
}
protected static void fastunpack17(final int[] in, int inpos,
final int[] out, int outpos) {
out[0 + outpos] = ((in[0 + inpos] >>> 0) & 131071);
out[1 + outpos] = (in[0 + inpos] >>> 17)
| ((in[1 + inpos] & 3) << (17 - 2));
out[2 + outpos] = ((in[1 + inpos] >>> 2) & 131071);
out[3 + outpos] = (in[1 + inpos] >>> 19)
| ((in[2 + inpos] & 15) << (17 - 4));
out[4 + outpos] = ((in[2 + inpos] >>> 4) & 131071);
out[5 + outpos] = (in[2 + inpos] >>> 21)
| ((in[3 + inpos] & 63) << (17 - 6));
out[6 + outpos] = ((in[3 + inpos] >>> 6) & 131071);
out[7 + outpos] = (in[3 + inpos] >>> 23)
| ((in[4 + inpos] & 255) << (17 - 8));
out[8 + outpos] = ((in[4 + inpos] >>> 8) & 131071);
out[9 + outpos] = (in[4 + inpos] >>> 25)
| ((in[5 + inpos] & 1023) << (17 - 10));
out[10 + outpos] = ((in[5 + inpos] >>> 10) & 131071);
out[11 + outpos] = (in[5 + inpos] >>> 27)
| ((in[6 + inpos] & 4095) << (17 - 12));
out[12 + outpos] = ((in[6 + inpos] >>> 12) & 131071);
out[13 + outpos] = (in[6 + inpos] >>> 29)
| ((in[7 + inpos] & 16383) << (17 - 14));
out[14 + outpos] = ((in[7 + inpos] >>> 14) & 131071);
out[15 + outpos] = (in[7 + inpos] >>> 31)
| ((in[8 + inpos] & 65535) << (17 - 16));
out[16 + outpos] = (in[8 + inpos] >>> 16)
| ((in[9 + inpos] & 1) << (17 - 1));
out[17 + outpos] = ((in[9 + inpos] >>> 1) & 131071);
out[18 + outpos] = (in[9 + inpos] >>> 18)
| ((in[10 + inpos] & 7) << (17 - 3));
out[19 + outpos] = ((in[10 + inpos] >>> 3) & 131071);
out[20 + outpos] = (in[10 + inpos] >>> 20)
| ((in[11 + inpos] & 31) << (17 - 5));
out[21 + outpos] = ((in[11 + inpos] >>> 5) & 131071);
out[22 + outpos] = (in[11 + inpos] >>> 22)
| ((in[12 + inpos] & 127) << (17 - 7));
out[23 + outpos] = ((in[12 + inpos] >>> 7) & 131071);
out[24 + outpos] = (in[12 + inpos] >>> 24)
| ((in[13 + inpos] & 511) << (17 - 9));
out[25 + outpos] = ((in[13 + inpos] >>> 9) & 131071);
out[26 + outpos] = (in[13 + inpos] >>> 26)
| ((in[14 + inpos] & 2047) << (17 - 11));
out[27 + outpos] = ((in[14 + inpos] >>> 11) & 131071);
out[28 + outpos] = (in[14 + inpos] >>> 28)
| ((in[15 + inpos] & 8191) << (17 - 13));
out[29 + outpos] = ((in[15 + inpos] >>> 13) & 131071);
out[30 + outpos] = (in[15 + inpos] >>> 30)
| ((in[16 + inpos] & 32767) << (17 - 15));
out[31 + outpos] = (in[16 + inpos] >>> 15);
}
protected static void fastunpack18(final int[] in, int inpos,
final int[] out, int outpos) {
out[0 + outpos] = ((in[0 + inpos] >>> 0) & 262143);
out[1 + outpos] = (in[0 + inpos] >>> 18)
| ((in[1 + inpos] & 15) << (18 - 4));
out[2 + outpos] = ((in[1 + inpos] >>> 4) & 262143);
out[3 + outpos] = (in[1 + inpos] >>> 22)
| ((in[2 + inpos] & 255) << (18 - 8));
out[4 + outpos] = ((in[2 + inpos] >>> 8) & 262143);
out[5 + outpos] = (in[2 + inpos] >>> 26)
| ((in[3 + inpos] & 4095) << (18 - 12));
out[6 + outpos] = ((in[3 + inpos] >>> 12) & 262143);
out[7 + outpos] = (in[3 + inpos] >>> 30)
| ((in[4 + inpos] & 65535) << (18 - 16));
out[8 + outpos] = (in[4 + inpos] >>> 16)
| ((in[5 + inpos] & 3) << (18 - 2));
out[9 + outpos] = ((in[5 + inpos] >>> 2) & 262143);
out[10 + outpos] = (in[5 + inpos] >>> 20)
| ((in[6 + inpos] & 63) << (18 - 6));
out[11 + outpos] = ((in[6 + inpos] >>> 6) & 262143);
out[12 + outpos] = (in[6 + inpos] >>> 24)
| ((in[7 + inpos] & 1023) << (18 - 10));
out[13 + outpos] = ((in[7 + inpos] >>> 10) & 262143);
out[14 + outpos] = (in[7 + inpos] >>> 28)
| ((in[8 + inpos] & 16383) << (18 - 14));
out[15 + outpos] = (in[8 + inpos] >>> 14);
out[16 + outpos] = ((in[9 + inpos] >>> 0) & 262143);
out[17 + outpos] = (in[9 + inpos] >>> 18)
| ((in[10 + inpos] & 15) << (18 - 4));
out[18 + outpos] = ((in[10 + inpos] >>> 4) & 262143);
out[19 + outpos] = (in[10 + inpos] >>> 22)
| ((in[11 + inpos] & 255) << (18 - 8));
out[20 + outpos] = ((in[11 + inpos] >>> 8) & 262143);
out[21 + outpos] = (in[11 + inpos] >>> 26)
| ((in[12 + inpos] & 4095) << (18 - 12));
out[22 + outpos] = ((in[12 + inpos] >>> 12) & 262143);
out[23 + outpos] = (in[12 + inpos] >>> 30)
| ((in[13 + inpos] & 65535) << (18 - 16));
out[24 + outpos] = (in[13 + inpos] >>> 16)
| ((in[14 + inpos] & 3) << (18 - 2));
out[25 + outpos] = ((in[14 + inpos] >>> 2) & 262143);
out[26 + outpos] = (in[14 + inpos] >>> 20)
| ((in[15 + inpos] & 63) << (18 - 6));
out[27 + outpos] = ((in[15 + inpos] >>> 6) & 262143);
out[28 + outpos] = (in[15 + inpos] >>> 24)
| ((in[16 + inpos] & 1023) << (18 - 10));
out[29 + outpos] = ((in[16 + inpos] >>> 10) & 262143);
out[30 + outpos] = (in[16 + inpos] >>> 28)
| ((in[17 + inpos] & 16383) << (18 - 14));
out[31 + outpos] = (in[17 + inpos] >>> 14);
}
protected static void fastunpack19(final int[] in, int inpos,
final int[] out, int outpos) {
out[0 + outpos] = ((in[0 + inpos] >>> 0) & 524287);
out[1 + outpos] = (in[0 + inpos] >>> 19)
| ((in[1 + inpos] & 63) << (19 - 6));
out[2 + outpos] = ((in[1 + inpos] >>> 6) & 524287);
out[3 + outpos] = (in[1 + inpos] >>> 25)
| ((in[2 + inpos] & 4095) << (19 - 12));
out[4 + outpos] = ((in[2 + inpos] >>> 12) & 524287);
out[5 + outpos] = (in[2 + inpos] >>> 31)
| ((in[3 + inpos] & 262143) << (19 - 18));
out[6 + outpos] = (in[3 + inpos] >>> 18)
| ((in[4 + inpos] & 31) << (19 - 5));
out[7 + outpos] = ((in[4 + inpos] >>> 5) & 524287);
out[8 + outpos] = (in[4 + inpos] >>> 24)
| ((in[5 + inpos] & 2047) << (19 - 11));
out[9 + outpos] = ((in[5 + inpos] >>> 11) & 524287);
out[10 + outpos] = (in[5 + inpos] >>> 30)
| ((in[6 + inpos] & 131071) << (19 - 17));
out[11 + outpos] = (in[6 + inpos] >>> 17)
| ((in[7 + inpos] & 15) << (19 - 4));
out[12 + outpos] = ((in[7 + inpos] >>> 4) & 524287);
out[13 + outpos] = (in[7 + inpos] >>> 23)
| ((in[8 + inpos] & 1023) << (19 - 10));
out[14 + outpos] = ((in[8 + inpos] >>> 10) & 524287);
out[15 + outpos] = (in[8 + inpos] >>> 29)
| ((in[9 + inpos] & 65535) << (19 - 16));
out[16 + outpos] = (in[9 + inpos] >>> 16)
| ((in[10 + inpos] & 7) << (19 - 3));
out[17 + outpos] = ((in[10 + inpos] >>> 3) & 524287);
out[18 + outpos] = (in[10 + inpos] >>> 22)
| ((in[11 + inpos] & 511) << (19 - 9));
out[19 + outpos] = ((in[11 + inpos] >>> 9) & 524287);
out[20 + outpos] = (in[11 + inpos] >>> 28)
| ((in[12 + inpos] & 32767) << (19 - 15));
out[21 + outpos] = (in[12 + inpos] >>> 15)
| ((in[13 + inpos] & 3) << (19 - 2));
out[22 + outpos] = ((in[13 + inpos] >>> 2) & 524287);
out[23 + outpos] = (in[13 + inpos] >>> 21)
| ((in[14 + inpos] & 255) << (19 - 8));
out[24 + outpos] = ((in[14 + inpos] >>> 8) & 524287);
out[25 + outpos] = (in[14 + inpos] >>> 27)
| ((in[15 + inpos] & 16383) << (19 - 14));
out[26 + outpos] = (in[15 + inpos] >>> 14)
| ((in[16 + inpos] & 1) << (19 - 1));
out[27 + outpos] = ((in[16 + inpos] >>> 1) & 524287);
out[28 + outpos] = (in[16 + inpos] >>> 20)
| ((in[17 + inpos] & 127) << (19 - 7));
out[29 + outpos] = ((in[17 + inpos] >>> 7) & 524287);
out[30 + outpos] = (in[17 + inpos] >>> 26)
| ((in[18 + inpos] & 8191) << (19 - 13));
out[31 + outpos] = (in[18 + inpos] >>> 13);
}
protected static void fastunpack2(final int[] in, int inpos,
final int[] out, int outpos) {
out[0 + outpos] = ((in[0 + inpos] >>> 0) & 3);
out[1 + outpos] = ((in[0 + inpos] >>> 2) & 3);
out[2 + outpos] = ((in[0 + inpos] >>> 4) & 3);
out[3 + outpos] = ((in[0 + inpos] >>> 6) & 3);
out[4 + outpos] = ((in[0 + inpos] >>> 8) & 3);
out[5 + outpos] = ((in[0 + inpos] >>> 10) & 3);
out[6 + outpos] = ((in[0 + inpos] >>> 12) & 3);
out[7 + outpos] = ((in[0 + inpos] >>> 14) & 3);
out[8 + outpos] = ((in[0 + inpos] >>> 16) & 3);
out[9 + outpos] = ((in[0 + inpos] >>> 18) & 3);
out[10 + outpos] = ((in[0 + inpos] >>> 20) & 3);
out[11 + outpos] = ((in[0 + inpos] >>> 22) & 3);
out[12 + outpos] = ((in[0 + inpos] >>> 24) & 3);
out[13 + outpos] = ((in[0 + inpos] >>> 26) & 3);
out[14 + outpos] = ((in[0 + inpos] >>> 28) & 3);
out[15 + outpos] = (in[0 + inpos] >>> 30);
out[16 + outpos] = ((in[1 + inpos] >>> 0) & 3);
out[17 + outpos] = ((in[1 + inpos] >>> 2) & 3);
out[18 + outpos] = ((in[1 + inpos] >>> 4) & 3);
out[19 + outpos] = ((in[1 + inpos] >>> 6) & 3);
out[20 + outpos] = ((in[1 + inpos] >>> 8) & 3);
out[21 + outpos] = ((in[1 + inpos] >>> 10) & 3);
out[22 + outpos] = ((in[1 + inpos] >>> 12) & 3);
out[23 + outpos] = ((in[1 + inpos] >>> 14) & 3);
out[24 + outpos] = ((in[1 + inpos] >>> 16) & 3);
out[25 + outpos] = ((in[1 + inpos] >>> 18) & 3);
out[26 + outpos] = ((in[1 + inpos] >>> 20) & 3);
out[27 + outpos] = ((in[1 + inpos] >>> 22) & 3);
out[28 + outpos] = ((in[1 + inpos] >>> 24) & 3);
out[29 + outpos] = ((in[1 + inpos] >>> 26) & 3);
out[30 + outpos] = ((in[1 + inpos] >>> 28) & 3);
out[31 + outpos] = (in[1 + inpos] >>> 30);
}
protected static void fastunpack20(final int[] in, int inpos,
final int[] out, int outpos) {
out[0 + outpos] = ((in[0 + inpos] >>> 0) & 1048575);
out[1 + outpos] = (in[0 + inpos] >>> 20)
| ((in[1 + inpos] & 255) << (20 - 8));
out[2 + outpos] = ((in[1 + inpos] >>> 8) & 1048575);
out[3 + outpos] = (in[1 + inpos] >>> 28)
| ((in[2 + inpos] & 65535) << (20 - 16));
out[4 + outpos] = (in[2 + inpos] >>> 16)
| ((in[3 + inpos] & 15) << (20 - 4));
out[5 + outpos] = ((in[3 + inpos] >>> 4) & 1048575);
out[6 + outpos] = (in[3 + inpos] >>> 24)
| ((in[4 + inpos] & 4095) << (20 - 12));
out[7 + outpos] = (in[4 + inpos] >>> 12);
out[8 + outpos] = ((in[5 + inpos] >>> 0) & 1048575);
out[9 + outpos] = (in[5 + inpos] >>> 20)
| ((in[6 + inpos] & 255) << (20 - 8));
out[10 + outpos] = ((in[6 + inpos] >>> 8) & 1048575);
out[11 + outpos] = (in[6 + inpos] >>> 28)
| ((in[7 + inpos] & 65535) << (20 - 16));
out[12 + outpos] = (in[7 + inpos] >>> 16)
| ((in[8 + inpos] & 15) << (20 - 4));
out[13 + outpos] = ((in[8 + inpos] >>> 4) & 1048575);
out[14 + outpos] = (in[8 + inpos] >>> 24)
| ((in[9 + inpos] & 4095) << (20 - 12));
out[15 + outpos] = (in[9 + inpos] >>> 12);
out[16 + outpos] = ((in[10 + inpos] >>> 0) & 1048575);
out[17 + outpos] = (in[10 + inpos] >>> 20)
| ((in[11 + inpos] & 255) << (20 - 8));
out[18 + outpos] = ((in[11 + inpos] >>> 8) & 1048575);
out[19 + outpos] = (in[11 + inpos] >>> 28)
| ((in[12 + inpos] & 65535) << (20 - 16));
out[20 + outpos] = (in[12 + inpos] >>> 16)
| ((in[13 + inpos] & 15) << (20 - 4));
out[21 + outpos] = ((in[13 + inpos] >>> 4) & 1048575);
out[22 + outpos] = (in[13 + inpos] >>> 24)
| ((in[14 + inpos] & 4095) << (20 - 12));
out[23 + outpos] = (in[14 + inpos] >>> 12);
out[24 + outpos] = ((in[15 + inpos] >>> 0) & 1048575);
out[25 + outpos] = (in[15 + inpos] >>> 20)
| ((in[16 + inpos] & 255) << (20 - 8));
out[26 + outpos] = ((in[16 + inpos] >>> 8) & 1048575);
out[27 + outpos] = (in[16 + inpos] >>> 28)
| ((in[17 + inpos] & 65535) << (20 - 16));
out[28 + outpos] = (in[17 + inpos] >>> 16)
| ((in[18 + inpos] & 15) << (20 - 4));
out[29 + outpos] = ((in[18 + inpos] >>> 4) & 1048575);
out[30 + outpos] = (in[18 + inpos] >>> 24)
| ((in[19 + inpos] & 4095) << (20 - 12));
out[31 + outpos] = (in[19 + inpos] >>> 12);
}
protected static void fastunpack21(final int[] in, int inpos,
final int[] out, int outpos) {
out[0 + outpos] = ((in[0 + inpos] >>> 0) & 2097151);
out[1 + outpos] = (in[0 + inpos] >>> 21)
| ((in[1 + inpos] & 1023) << (21 - 10));
out[2 + outpos] = ((in[1 + inpos] >>> 10) & 2097151);
out[3 + outpos] = (in[1 + inpos] >>> 31)
| ((in[2 + inpos] & 1048575) << (21 - 20));
out[4 + outpos] = (in[2 + inpos] >>> 20)
| ((in[3 + inpos] & 511) << (21 - 9));
out[5 + outpos] = ((in[3 + inpos] >>> 9) & 2097151);
out[6 + outpos] = (in[3 + inpos] >>> 30)
| ((in[4 + inpos] & 524287) << (21 - 19));
out[7 + outpos] = (in[4 + inpos] >>> 19)
| ((in[5 + inpos] & 255) << (21 - 8));
out[8 + outpos] = ((in[5 + inpos] >>> 8) & 2097151);
out[9 + outpos] = (in[5 + inpos] >>> 29)
| ((in[6 + inpos] & 262143) << (21 - 18));
out[10 + outpos] = (in[6 + inpos] >>> 18)
| ((in[7 + inpos] & 127) << (21 - 7));
out[11 + outpos] = ((in[7 + inpos] >>> 7) & 2097151);
out[12 + outpos] = (in[7 + inpos] >>> 28)
| ((in[8 + inpos] & 131071) << (21 - 17));
out[13 + outpos] = (in[8 + inpos] >>> 17)
| ((in[9 + inpos] & 63) << (21 - 6));
out[14 + outpos] = ((in[9 + inpos] >>> 6) & 2097151);
out[15 + outpos] = (in[9 + inpos] >>> 27)
| ((in[10 + inpos] & 65535) << (21 - 16));
out[16 + outpos] = (in[10 + inpos] >>> 16)
| ((in[11 + inpos] & 31) << (21 - 5));
out[17 + outpos] = ((in[11 + inpos] >>> 5) & 2097151);
out[18 + outpos] = (in[11 + inpos] >>> 26)
| ((in[12 + inpos] & 32767) << (21 - 15));
out[19 + outpos] = (in[12 + inpos] >>> 15)
| ((in[13 + inpos] & 15) << (21 - 4));
out[20 + outpos] = ((in[13 + inpos] >>> 4) & 2097151);
out[21 + outpos] = (in[13 + inpos] >>> 25)
| ((in[14 + inpos] & 16383) << (21 - 14));
out[22 + outpos] = (in[14 + inpos] >>> 14)
| ((in[15 + inpos] & 7) << (21 - 3));
out[23 + outpos] = ((in[15 + inpos] >>> 3) & 2097151);
out[24 + outpos] = (in[15 + inpos] >>> 24)
| ((in[16 + inpos] & 8191) << (21 - 13));
out[25 + outpos] = (in[16 + inpos] >>> 13)
| ((in[17 + inpos] & 3) << (21 - 2));
out[26 + outpos] = ((in[17 + inpos] >>> 2) & 2097151);
out[27 + outpos] = (in[17 + inpos] >>> 23)
| ((in[18 + inpos] & 4095) << (21 - 12));
out[28 + outpos] = (in[18 + inpos] >>> 12)
| ((in[19 + inpos] & 1) << (21 - 1));
out[29 + outpos] = ((in[19 + inpos] >>> 1) & 2097151);
out[30 + outpos] = (in[19 + inpos] >>> 22)
| ((in[20 + inpos] & 2047) << (21 - 11));
out[31 + outpos] = (in[20 + inpos] >>> 11);
}
protected static void fastunpack22(final int[] in, int inpos,
final int[] out, int outpos) {
out[0 + outpos] = ((in[0 + inpos] >>> 0) & 4194303);
out[1 + outpos] = (in[0 + inpos] >>> 22)
| ((in[1 + inpos] & 4095) << (22 - 12));
out[2 + outpos] = (in[1 + inpos] >>> 12)
| ((in[2 + inpos] & 3) << (22 - 2));
out[3 + outpos] = ((in[2 + inpos] >>> 2) & 4194303);
out[4 + outpos] = (in[2 + inpos] >>> 24)
| ((in[3 + inpos] & 16383) << (22 - 14));
out[5 + outpos] = (in[3 + inpos] >>> 14)
| ((in[4 + inpos] & 15) << (22 - 4));
out[6 + outpos] = ((in[4 + inpos] >>> 4) & 4194303);
out[7 + outpos] = (in[4 + inpos] >>> 26)
| ((in[5 + inpos] & 65535) << (22 - 16));
out[8 + outpos] = (in[5 + inpos] >>> 16)
| ((in[6 + inpos] & 63) << (22 - 6));
out[9 + outpos] = ((in[6 + inpos] >>> 6) & 4194303);
out[10 + outpos] = (in[6 + inpos] >>> 28)
| ((in[7 + inpos] & 262143) << (22 - 18));
out[11 + outpos] = (in[7 + inpos] >>> 18)
| ((in[8 + inpos] & 255) << (22 - 8));
out[12 + outpos] = ((in[8 + inpos] >>> 8) & 4194303);
out[13 + outpos] = (in[8 + inpos] >>> 30)
| ((in[9 + inpos] & 1048575) << (22 - 20));
out[14 + outpos] = (in[9 + inpos] >>> 20)
| ((in[10 + inpos] & 1023) << (22 - 10));
out[15 + outpos] = (in[10 + inpos] >>> 10);
out[16 + outpos] = ((in[11 + inpos] >>> 0) & 4194303);
out[17 + outpos] = (in[11 + inpos] >>> 22)
| ((in[12 + inpos] & 4095) << (22 - 12));
out[18 + outpos] = (in[12 + inpos] >>> 12)
| ((in[13 + inpos] & 3) << (22 - 2));
out[19 + outpos] = ((in[13 + inpos] >>> 2) & 4194303);
out[20 + outpos] = (in[13 + inpos] >>> 24)
| ((in[14 + inpos] & 16383) << (22 - 14));
out[21 + outpos] = (in[14 + inpos] >>> 14)
| ((in[15 + inpos] & 15) << (22 - 4));
out[22 + outpos] = ((in[15 + inpos] >>> 4) & 4194303);
out[23 + outpos] = (in[15 + inpos] >>> 26)
| ((in[16 + inpos] & 65535) << (22 - 16));
out[24 + outpos] = (in[16 + inpos] >>> 16)
| ((in[17 + inpos] & 63) << (22 - 6));
out[25 + outpos] = ((in[17 + inpos] >>> 6) & 4194303);
out[26 + outpos] = (in[17 + inpos] >>> 28)
| ((in[18 + inpos] & 262143) << (22 - 18));
out[27 + outpos] = (in[18 + inpos] >>> 18)
| ((in[19 + inpos] & 255) << (22 - 8));
out[28 + outpos] = ((in[19 + inpos] >>> 8) & 4194303);
out[29 + outpos] = (in[19 + inpos] >>> 30)
| ((in[20 + inpos] & 1048575) << (22 - 20));
out[30 + outpos] = (in[20 + inpos] >>> 20)
| ((in[21 + inpos] & 1023) << (22 - 10));
out[31 + outpos] = (in[21 + inpos] >>> 10);
}
protected static void fastunpack23(final int[] in, int inpos,
final int[] out, int outpos) {
out[0 + outpos] = ((in[0 + inpos] >>> 0) & 8388607);
out[1 + outpos] = (in[0 + inpos] >>> 23)
| ((in[1 + inpos] & 16383) << (23 - 14));
out[2 + outpos] = (in[1 + inpos] >>> 14)
| ((in[2 + inpos] & 31) << (23 - 5));
out[3 + outpos] = ((in[2 + inpos] >>> 5) & 8388607);
out[4 + outpos] = (in[2 + inpos] >>> 28)
| ((in[3 + inpos] & 524287) << (23 - 19));
out[5 + outpos] = (in[3 + inpos] >>> 19)
| ((in[4 + inpos] & 1023) << (23 - 10));
out[6 + outpos] = (in[4 + inpos] >>> 10)
| ((in[5 + inpos] & 1) << (23 - 1));
out[7 + outpos] = ((in[5 + inpos] >>> 1) & 8388607);
out[8 + outpos] = (in[5 + inpos] >>> 24)
| ((in[6 + inpos] & 32767) << (23 - 15));
out[9 + outpos] = (in[6 + inpos] >>> 15)
| ((in[7 + inpos] & 63) << (23 - 6));
out[10 + outpos] = ((in[7 + inpos] >>> 6) & 8388607);
out[11 + outpos] = (in[7 + inpos] >>> 29)
| ((in[8 + inpos] & 1048575) << (23 - 20));
out[12 + outpos] = (in[8 + inpos] >>> 20)
| ((in[9 + inpos] & 2047) << (23 - 11));
out[13 + outpos] = (in[9 + inpos] >>> 11)
| ((in[10 + inpos] & 3) << (23 - 2));
out[14 + outpos] = ((in[10 + inpos] >>> 2) & 8388607);
out[15 + outpos] = (in[10 + inpos] >>> 25)
| ((in[11 + inpos] & 65535) << (23 - 16));
out[16 + outpos] = (in[11 + inpos] >>> 16)
| ((in[12 + inpos] & 127) << (23 - 7));
out[17 + outpos] = ((in[12 + inpos] >>> 7) & 8388607);
out[18 + outpos] = (in[12 + inpos] >>> 30)
| ((in[13 + inpos] & 2097151) << (23 - 21));
out[19 + outpos] = (in[13 + inpos] >>> 21)
| ((in[14 + inpos] & 4095) << (23 - 12));
out[20 + outpos] = (in[14 + inpos] >>> 12)
| ((in[15 + inpos] & 7) << (23 - 3));
out[21 + outpos] = ((in[15 + inpos] >>> 3) & 8388607);
out[22 + outpos] = (in[15 + inpos] >>> 26)
| ((in[16 + inpos] & 131071) << (23 - 17));
out[23 + outpos] = (in[16 + inpos] >>> 17)
| ((in[17 + inpos] & 255) << (23 - 8));
out[24 + outpos] = ((in[17 + inpos] >>> 8) & 8388607);
out[25 + outpos] = (in[17 + inpos] >>> 31)
| ((in[18 + inpos] & 4194303) << (23 - 22));
out[26 + outpos] = (in[18 + inpos] >>> 22)
| ((in[19 + inpos] & 8191) << (23 - 13));
out[27 + outpos] = (in[19 + inpos] >>> 13)
| ((in[20 + inpos] & 15) << (23 - 4));
out[28 + outpos] = ((in[20 + inpos] >>> 4) & 8388607);
out[29 + outpos] = (in[20 + inpos] >>> 27)
| ((in[21 + inpos] & 262143) << (23 - 18));
out[30 + outpos] = (in[21 + inpos] >>> 18)
| ((in[22 + inpos] & 511) << (23 - 9));
out[31 + outpos] = (in[22 + inpos] >>> 9);
}
protected static void fastunpack24(final int[] in, int inpos,
final int[] out, int outpos) {
out[0 + outpos] = ((in[0 + inpos] >>> 0) & 16777215);
out[1 + outpos] = (in[0 + inpos] >>> 24)
| ((in[1 + inpos] & 65535) << (24 - 16));
out[2 + outpos] = (in[1 + inpos] >>> 16)
| ((in[2 + inpos] & 255) << (24 - 8));
out[3 + outpos] = (in[2 + inpos] >>> 8);
out[4 + outpos] = ((in[3 + inpos] >>> 0) & 16777215);
out[5 + outpos] = (in[3 + inpos] >>> 24)
| ((in[4 + inpos] & 65535) << (24 - 16));
out[6 + outpos] = (in[4 + inpos] >>> 16)
| ((in[5 + inpos] & 255) << (24 - 8));
out[7 + outpos] = (in[5 + inpos] >>> 8);
out[8 + outpos] = ((in[6 + inpos] >>> 0) & 16777215);
out[9 + outpos] = (in[6 + inpos] >>> 24)
| ((in[7 + inpos] & 65535) << (24 - 16));
out[10 + outpos] = (in[7 + inpos] >>> 16)
| ((in[8 + inpos] & 255) << (24 - 8));
out[11 + outpos] = (in[8 + inpos] >>> 8);
out[12 + outpos] = ((in[9 + inpos] >>> 0) & 16777215);
out[13 + outpos] = (in[9 + inpos] >>> 24)
| ((in[10 + inpos] & 65535) << (24 - 16));
out[14 + outpos] = (in[10 + inpos] >>> 16)
| ((in[11 + inpos] & 255) << (24 - 8));
out[15 + outpos] = (in[11 + inpos] >>> 8);
out[16 + outpos] = ((in[12 + inpos] >>> 0) & 16777215);
out[17 + outpos] = (in[12 + inpos] >>> 24)
| ((in[13 + inpos] & 65535) << (24 - 16));
out[18 + outpos] = (in[13 + inpos] >>> 16)
| ((in[14 + inpos] & 255) << (24 - 8));
out[19 + outpos] = (in[14 + inpos] >>> 8);
out[20 + outpos] = ((in[15 + inpos] >>> 0) & 16777215);
out[21 + outpos] = (in[15 + inpos] >>> 24)
| ((in[16 + inpos] & 65535) << (24 - 16));
out[22 + outpos] = (in[16 + inpos] >>> 16)
| ((in[17 + inpos] & 255) << (24 - 8));
out[23 + outpos] = (in[17 + inpos] >>> 8);
out[24 + outpos] = ((in[18 + inpos] >>> 0) & 16777215);
out[25 + outpos] = (in[18 + inpos] >>> 24)
| ((in[19 + inpos] & 65535) << (24 - 16));
out[26 + outpos] = (in[19 + inpos] >>> 16)
| ((in[20 + inpos] & 255) << (24 - 8));
out[27 + outpos] = (in[20 + inpos] >>> 8);
out[28 + outpos] = ((in[21 + inpos] >>> 0) & 16777215);
out[29 + outpos] = (in[21 + inpos] >>> 24)
| ((in[22 + inpos] & 65535) << (24 - 16));
out[30 + outpos] = (in[22 + inpos] >>> 16)
| ((in[23 + inpos] & 255) << (24 - 8));
out[31 + outpos] = (in[23 + inpos] >>> 8);
}
protected static void fastunpack25(final int[] in, int inpos,
final int[] out, int outpos) {
out[0 + outpos] = ((in[0 + inpos] >>> 0) & 33554431);
out[1 + outpos] = (in[0 + inpos] >>> 25)
| ((in[1 + inpos] & 262143) << (25 - 18));
out[2 + outpos] = (in[1 + inpos] >>> 18)
| ((in[2 + inpos] & 2047) << (25 - 11));
out[3 + outpos] = (in[2 + inpos] >>> 11)
| ((in[3 + inpos] & 15) << (25 - 4));
out[4 + outpos] = ((in[3 + inpos] >>> 4) & 33554431);
out[5 + outpos] = (in[3 + inpos] >>> 29)
| ((in[4 + inpos] & 4194303) << (25 - 22));
out[6 + outpos] = (in[4 + inpos] >>> 22)
| ((in[5 + inpos] & 32767) << (25 - 15));
out[7 + outpos] = (in[5 + inpos] >>> 15)
| ((in[6 + inpos] & 255) << (25 - 8));
out[8 + outpos] = (in[6 + inpos] >>> 8)
| ((in[7 + inpos] & 1) << (25 - 1));
out[9 + outpos] = ((in[7 + inpos] >>> 1) & 33554431);
out[10 + outpos] = (in[7 + inpos] >>> 26)
| ((in[8 + inpos] & 524287) << (25 - 19));
out[11 + outpos] = (in[8 + inpos] >>> 19)
| ((in[9 + inpos] & 4095) << (25 - 12));
out[12 + outpos] = (in[9 + inpos] >>> 12)
| ((in[10 + inpos] & 31) << (25 - 5));
out[13 + outpos] = ((in[10 + inpos] >>> 5) & 33554431);
out[14 + outpos] = (in[10 + inpos] >>> 30)
| ((in[11 + inpos] & 8388607) << (25 - 23));
out[15 + outpos] = (in[11 + inpos] >>> 23)
| ((in[12 + inpos] & 65535) << (25 - 16));
out[16 + outpos] = (in[12 + inpos] >>> 16)
| ((in[13 + inpos] & 511) << (25 - 9));
out[17 + outpos] = (in[13 + inpos] >>> 9)
| ((in[14 + inpos] & 3) << (25 - 2));
out[18 + outpos] = ((in[14 + inpos] >>> 2) & 33554431);
out[19 + outpos] = (in[14 + inpos] >>> 27)
| ((in[15 + inpos] & 1048575) << (25 - 20));
out[20 + outpos] = (in[15 + inpos] >>> 20)
| ((in[16 + inpos] & 8191) << (25 - 13));
out[21 + outpos] = (in[16 + inpos] >>> 13)
| ((in[17 + inpos] & 63) << (25 - 6));
out[22 + outpos] = ((in[17 + inpos] >>> 6) & 33554431);
out[23 + outpos] = (in[17 + inpos] >>> 31)
| ((in[18 + inpos] & 16777215) << (25 - 24));
out[24 + outpos] = (in[18 + inpos] >>> 24)
| ((in[19 + inpos] & 131071) << (25 - 17));
out[25 + outpos] = (in[19 + inpos] >>> 17)
| ((in[20 + inpos] & 1023) << (25 - 10));
out[26 + outpos] = (in[20 + inpos] >>> 10)
| ((in[21 + inpos] & 7) << (25 - 3));
out[27 + outpos] = ((in[21 + inpos] >>> 3) & 33554431);
out[28 + outpos] = (in[21 + inpos] >>> 28)
| ((in[22 + inpos] & 2097151) << (25 - 21));
out[29 + outpos] = (in[22 + inpos] >>> 21)
| ((in[23 + inpos] & 16383) << (25 - 14));
out[30 + outpos] = (in[23 + inpos] >>> 14)
| ((in[24 + inpos] & 127) << (25 - 7));
out[31 + outpos] = (in[24 + inpos] >>> 7);
}
protected static void fastunpack26(final int[] in, int inpos,
final int[] out, int outpos) {
out[0 + outpos] = ((in[0 + inpos] >>> 0) & 67108863);
out[1 + outpos] = (in[0 + inpos] >>> 26)
| ((in[1 + inpos] & 1048575) << (26 - 20));
out[2 + outpos] = (in[1 + inpos] >>> 20)
| ((in[2 + inpos] & 16383) << (26 - 14));
out[3 + outpos] = (in[2 + inpos] >>> 14)
| ((in[3 + inpos] & 255) << (26 - 8));
out[4 + outpos] = (in[3 + inpos] >>> 8)
| ((in[4 + inpos] & 3) << (26 - 2));
out[5 + outpos] = ((in[4 + inpos] >>> 2) & 67108863);
out[6 + outpos] = (in[4 + inpos] >>> 28)
| ((in[5 + inpos] & 4194303) << (26 - 22));
out[7 + outpos] = (in[5 + inpos] >>> 22)
| ((in[6 + inpos] & 65535) << (26 - 16));
out[8 + outpos] = (in[6 + inpos] >>> 16)
| ((in[7 + inpos] & 1023) << (26 - 10));
out[9 + outpos] = (in[7 + inpos] >>> 10)
| ((in[8 + inpos] & 15) << (26 - 4));
out[10 + outpos] = ((in[8 + inpos] >>> 4) & 67108863);
out[11 + outpos] = (in[8 + inpos] >>> 30)
| ((in[9 + inpos] & 16777215) << (26 - 24));
out[12 + outpos] = (in[9 + inpos] >>> 24)
| ((in[10 + inpos] & 262143) << (26 - 18));
out[13 + outpos] = (in[10 + inpos] >>> 18)
| ((in[11 + inpos] & 4095) << (26 - 12));
out[14 + outpos] = (in[11 + inpos] >>> 12)
| ((in[12 + inpos] & 63) << (26 - 6));
out[15 + outpos] = (in[12 + inpos] >>> 6);
out[16 + outpos] = ((in[13 + inpos] >>> 0) & 67108863);
out[17 + outpos] = (in[13 + inpos] >>> 26)
| ((in[14 + inpos] & 1048575) << (26 - 20));
out[18 + outpos] = (in[14 + inpos] >>> 20)
| ((in[15 + inpos] & 16383) << (26 - 14));
out[19 + outpos] = (in[15 + inpos] >>> 14)
| ((in[16 + inpos] & 255) << (26 - 8));
out[20 + outpos] = (in[16 + inpos] >>> 8)
| ((in[17 + inpos] & 3) << (26 - 2));
out[21 + outpos] = ((in[17 + inpos] >>> 2) & 67108863);
out[22 + outpos] = (in[17 + inpos] >>> 28)
| ((in[18 + inpos] & 4194303) << (26 - 22));
out[23 + outpos] = (in[18 + inpos] >>> 22)
| ((in[19 + inpos] & 65535) << (26 - 16));
out[24 + outpos] = (in[19 + inpos] >>> 16)
| ((in[20 + inpos] & 1023) << (26 - 10));
out[25 + outpos] = (in[20 + inpos] >>> 10)
| ((in[21 + inpos] & 15) << (26 - 4));
out[26 + outpos] = ((in[21 + inpos] >>> 4) & 67108863);
out[27 + outpos] = (in[21 + inpos] >>> 30)
| ((in[22 + inpos] & 16777215) << (26 - 24));
out[28 + outpos] = (in[22 + inpos] >>> 24)
| ((in[23 + inpos] & 262143) << (26 - 18));
out[29 + outpos] = (in[23 + inpos] >>> 18)
| ((in[24 + inpos] & 4095) << (26 - 12));
out[30 + outpos] = (in[24 + inpos] >>> 12)
| ((in[25 + inpos] & 63) << (26 - 6));
out[31 + outpos] = (in[25 + inpos] >>> 6);
}
protected static void fastunpack27(final int[] in, int inpos,
final int[] out, int outpos) {
out[0 + outpos] = ((in[0 + inpos] >>> 0) & 134217727);
out[1 + outpos] = (in[0 + inpos] >>> 27)
| ((in[1 + inpos] & 4194303) << (27 - 22));
out[2 + outpos] = (in[1 + inpos] >>> 22)
| ((in[2 + inpos] & 131071) << (27 - 17));
out[3 + outpos] = (in[2 + inpos] >>> 17)
| ((in[3 + inpos] & 4095) << (27 - 12));
out[4 + outpos] = (in[3 + inpos] >>> 12)
| ((in[4 + inpos] & 127) << (27 - 7));
out[5 + outpos] = (in[4 + inpos] >>> 7)
| ((in[5 + inpos] & 3) << (27 - 2));
out[6 + outpos] = ((in[5 + inpos] >>> 2) & 134217727);
out[7 + outpos] = (in[5 + inpos] >>> 29)
| ((in[6 + inpos] & 16777215) << (27 - 24));
out[8 + outpos] = (in[6 + inpos] >>> 24)
| ((in[7 + inpos] & 524287) << (27 - 19));
out[9 + outpos] = (in[7 + inpos] >>> 19)
| ((in[8 + inpos] & 16383) << (27 - 14));
out[10 + outpos] = (in[8 + inpos] >>> 14)
| ((in[9 + inpos] & 511) << (27 - 9));
out[11 + outpos] = (in[9 + inpos] >>> 9)
| ((in[10 + inpos] & 15) << (27 - 4));
out[12 + outpos] = ((in[10 + inpos] >>> 4) & 134217727);
out[13 + outpos] = (in[10 + inpos] >>> 31)
| ((in[11 + inpos] & 67108863) << (27 - 26));
out[14 + outpos] = (in[11 + inpos] >>> 26)
| ((in[12 + inpos] & 2097151) << (27 - 21));
out[15 + outpos] = (in[12 + inpos] >>> 21)
| ((in[13 + inpos] & 65535) << (27 - 16));
out[16 + outpos] = (in[13 + inpos] >>> 16)
| ((in[14 + inpos] & 2047) << (27 - 11));
out[17 + outpos] = (in[14 + inpos] >>> 11)
| ((in[15 + inpos] & 63) << (27 - 6));
out[18 + outpos] = (in[15 + inpos] >>> 6)
| ((in[16 + inpos] & 1) << (27 - 1));
out[19 + outpos] = ((in[16 + inpos] >>> 1) & 134217727);
out[20 + outpos] = (in[16 + inpos] >>> 28)
| ((in[17 + inpos] & 8388607) << (27 - 23));
out[21 + outpos] = (in[17 + inpos] >>> 23)
| ((in[18 + inpos] & 262143) << (27 - 18));
out[22 + outpos] = (in[18 + inpos] >>> 18)
| ((in[19 + inpos] & 8191) << (27 - 13));
out[23 + outpos] = (in[19 + inpos] >>> 13)
| ((in[20 + inpos] & 255) << (27 - 8));
out[24 + outpos] = (in[20 + inpos] >>> 8)
| ((in[21 + inpos] & 7) << (27 - 3));
out[25 + outpos] = ((in[21 + inpos] >>> 3) & 134217727);
out[26 + outpos] = (in[21 + inpos] >>> 30)
| ((in[22 + inpos] & 33554431) << (27 - 25));
out[27 + outpos] = (in[22 + inpos] >>> 25)
| ((in[23 + inpos] & 1048575) << (27 - 20));
out[28 + outpos] = (in[23 + inpos] >>> 20)
| ((in[24 + inpos] & 32767) << (27 - 15));
out[29 + outpos] = (in[24 + inpos] >>> 15)
| ((in[25 + inpos] & 1023) << (27 - 10));
out[30 + outpos] = (in[25 + inpos] >>> 10)
| ((in[26 + inpos] & 31) << (27 - 5));
out[31 + outpos] = (in[26 + inpos] >>> 5);
}
protected static void fastunpack28(final int[] in, int inpos,
final int[] out, int outpos) {
out[0 + outpos] = ((in[0 + inpos] >>> 0) & 268435455);
out[1 + outpos] = (in[0 + inpos] >>> 28)
| ((in[1 + inpos] & 16777215) << (28 - 24));
out[2 + outpos] = (in[1 + inpos] >>> 24)
| ((in[2 + inpos] & 1048575) << (28 - 20));
out[3 + outpos] = (in[2 + inpos] >>> 20)
| ((in[3 + inpos] & 65535) << (28 - 16));
out[4 + outpos] = (in[3 + inpos] >>> 16)
| ((in[4 + inpos] & 4095) << (28 - 12));
out[5 + outpos] = (in[4 + inpos] >>> 12)
| ((in[5 + inpos] & 255) << (28 - 8));
out[6 + outpos] = (in[5 + inpos] >>> 8)
| ((in[6 + inpos] & 15) << (28 - 4));
out[7 + outpos] = (in[6 + inpos] >>> 4);
out[8 + outpos] = ((in[7 + inpos] >>> 0) & 268435455);
out[9 + outpos] = (in[7 + inpos] >>> 28)
| ((in[8 + inpos] & 16777215) << (28 - 24));
out[10 + outpos] = (in[8 + inpos] >>> 24)
| ((in[9 + inpos] & 1048575) << (28 - 20));
out[11 + outpos] = (in[9 + inpos] >>> 20)
| ((in[10 + inpos] & 65535) << (28 - 16));
out[12 + outpos] = (in[10 + inpos] >>> 16)
| ((in[11 + inpos] & 4095) << (28 - 12));
out[13 + outpos] = (in[11 + inpos] >>> 12)
| ((in[12 + inpos] & 255) << (28 - 8));
out[14 + outpos] = (in[12 + inpos] >>> 8)
| ((in[13 + inpos] & 15) << (28 - 4));
out[15 + outpos] = (in[13 + inpos] >>> 4);
out[16 + outpos] = ((in[14 + inpos] >>> 0) & 268435455);
out[17 + outpos] = (in[14 + inpos] >>> 28)
| ((in[15 + inpos] & 16777215) << (28 - 24));
out[18 + outpos] = (in[15 + inpos] >>> 24)
| ((in[16 + inpos] & 1048575) << (28 - 20));
out[19 + outpos] = (in[16 + inpos] >>> 20)
| ((in[17 + inpos] & 65535) << (28 - 16));
out[20 + outpos] = (in[17 + inpos] >>> 16)
| ((in[18 + inpos] & 4095) << (28 - 12));
out[21 + outpos] = (in[18 + inpos] >>> 12)
| ((in[19 + inpos] & 255) << (28 - 8));
out[22 + outpos] = (in[19 + inpos] >>> 8)
| ((in[20 + inpos] & 15) << (28 - 4));
out[23 + outpos] = (in[20 + inpos] >>> 4);
out[24 + outpos] = ((in[21 + inpos] >>> 0) & 268435455);
out[25 + outpos] = (in[21 + inpos] >>> 28)
| ((in[22 + inpos] & 16777215) << (28 - 24));
out[26 + outpos] = (in[22 + inpos] >>> 24)
| ((in[23 + inpos] & 1048575) << (28 - 20));
out[27 + outpos] = (in[23 + inpos] >>> 20)
| ((in[24 + inpos] & 65535) << (28 - 16));
out[28 + outpos] = (in[24 + inpos] >>> 16)
| ((in[25 + inpos] & 4095) << (28 - 12));
out[29 + outpos] = (in[25 + inpos] >>> 12)
| ((in[26 + inpos] & 255) << (28 - 8));
out[30 + outpos] = (in[26 + inpos] >>> 8)
| ((in[27 + inpos] & 15) << (28 - 4));
out[31 + outpos] = (in[27 + inpos] >>> 4);
}
protected static void fastunpack29(final int[] in, int inpos,
final int[] out, int outpos) {
out[0 + outpos] = ((in[0 + inpos] >>> 0) & 536870911);
out[1 + outpos] = (in[0 + inpos] >>> 29)
| ((in[1 + inpos] & 67108863) << (29 - 26));
out[2 + outpos] = (in[1 + inpos] >>> 26)
| ((in[2 + inpos] & 8388607) << (29 - 23));
out[3 + outpos] = (in[2 + inpos] >>> 23)
| ((in[3 + inpos] & 1048575) << (29 - 20));
out[4 + outpos] = (in[3 + inpos] >>> 20)
| ((in[4 + inpos] & 131071) << (29 - 17));
out[5 + outpos] = (in[4 + inpos] >>> 17)
| ((in[5 + inpos] & 16383) << (29 - 14));
out[6 + outpos] = (in[5 + inpos] >>> 14)
| ((in[6 + inpos] & 2047) << (29 - 11));
out[7 + outpos] = (in[6 + inpos] >>> 11)
| ((in[7 + inpos] & 255) << (29 - 8));
out[8 + outpos] = (in[7 + inpos] >>> 8)
| ((in[8 + inpos] & 31) << (29 - 5));
out[9 + outpos] = (in[8 + inpos] >>> 5)
| ((in[9 + inpos] & 3) << (29 - 2));
out[10 + outpos] = ((in[9 + inpos] >>> 2) & 536870911);
out[11 + outpos] = (in[9 + inpos] >>> 31)
| ((in[10 + inpos] & 268435455) << (29 - 28));
out[12 + outpos] = (in[10 + inpos] >>> 28)
| ((in[11 + inpos] & 33554431) << (29 - 25));
out[13 + outpos] = (in[11 + inpos] >>> 25)
| ((in[12 + inpos] & 4194303) << (29 - 22));
out[14 + outpos] = (in[12 + inpos] >>> 22)
| ((in[13 + inpos] & 524287) << (29 - 19));
out[15 + outpos] = (in[13 + inpos] >>> 19)
| ((in[14 + inpos] & 65535) << (29 - 16));
out[16 + outpos] = (in[14 + inpos] >>> 16)
| ((in[15 + inpos] & 8191) << (29 - 13));
out[17 + outpos] = (in[15 + inpos] >>> 13)
| ((in[16 + inpos] & 1023) << (29 - 10));
out[18 + outpos] = (in[16 + inpos] >>> 10)
| ((in[17 + inpos] & 127) << (29 - 7));
out[19 + outpos] = (in[17 + inpos] >>> 7)
| ((in[18 + inpos] & 15) << (29 - 4));
out[20 + outpos] = (in[18 + inpos] >>> 4)
| ((in[19 + inpos] & 1) << (29 - 1));
out[21 + outpos] = ((in[19 + inpos] >>> 1) & 536870911);
out[22 + outpos] = (in[19 + inpos] >>> 30)
| ((in[20 + inpos] & 134217727) << (29 - 27));
out[23 + outpos] = (in[20 + inpos] >>> 27)
| ((in[21 + inpos] & 16777215) << (29 - 24));
out[24 + outpos] = (in[21 + inpos] >>> 24)
| ((in[22 + inpos] & 2097151) << (29 - 21));
out[25 + outpos] = (in[22 + inpos] >>> 21)
| ((in[23 + inpos] & 262143) << (29 - 18));
out[26 + outpos] = (in[23 + inpos] >>> 18)
| ((in[24 + inpos] & 32767) << (29 - 15));
out[27 + outpos] = (in[24 + inpos] >>> 15)
| ((in[25 + inpos] & 4095) << (29 - 12));
out[28 + outpos] = (in[25 + inpos] >>> 12)
| ((in[26 + inpos] & 511) << (29 - 9));
out[29 + outpos] = (in[26 + inpos] >>> 9)
| ((in[27 + inpos] & 63) << (29 - 6));
out[30 + outpos] = (in[27 + inpos] >>> 6)
| ((in[28 + inpos] & 7) << (29 - 3));
out[31 + outpos] = (in[28 + inpos] >>> 3);
}
protected static void fastunpack3(final int[] in, int inpos,
final int[] out, int outpos) {
out[0 + outpos] = ((in[0 + inpos] >>> 0) & 7);
out[1 + outpos] = ((in[0 + inpos] >>> 3) & 7);
out[2 + outpos] = ((in[0 + inpos] >>> 6) & 7);
out[3 + outpos] = ((in[0 + inpos] >>> 9) & 7);
out[4 + outpos] = ((in[0 + inpos] >>> 12) & 7);
out[5 + outpos] = ((in[0 + inpos] >>> 15) & 7);
out[6 + outpos] = ((in[0 + inpos] >>> 18) & 7);
out[7 + outpos] = ((in[0 + inpos] >>> 21) & 7);
out[8 + outpos] = ((in[0 + inpos] >>> 24) & 7);
out[9 + outpos] = ((in[0 + inpos] >>> 27) & 7);
out[10 + outpos] = (in[0 + inpos] >>> 30)
| ((in[1 + inpos] & 1) << (3 - 1));
out[11 + outpos] = ((in[1 + inpos] >>> 1) & 7);
out[12 + outpos] = ((in[1 + inpos] >>> 4) & 7);
out[13 + outpos] = ((in[1 + inpos] >>> 7) & 7);
out[14 + outpos] = ((in[1 + inpos] >>> 10) & 7);
out[15 + outpos] = ((in[1 + inpos] >>> 13) & 7);
out[16 + outpos] = ((in[1 + inpos] >>> 16) & 7);
out[17 + outpos] = ((in[1 + inpos] >>> 19) & 7);
out[18 + outpos] = ((in[1 + inpos] >>> 22) & 7);
out[19 + outpos] = ((in[1 + inpos] >>> 25) & 7);
out[20 + outpos] = ((in[1 + inpos] >>> 28) & 7);
out[21 + outpos] = (in[1 + inpos] >>> 31)
| ((in[2 + inpos] & 3) << (3 - 2));
out[22 + outpos] = ((in[2 + inpos] >>> 2) & 7);
out[23 + outpos] = ((in[2 + inpos] >>> 5) & 7);
out[24 + outpos] = ((in[2 + inpos] >>> 8) & 7);
out[25 + outpos] = ((in[2 + inpos] >>> 11) & 7);
out[26 + outpos] = ((in[2 + inpos] >>> 14) & 7);
out[27 + outpos] = ((in[2 + inpos] >>> 17) & 7);
out[28 + outpos] = ((in[2 + inpos] >>> 20) & 7);
out[29 + outpos] = ((in[2 + inpos] >>> 23) & 7);
out[30 + outpos] = ((in[2 + inpos] >>> 26) & 7);
out[31 + outpos] = (in[2 + inpos] >>> 29);
}
protected static void fastunpack30(final int[] in, int inpos,
final int[] out, int outpos) {
out[0 + outpos] = ((in[0 + inpos] >>> 0) & 1073741823);
out[1 + outpos] = (in[0 + inpos] >>> 30)
| ((in[1 + inpos] & 268435455) << (30 - 28));
out[2 + outpos] = (in[1 + inpos] >>> 28)
| ((in[2 + inpos] & 67108863) << (30 - 26));
out[3 + outpos] = (in[2 + inpos] >>> 26)
| ((in[3 + inpos] & 16777215) << (30 - 24));
out[4 + outpos] = (in[3 + inpos] >>> 24)
| ((in[4 + inpos] & 4194303) << (30 - 22));
out[5 + outpos] = (in[4 + inpos] >>> 22)
| ((in[5 + inpos] & 1048575) << (30 - 20));
out[6 + outpos] = (in[5 + inpos] >>> 20)
| ((in[6 + inpos] & 262143) << (30 - 18));
out[7 + outpos] = (in[6 + inpos] >>> 18)
| ((in[7 + inpos] & 65535) << (30 - 16));
out[8 + outpos] = (in[7 + inpos] >>> 16)
| ((in[8 + inpos] & 16383) << (30 - 14));
out[9 + outpos] = (in[8 + inpos] >>> 14)
| ((in[9 + inpos] & 4095) << (30 - 12));
out[10 + outpos] = (in[9 + inpos] >>> 12)
| ((in[10 + inpos] & 1023) << (30 - 10));
out[11 + outpos] = (in[10 + inpos] >>> 10)
| ((in[11 + inpos] & 255) << (30 - 8));
out[12 + outpos] = (in[11 + inpos] >>> 8)
| ((in[12 + inpos] & 63) << (30 - 6));
out[13 + outpos] = (in[12 + inpos] >>> 6)
| ((in[13 + inpos] & 15) << (30 - 4));
out[14 + outpos] = (in[13 + inpos] >>> 4)
| ((in[14 + inpos] & 3) << (30 - 2));
out[15 + outpos] = (in[14 + inpos] >>> 2);
out[16 + outpos] = ((in[15 + inpos] >>> 0) & 1073741823);
out[17 + outpos] = (in[15 + inpos] >>> 30)
| ((in[16 + inpos] & 268435455) << (30 - 28));
out[18 + outpos] = (in[16 + inpos] >>> 28)
| ((in[17 + inpos] & 67108863) << (30 - 26));
out[19 + outpos] = (in[17 + inpos] >>> 26)
| ((in[18 + inpos] & 16777215) << (30 - 24));
out[20 + outpos] = (in[18 + inpos] >>> 24)
| ((in[19 + inpos] & 4194303) << (30 - 22));
out[21 + outpos] = (in[19 + inpos] >>> 22)
| ((in[20 + inpos] & 1048575) << (30 - 20));
out[22 + outpos] = (in[20 + inpos] >>> 20)
| ((in[21 + inpos] & 262143) << (30 - 18));
out[23 + outpos] = (in[21 + inpos] >>> 18)
| ((in[22 + inpos] & 65535) << (30 - 16));
out[24 + outpos] = (in[22 + inpos] >>> 16)
| ((in[23 + inpos] & 16383) << (30 - 14));
out[25 + outpos] = (in[23 + inpos] >>> 14)
| ((in[24 + inpos] & 4095) << (30 - 12));
out[26 + outpos] = (in[24 + inpos] >>> 12)
| ((in[25 + inpos] & 1023) << (30 - 10));
out[27 + outpos] = (in[25 + inpos] >>> 10)
| ((in[26 + inpos] & 255) << (30 - 8));
out[28 + outpos] = (in[26 + inpos] >>> 8)
| ((in[27 + inpos] & 63) << (30 - 6));
out[29 + outpos] = (in[27 + inpos] >>> 6)
| ((in[28 + inpos] & 15) << (30 - 4));
out[30 + outpos] = (in[28 + inpos] >>> 4)
| ((in[29 + inpos] & 3) << (30 - 2));
out[31 + outpos] = (in[29 + inpos] >>> 2);
}
protected static void fastunpack31(final int[] in, int inpos,
final int[] out, int outpos) {
out[0 + outpos] = ((in[0 + inpos] >>> 0) & 2147483647);
out[1 + outpos] = (in[0 + inpos] >>> 31)
| ((in[1 + inpos] & 1073741823) << (31 - 30));
out[2 + outpos] = (in[1 + inpos] >>> 30)
| ((in[2 + inpos] & 536870911) << (31 - 29));
out[3 + outpos] = (in[2 + inpos] >>> 29)
| ((in[3 + inpos] & 268435455) << (31 - 28));
out[4 + outpos] = (in[3 + inpos] >>> 28)
| ((in[4 + inpos] & 134217727) << (31 - 27));
out[5 + outpos] = (in[4 + inpos] >>> 27)
| ((in[5 + inpos] & 67108863) << (31 - 26));
out[6 + outpos] = (in[5 + inpos] >>> 26)
| ((in[6 + inpos] & 33554431) << (31 - 25));
out[7 + outpos] = (in[6 + inpos] >>> 25)
| ((in[7 + inpos] & 16777215) << (31 - 24));
out[8 + outpos] = (in[7 + inpos] >>> 24)
| ((in[8 + inpos] & 8388607) << (31 - 23));
out[9 + outpos] = (in[8 + inpos] >>> 23)
| ((in[9 + inpos] & 4194303) << (31 - 22));
out[10 + outpos] = (in[9 + inpos] >>> 22)
| ((in[10 + inpos] & 2097151) << (31 - 21));
out[11 + outpos] = (in[10 + inpos] >>> 21)
| ((in[11 + inpos] & 1048575) << (31 - 20));
out[12 + outpos] = (in[11 + inpos] >>> 20)
| ((in[12 + inpos] & 524287) << (31 - 19));
out[13 + outpos] = (in[12 + inpos] >>> 19)
| ((in[13 + inpos] & 262143) << (31 - 18));
out[14 + outpos] = (in[13 + inpos] >>> 18)
| ((in[14 + inpos] & 131071) << (31 - 17));
out[15 + outpos] = (in[14 + inpos] >>> 17)
| ((in[15 + inpos] & 65535) << (31 - 16));
out[16 + outpos] = (in[15 + inpos] >>> 16)
| ((in[16 + inpos] & 32767) << (31 - 15));
out[17 + outpos] = (in[16 + inpos] >>> 15)
| ((in[17 + inpos] & 16383) << (31 - 14));
out[18 + outpos] = (in[17 + inpos] >>> 14)
| ((in[18 + inpos] & 8191) << (31 - 13));
out[19 + outpos] = (in[18 + inpos] >>> 13)
| ((in[19 + inpos] & 4095) << (31 - 12));
out[20 + outpos] = (in[19 + inpos] >>> 12)
| ((in[20 + inpos] & 2047) << (31 - 11));
out[21 + outpos] = (in[20 + inpos] >>> 11)
| ((in[21 + inpos] & 1023) << (31 - 10));
out[22 + outpos] = (in[21 + inpos] >>> 10)
| ((in[22 + inpos] & 511) << (31 - 9));
out[23 + outpos] = (in[22 + inpos] >>> 9)
| ((in[23 + inpos] & 255) << (31 - 8));
out[24 + outpos] = (in[23 + inpos] >>> 8)
| ((in[24 + inpos] & 127) << (31 - 7));
out[25 + outpos] = (in[24 + inpos] >>> 7)
| ((in[25 + inpos] & 63) << (31 - 6));
out[26 + outpos] = (in[25 + inpos] >>> 6)
| ((in[26 + inpos] & 31) << (31 - 5));
out[27 + outpos] = (in[26 + inpos] >>> 5)
| ((in[27 + inpos] & 15) << (31 - 4));
out[28 + outpos] = (in[27 + inpos] >>> 4)
| ((in[28 + inpos] & 7) << (31 - 3));
out[29 + outpos] = (in[28 + inpos] >>> 3)
| ((in[29 + inpos] & 3) << (31 - 2));
out[30 + outpos] = (in[29 + inpos] >>> 2)
| ((in[30 + inpos] & 1) << (31 - 1));
out[31 + outpos] = (in[30 + inpos] >>> 1);
}
protected static void fastunpack32(final int[] in, int inpos,
final int[] out, int outpos) {
System.arraycopy(in, inpos, out, outpos, 32);
}
protected static void fastunpack4(final int[] in, int inpos,
final int[] out, int outpos) {
out[0 + outpos] = ((in[0 + inpos] >>> 0) & 15);
out[1 + outpos] = ((in[0 + inpos] >>> 4) & 15);
out[2 + outpos] = ((in[0 + inpos] >>> 8) & 15);
out[3 + outpos] = ((in[0 + inpos] >>> 12) & 15);
out[4 + outpos] = ((in[0 + inpos] >>> 16) & 15);
out[5 + outpos] = ((in[0 + inpos] >>> 20) & 15);
out[6 + outpos] = ((in[0 + inpos] >>> 24) & 15);
out[7 + outpos] = (in[0 + inpos] >>> 28);
out[8 + outpos] = ((in[1 + inpos] >>> 0) & 15);
out[9 + outpos] = ((in[1 + inpos] >>> 4) & 15);
out[10 + outpos] = ((in[1 + inpos] >>> 8) & 15);
out[11 + outpos] = ((in[1 + inpos] >>> 12) & 15);
out[12 + outpos] = ((in[1 + inpos] >>> 16) & 15);
out[13 + outpos] = ((in[1 + inpos] >>> 20) & 15);
out[14 + outpos] = ((in[1 + inpos] >>> 24) & 15);
out[15 + outpos] = (in[1 + inpos] >>> 28);
out[16 + outpos] = ((in[2 + inpos] >>> 0) & 15);
out[17 + outpos] = ((in[2 + inpos] >>> 4) & 15);
out[18 + outpos] = ((in[2 + inpos] >>> 8) & 15);
out[19 + outpos] = ((in[2 + inpos] >>> 12) & 15);
out[20 + outpos] = ((in[2 + inpos] >>> 16) & 15);
out[21 + outpos] = ((in[2 + inpos] >>> 20) & 15);
out[22 + outpos] = ((in[2 + inpos] >>> 24) & 15);
out[23 + outpos] = (in[2 + inpos] >>> 28);
out[24 + outpos] = ((in[3 + inpos] >>> 0) & 15);
out[25 + outpos] = ((in[3 + inpos] >>> 4) & 15);
out[26 + outpos] = ((in[3 + inpos] >>> 8) & 15);
out[27 + outpos] = ((in[3 + inpos] >>> 12) & 15);
out[28 + outpos] = ((in[3 + inpos] >>> 16) & 15);
out[29 + outpos] = ((in[3 + inpos] >>> 20) & 15);
out[30 + outpos] = ((in[3 + inpos] >>> 24) & 15);
out[31 + outpos] = (in[3 + inpos] >>> 28);
}
protected static void fastunpack5(final int[] in, int inpos,
final int[] out, int outpos) {
out[0 + outpos] = ((in[0 + inpos] >>> 0) & 31);
out[1 + outpos] = ((in[0 + inpos] >>> 5) & 31);
out[2 + outpos] = ((in[0 + inpos] >>> 10) & 31);
out[3 + outpos] = ((in[0 + inpos] >>> 15) & 31);
out[4 + outpos] = ((in[0 + inpos] >>> 20) & 31);
out[5 + outpos] = ((in[0 + inpos] >>> 25) & 31);
out[6 + outpos] = (in[0 + inpos] >>> 30)
| ((in[1 + inpos] & 7) << (5 - 3));
out[7 + outpos] = ((in[1 + inpos] >>> 3) & 31);
out[8 + outpos] = ((in[1 + inpos] >>> 8) & 31);
out[9 + outpos] = ((in[1 + inpos] >>> 13) & 31);
out[10 + outpos] = ((in[1 + inpos] >>> 18) & 31);
out[11 + outpos] = ((in[1 + inpos] >>> 23) & 31);
out[12 + outpos] = (in[1 + inpos] >>> 28)
| ((in[2 + inpos] & 1) << (5 - 1));
out[13 + outpos] = ((in[2 + inpos] >>> 1) & 31);
out[14 + outpos] = ((in[2 + inpos] >>> 6) & 31);
out[15 + outpos] = ((in[2 + inpos] >>> 11) & 31);
out[16 + outpos] = ((in[2 + inpos] >>> 16) & 31);
out[17 + outpos] = ((in[2 + inpos] >>> 21) & 31);
out[18 + outpos] = ((in[2 + inpos] >>> 26) & 31);
out[19 + outpos] = (in[2 + inpos] >>> 31)
| ((in[3 + inpos] & 15) << (5 - 4));
out[20 + outpos] = ((in[3 + inpos] >>> 4) & 31);
out[21 + outpos] = ((in[3 + inpos] >>> 9) & 31);
out[22 + outpos] = ((in[3 + inpos] >>> 14) & 31);
out[23 + outpos] = ((in[3 + inpos] >>> 19) & 31);
out[24 + outpos] = ((in[3 + inpos] >>> 24) & 31);
out[25 + outpos] = (in[3 + inpos] >>> 29)
| ((in[4 + inpos] & 3) << (5 - 2));
out[26 + outpos] = ((in[4 + inpos] >>> 2) & 31);
out[27 + outpos] = ((in[4 + inpos] >>> 7) & 31);
out[28 + outpos] = ((in[4 + inpos] >>> 12) & 31);
out[29 + outpos] = ((in[4 + inpos] >>> 17) & 31);
out[30 + outpos] = ((in[4 + inpos] >>> 22) & 31);
out[31 + outpos] = (in[4 + inpos] >>> 27);
}
protected static void fastunpack6(final int[] in, int inpos,
final int[] out, int outpos) {
out[0 + outpos] = ((in[0 + inpos] >>> 0) & 63);
out[1 + outpos] = ((in[0 + inpos] >>> 6) & 63);
out[2 + outpos] = ((in[0 + inpos] >>> 12) & 63);
out[3 + outpos] = ((in[0 + inpos] >>> 18) & 63);
out[4 + outpos] = ((in[0 + inpos] >>> 24) & 63);
out[5 + outpos] = (in[0 + inpos] >>> 30)
| ((in[1 + inpos] & 15) << (6 - 4));
out[6 + outpos] = ((in[1 + inpos] >>> 4) & 63);
out[7 + outpos] = ((in[1 + inpos] >>> 10) & 63);
out[8 + outpos] = ((in[1 + inpos] >>> 16) & 63);
out[9 + outpos] = ((in[1 + inpos] >>> 22) & 63);
out[10 + outpos] = (in[1 + inpos] >>> 28)
| ((in[2 + inpos] & 3) << (6 - 2));
out[11 + outpos] = ((in[2 + inpos] >>> 2) & 63);
out[12 + outpos] = ((in[2 + inpos] >>> 8) & 63);
out[13 + outpos] = ((in[2 + inpos] >>> 14) & 63);
out[14 + outpos] = ((in[2 + inpos] >>> 20) & 63);
out[15 + outpos] = (in[2 + inpos] >>> 26);
out[16 + outpos] = ((in[3 + inpos] >>> 0) & 63);
out[17 + outpos] = ((in[3 + inpos] >>> 6) & 63);
out[18 + outpos] = ((in[3 + inpos] >>> 12) & 63);
out[19 + outpos] = ((in[3 + inpos] >>> 18) & 63);
out[20 + outpos] = ((in[3 + inpos] >>> 24) & 63);
out[21 + outpos] = (in[3 + inpos] >>> 30)
| ((in[4 + inpos] & 15) << (6 - 4));
out[22 + outpos] = ((in[4 + inpos] >>> 4) & 63);
out[23 + outpos] = ((in[4 + inpos] >>> 10) & 63);
out[24 + outpos] = ((in[4 + inpos] >>> 16) & 63);
out[25 + outpos] = ((in[4 + inpos] >>> 22) & 63);
out[26 + outpos] = (in[4 + inpos] >>> 28)
| ((in[5 + inpos] & 3) << (6 - 2));
out[27 + outpos] = ((in[5 + inpos] >>> 2) & 63);
out[28 + outpos] = ((in[5 + inpos] >>> 8) & 63);
out[29 + outpos] = ((in[5 + inpos] >>> 14) & 63);
out[30 + outpos] = ((in[5 + inpos] >>> 20) & 63);
out[31 + outpos] = (in[5 + inpos] >>> 26);
}
protected static void fastunpack7(final int[] in, int inpos,
final int[] out, int outpos) {
out[0 + outpos] = ((in[0 + inpos] >>> 0) & 127);
out[1 + outpos] = ((in[0 + inpos] >>> 7) & 127);
out[2 + outpos] = ((in[0 + inpos] >>> 14) & 127);
out[3 + outpos] = ((in[0 + inpos] >>> 21) & 127);
out[4 + outpos] = (in[0 + inpos] >>> 28)
| ((in[1 + inpos] & 7) << (7 - 3));
out[5 + outpos] = ((in[1 + inpos] >>> 3) & 127);
out[6 + outpos] = ((in[1 + inpos] >>> 10) & 127);
out[7 + outpos] = ((in[1 + inpos] >>> 17) & 127);
out[8 + outpos] = ((in[1 + inpos] >>> 24) & 127);
out[9 + outpos] = (in[1 + inpos] >>> 31)
| ((in[2 + inpos] & 63) << (7 - 6));
out[10 + outpos] = ((in[2 + inpos] >>> 6) & 127);
out[11 + outpos] = ((in[2 + inpos] >>> 13) & 127);
out[12 + outpos] = ((in[2 + inpos] >>> 20) & 127);
out[13 + outpos] = (in[2 + inpos] >>> 27)
| ((in[3 + inpos] & 3) << (7 - 2));
out[14 + outpos] = ((in[3 + inpos] >>> 2) & 127);
out[15 + outpos] = ((in[3 + inpos] >>> 9) & 127);
out[16 + outpos] = ((in[3 + inpos] >>> 16) & 127);
out[17 + outpos] = ((in[3 + inpos] >>> 23) & 127);
out[18 + outpos] = (in[3 + inpos] >>> 30)
| ((in[4 + inpos] & 31) << (7 - 5));
out[19 + outpos] = ((in[4 + inpos] >>> 5) & 127);
out[20 + outpos] = ((in[4 + inpos] >>> 12) & 127);
out[21 + outpos] = ((in[4 + inpos] >>> 19) & 127);
out[22 + outpos] = (in[4 + inpos] >>> 26)
| ((in[5 + inpos] & 1) << (7 - 1));
out[23 + outpos] = ((in[5 + inpos] >>> 1) & 127);
out[24 + outpos] = ((in[5 + inpos] >>> 8) & 127);
out[25 + outpos] = ((in[5 + inpos] >>> 15) & 127);
out[26 + outpos] = ((in[5 + inpos] >>> 22) & 127);
out[27 + outpos] = (in[5 + inpos] >>> 29)
| ((in[6 + inpos] & 15) << (7 - 4));
out[28 + outpos] = ((in[6 + inpos] >>> 4) & 127);
out[29 + outpos] = ((in[6 + inpos] >>> 11) & 127);
out[30 + outpos] = ((in[6 + inpos] >>> 18) & 127);
out[31 + outpos] = (in[6 + inpos] >>> 25);
}
protected static void fastunpack8(final int[] in, int inpos,
final int[] out, int outpos) {
out[0 + outpos] = ((in[0 + inpos] >>> 0) & 255);
out[1 + outpos] = ((in[0 + inpos] >>> 8) & 255);
out[2 + outpos] = ((in[0 + inpos] >>> 16) & 255);
out[3 + outpos] = (in[0 + inpos] >>> 24);
out[4 + outpos] = ((in[1 + inpos] >>> 0) & 255);
out[5 + outpos] = ((in[1 + inpos] >>> 8) & 255);
out[6 + outpos] = ((in[1 + inpos] >>> 16) & 255);
out[7 + outpos] = (in[1 + inpos] >>> 24);
out[8 + outpos] = ((in[2 + inpos] >>> 0) & 255);
out[9 + outpos] = ((in[2 + inpos] >>> 8) & 255);
out[10 + outpos] = ((in[2 + inpos] >>> 16) & 255);
out[11 + outpos] = (in[2 + inpos] >>> 24);
out[12 + outpos] = ((in[3 + inpos] >>> 0) & 255);
out[13 + outpos] = ((in[3 + inpos] >>> 8) & 255);
out[14 + outpos] = ((in[3 + inpos] >>> 16) & 255);
out[15 + outpos] = (in[3 + inpos] >>> 24);
out[16 + outpos] = ((in[4 + inpos] >>> 0) & 255);
out[17 + outpos] = ((in[4 + inpos] >>> 8) & 255);
out[18 + outpos] = ((in[4 + inpos] >>> 16) & 255);
out[19 + outpos] = (in[4 + inpos] >>> 24);
out[20 + outpos] = ((in[5 + inpos] >>> 0) & 255);
out[21 + outpos] = ((in[5 + inpos] >>> 8) & 255);
out[22 + outpos] = ((in[5 + inpos] >>> 16) & 255);
out[23 + outpos] = (in[5 + inpos] >>> 24);
out[24 + outpos] = ((in[6 + inpos] >>> 0) & 255);
out[25 + outpos] = ((in[6 + inpos] >>> 8) & 255);
out[26 + outpos] = ((in[6 + inpos] >>> 16) & 255);
out[27 + outpos] = (in[6 + inpos] >>> 24);
out[28 + outpos] = ((in[7 + inpos] >>> 0) & 255);
out[29 + outpos] = ((in[7 + inpos] >>> 8) & 255);
out[30 + outpos] = ((in[7 + inpos] >>> 16) & 255);
out[31 + outpos] = (in[7 + inpos] >>> 24);
}
protected static void fastunpack9(final int[] in, int inpos,
final int[] out, int outpos) {
out[0 + outpos] = ((in[0 + inpos] >>> 0) & 511);
out[1 + outpos] = ((in[0 + inpos] >>> 9) & 511);
out[2 + outpos] = ((in[0 + inpos] >>> 18) & 511);
out[3 + outpos] = (in[0 + inpos] >>> 27)
| ((in[1 + inpos] & 15) << (9 - 4));
out[4 + outpos] = ((in[1 + inpos] >>> 4) & 511);
out[5 + outpos] = ((in[1 + inpos] >>> 13) & 511);
out[6 + outpos] = ((in[1 + inpos] >>> 22) & 511);
out[7 + outpos] = (in[1 + inpos] >>> 31)
| ((in[2 + inpos] & 255) << (9 - 8));
out[8 + outpos] = ((in[2 + inpos] >>> 8) & 511);
out[9 + outpos] = ((in[2 + inpos] >>> 17) & 511);
out[10 + outpos] = (in[2 + inpos] >>> 26)
| ((in[3 + inpos] & 7) << (9 - 3));
out[11 + outpos] = ((in[3 + inpos] >>> 3) & 511);
out[12 + outpos] = ((in[3 + inpos] >>> 12) & 511);
out[13 + outpos] = ((in[3 + inpos] >>> 21) & 511);
out[14 + outpos] = (in[3 + inpos] >>> 30)
| ((in[4 + inpos] & 127) << (9 - 7));
out[15 + outpos] = ((in[4 + inpos] >>> 7) & 511);
out[16 + outpos] = ((in[4 + inpos] >>> 16) & 511);
out[17 + outpos] = (in[4 + inpos] >>> 25)
| ((in[5 + inpos] & 3) << (9 - 2));
out[18 + outpos] = ((in[5 + inpos] >>> 2) & 511);
out[19 + outpos] = ((in[5 + inpos] >>> 11) & 511);
out[20 + outpos] = ((in[5 + inpos] >>> 20) & 511);
out[21 + outpos] = (in[5 + inpos] >>> 29)
| ((in[6 + inpos] & 63) << (9 - 6));
out[22 + outpos] = ((in[6 + inpos] >>> 6) & 511);
out[23 + outpos] = ((in[6 + inpos] >>> 15) & 511);
out[24 + outpos] = (in[6 + inpos] >>> 24)
| ((in[7 + inpos] & 1) << (9 - 1));
out[25 + outpos] = ((in[7 + inpos] >>> 1) & 511);
out[26 + outpos] = ((in[7 + inpos] >>> 10) & 511);
out[27 + outpos] = ((in[7 + inpos] >>> 19) & 511);
out[28 + outpos] = (in[7 + inpos] >>> 28)
| ((in[8 + inpos] & 31) << (9 - 5));
out[29 + outpos] = ((in[8 + inpos] >>> 5) & 511);
out[30 + outpos] = ((in[8 + inpos] >>> 14) & 511);
out[31 + outpos] = (in[8 + inpos] >>> 23);
}
}