private void expand1(byte[] src, byte[] dst) {
        for (int i = 1, n = dst.length; i < n; i += 8) {
            int val = src[1 + (i >> 3)] & 255;
            switch (n - i) {
                default:
                    dst[i + 7] = (byte) ((val) & 1);
                case 7:
                    dst[i + 6] = (byte) ((val >> 1) & 1);
                case 6:
                    dst[i + 5] = (byte) ((val >> 2) & 1);
                case 5:
                    dst[i + 4] = (byte) ((val >> 3) & 1);
                case 4:
                    dst[i + 3] = (byte) ((val >> 4) & 1);
                case 3:
                    dst[i + 2] = (byte) ((val >> 5) & 1);
                case 2:
                    dst[i + 1] = (byte) ((val >> 6) & 1);
                case 1:
                    dst[i] = (byte) ((val >> 7));
            }
        }
    }