// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements.  See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership.  The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License.  You may obtain a copy of the License at
//
//   http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied.  See the License for the
// specific language governing permissions and limitations
// under the License.

// This file was modified from its original version for inclusion in parquet-cpp.
// Original source:
// https://github.com/lemire/FrameOfReference/blob/6ccaf9e97160f9a3b299e23a8ef739e711ef0c71/src/bpacking.cpp
// The original copyright notice follows.

/**
*
* This code is released under the
* Apache License Version 2.0 http://www.apache.org/licenses/.
* (c) Daniel Lemire 2013
*/

#ifndef PARQUET_UTIL_BPACKING_H
#define PARQUET_UTIL_BPACKING_H

#include <stdexcept>

namespace parquet {

inline const uint32_t* unpack1_32(const uint32_t* in, uint32_t* out) {
  *out = ((*in) >> 0) & 1;
  out++;
  *out = ((*in) >> 1) & 1;
  out++;
  *out = ((*in) >> 2) & 1;
  out++;
  *out = ((*in) >> 3) & 1;
  out++;
  *out = ((*in) >> 4) & 1;
  out++;
  *out = ((*in) >> 5) & 1;
  out++;
  *out = ((*in) >> 6) & 1;
  out++;
  *out = ((*in) >> 7) & 1;
  out++;
  *out = ((*in) >> 8) & 1;
  out++;
  *out = ((*in) >> 9) & 1;
  out++;
  *out = ((*in) >> 10) & 1;
  out++;
  *out = ((*in) >> 11) & 1;
  out++;
  *out = ((*in) >> 12) & 1;
  out++;
  *out = ((*in) >> 13) & 1;
  out++;
  *out = ((*in) >> 14) & 1;
  out++;
  *out = ((*in) >> 15) & 1;
  out++;
  *out = ((*in) >> 16) & 1;
  out++;
  *out = ((*in) >> 17) & 1;
  out++;
  *out = ((*in) >> 18) & 1;
  out++;
  *out = ((*in) >> 19) & 1;
  out++;
  *out = ((*in) >> 20) & 1;
  out++;
  *out = ((*in) >> 21) & 1;
  out++;
  *out = ((*in) >> 22) & 1;
  out++;
  *out = ((*in) >> 23) & 1;
  out++;
  *out = ((*in) >> 24) & 1;
  out++;
  *out = ((*in) >> 25) & 1;
  out++;
  *out = ((*in) >> 26) & 1;
  out++;
  *out = ((*in) >> 27) & 1;
  out++;
  *out = ((*in) >> 28) & 1;
  out++;
  *out = ((*in) >> 29) & 1;
  out++;
  *out = ((*in) >> 30) & 1;
  out++;
  *out = ((*in) >> 31);
  ++in;
  out++;

  return in;
}

inline const uint32_t* unpack2_32(const uint32_t* in, uint32_t* out) {
  *out = ((*in) >> 0) % (1U << 2);
  out++;
  *out = ((*in) >> 2) % (1U << 2);
  out++;
  *out = ((*in) >> 4) % (1U << 2);
  out++;
  *out = ((*in) >> 6) % (1U << 2);
  out++;
  *out = ((*in) >> 8) % (1U << 2);
  out++;
  *out = ((*in) >> 10) % (1U << 2);
  out++;
  *out = ((*in) >> 12) % (1U << 2);
  out++;
  *out = ((*in) >> 14) % (1U << 2);
  out++;
  *out = ((*in) >> 16) % (1U << 2);
  out++;
  *out = ((*in) >> 18) % (1U << 2);
  out++;
  *out = ((*in) >> 20) % (1U << 2);
  out++;
  *out = ((*in) >> 22) % (1U << 2);
  out++;
  *out = ((*in) >> 24) % (1U << 2);
  out++;
  *out = ((*in) >> 26) % (1U << 2);
  out++;
  *out = ((*in) >> 28) % (1U << 2);
  out++;
  *out = ((*in) >> 30);
  ++in;
  out++;
  *out = ((*in) >> 0) % (1U << 2);
  out++;
  *out = ((*in) >> 2) % (1U << 2);
  out++;
  *out = ((*in) >> 4) % (1U << 2);
  out++;
  *out = ((*in) >> 6) % (1U << 2);
  out++;
  *out = ((*in) >> 8) % (1U << 2);
  out++;
  *out = ((*in) >> 10) % (1U << 2);
  out++;
  *out = ((*in) >> 12) % (1U << 2);
  out++;
  *out = ((*in) >> 14) % (1U << 2);
  out++;
  *out = ((*in) >> 16) % (1U << 2);
  out++;
  *out = ((*in) >> 18) % (1U << 2);
  out++;
  *out = ((*in) >> 20) % (1U << 2);
  out++;
  *out = ((*in) >> 22) % (1U << 2);
  out++;
  *out = ((*in) >> 24) % (1U << 2);
  out++;
  *out = ((*in) >> 26) % (1U << 2);
  out++;
  *out = ((*in) >> 28) % (1U << 2);
  out++;
  *out = ((*in) >> 30);
  ++in;
  out++;

  return in;
}

inline const uint32_t* unpack3_32(const uint32_t* in, uint32_t* out) {
  *out = ((*in) >> 0) % (1U << 3);
  out++;
  *out = ((*in) >> 3) % (1U << 3);
  out++;
  *out = ((*in) >> 6) % (1U << 3);
  out++;
  *out = ((*in) >> 9) % (1U << 3);
  out++;
  *out = ((*in) >> 12) % (1U << 3);
  out++;
  *out = ((*in) >> 15) % (1U << 3);
  out++;
  *out = ((*in) >> 18) % (1U << 3);
  out++;
  *out = ((*in) >> 21) % (1U << 3);
  out++;
  *out = ((*in) >> 24) % (1U << 3);
  out++;
  *out = ((*in) >> 27) % (1U << 3);
  out++;
  *out = ((*in) >> 30);
  ++in;
  *out |= ((*in) % (1U << 1)) << (3 - 1);
  out++;
  *out = ((*in) >> 1) % (1U << 3);
  out++;
  *out = ((*in) >> 4) % (1U << 3);
  out++;
  *out = ((*in) >> 7) % (1U << 3);
  out++;
  *out = ((*in) >> 10) % (1U << 3);
  out++;
  *out = ((*in) >> 13) % (1U << 3);
  out++;
  *out = ((*in) >> 16) % (1U << 3);
  out++;
  *out = ((*in) >> 19) % (1U << 3);
  out++;
  *out = ((*in) >> 22) % (1U << 3);
  out++;
  *out = ((*in) >> 25) % (1U << 3);
  out++;
  *out = ((*in) >> 28) % (1U << 3);
  out++;
  *out = ((*in) >> 31);
  ++in;
  *out |= ((*in) % (1U << 2)) << (3 - 2);
  out++;
  *out = ((*in) >> 2) % (1U << 3);
  out++;
  *out = ((*in) >> 5) % (1U << 3);
  out++;
  *out = ((*in) >> 8) % (1U << 3);
  out++;
  *out = ((*in) >> 11) % (1U << 3);
  out++;
  *out = ((*in) >> 14) % (1U << 3);
  out++;
  *out = ((*in) >> 17) % (1U << 3);
  out++;
  *out = ((*in) >> 20) % (1U << 3);
  out++;
  *out = ((*in) >> 23) % (1U << 3);
  out++;
  *out = ((*in) >> 26) % (1U << 3);
  out++;
  *out = ((*in) >> 29);
  ++in;
  out++;

  return in;
}

inline const uint32_t* unpack4_32(const uint32_t* in, uint32_t* out) {
  *out = ((*in) >> 0) % (1U << 4);
  out++;
  *out = ((*in) >> 4) % (1U << 4);
  out++;
  *out = ((*in) >> 8) % (1U << 4);
  out++;
  *out = ((*in) >> 12) % (1U << 4);
  out++;
  *out = ((*in) >> 16) % (1U << 4);
  out++;
  *out = ((*in) >> 20) % (1U << 4);
  out++;
  *out = ((*in) >> 24) % (1U << 4);
  out++;
  *out = ((*in) >> 28);
  ++in;
  out++;
  *out = ((*in) >> 0) % (1U << 4);
  out++;
  *out = ((*in) >> 4) % (1U << 4);
  out++;
  *out = ((*in) >> 8) % (1U << 4);
  out++;
  *out = ((*in) >> 12) % (1U << 4);
  out++;
  *out = ((*in) >> 16) % (1U << 4);
  out++;
  *out = ((*in) >> 20) % (1U << 4);
  out++;
  *out = ((*in) >> 24) % (1U << 4);
  out++;
  *out = ((*in) >> 28);
  ++in;
  out++;
  *out = ((*in) >> 0) % (1U << 4);
  out++;
  *out = ((*in) >> 4) % (1U << 4);
  out++;
  *out = ((*in) >> 8) % (1U << 4);
  out++;
  *out = ((*in) >> 12) % (1U << 4);
  out++;
  *out = ((*in) >> 16) % (1U << 4);
  out++;
  *out = ((*in) >> 20) % (1U << 4);
  out++;
  *out = ((*in) >> 24) % (1U << 4);
  out++;
  *out = ((*in) >> 28);
  ++in;
  out++;
  *out = ((*in) >> 0) % (1U << 4);
  out++;
  *out = ((*in) >> 4) % (1U << 4);
  out++;
  *out = ((*in) >> 8) % (1U << 4);
  out++;
  *out = ((*in) >> 12) % (1U << 4);
  out++;
  *out = ((*in) >> 16) % (1U << 4);
  out++;
  *out = ((*in) >> 20) % (1U << 4);
  out++;
  *out = ((*in) >> 24) % (1U << 4);
  out++;
  *out = ((*in) >> 28);
  ++in;
  out++;

  return in;
}

inline const uint32_t* unpack5_32(const uint32_t* in, uint32_t* out) {
  *out = ((*in) >> 0) % (1U << 5);
  out++;
  *out = ((*in) >> 5) % (1U << 5);
  out++;
  *out = ((*in) >> 10) % (1U << 5);
  out++;
  *out = ((*in) >> 15) % (1U << 5);
  out++;
  *out = ((*in) >> 20) % (1U << 5);
  out++;
  *out = ((*in) >> 25) % (1U << 5);
  out++;
  *out = ((*in) >> 30);
  ++in;
  *out |= ((*in) % (1U << 3)) << (5 - 3);
  out++;
  *out = ((*in) >> 3) % (1U << 5);
  out++;
  *out = ((*in) >> 8) % (1U << 5);
  out++;
  *out = ((*in) >> 13) % (1U << 5);
  out++;
  *out = ((*in) >> 18) % (1U << 5);
  out++;
  *out = ((*in) >> 23) % (1U << 5);
  out++;
  *out = ((*in) >> 28);
  ++in;
  *out |= ((*in) % (1U << 1)) << (5 - 1);
  out++;
  *out = ((*in) >> 1) % (1U << 5);
  out++;
  *out = ((*in) >> 6) % (1U << 5);
  out++;
  *out = ((*in) >> 11) % (1U << 5);
  out++;
  *out = ((*in) >> 16) % (1U << 5);
  out++;
  *out = ((*in) >> 21) % (1U << 5);
  out++;
  *out = ((*in) >> 26) % (1U << 5);
  out++;
  *out = ((*in) >> 31);
  ++in;
  *out |= ((*in) % (1U << 4)) << (5 - 4);
  out++;
  *out = ((*in) >> 4) % (1U << 5);
  out++;
  *out = ((*in) >> 9) % (1U << 5);
  out++;
  *out = ((*in) >> 14) % (1U << 5);
  out++;
  *out = ((*in) >> 19) % (1U << 5);
  out++;
  *out = ((*in) >> 24) % (1U << 5);
  out++;
  *out = ((*in) >> 29);
  ++in;
  *out |= ((*in) % (1U << 2)) << (5 - 2);
  out++;
  *out = ((*in) >> 2) % (1U << 5);
  out++;
  *out = ((*in) >> 7) % (1U << 5);
  out++;
  *out = ((*in) >> 12) % (1U << 5);
  out++;
  *out = ((*in) >> 17) % (1U << 5);
  out++;
  *out = ((*in) >> 22) % (1U << 5);
  out++;
  *out = ((*in) >> 27);
  ++in;
  out++;

  return in;
}

inline const uint32_t* unpack6_32(const uint32_t* in, uint32_t* out) {
  *out = ((*in) >> 0) % (1U << 6);
  out++;
  *out = ((*in) >> 6) % (1U << 6);
  out++;
  *out = ((*in) >> 12) % (1U << 6);
  out++;
  *out = ((*in) >> 18) % (1U << 6);
  out++;
  *out = ((*in) >> 24) % (1U << 6);
  out++;
  *out = ((*in) >> 30);
  ++in;
  *out |= ((*in) % (1U << 4)) << (6 - 4);
  out++;
  *out = ((*in) >> 4) % (1U << 6);
  out++;
  *out = ((*in) >> 10) % (1U << 6);
  out++;
  *out = ((*in) >> 16) % (1U << 6);
  out++;
  *out = ((*in) >> 22) % (1U << 6);
  out++;
  *out = ((*in) >> 28);
  ++in;
  *out |= ((*in) % (1U << 2)) << (6 - 2);
  out++;
  *out = ((*in) >> 2) % (1U << 6);
  out++;
  *out = ((*in) >> 8) % (1U << 6);
  out++;
  *out = ((*in) >> 14) % (1U << 6);
  out++;
  *out = ((*in) >> 20) % (1U << 6);
  out++;
  *out = ((*in) >> 26);
  ++in;
  out++;
  *out = ((*in) >> 0) % (1U << 6);
  out++;
  *out = ((*in) >> 6) % (1U << 6);
  out++;
  *out = ((*in) >> 12) % (1U << 6);
  out++;
  *out = ((*in) >> 18) % (1U << 6);
  out++;
  *out = ((*in) >> 24) % (1U << 6);
  out++;
  *out = ((*in) >> 30);
  ++in;
  *out |= ((*in) % (1U << 4)) << (6 - 4);
  out++;
  *out = ((*in) >> 4) % (1U << 6);
  out++;
  *out = ((*in) >> 10) % (1U << 6);
  out++;
  *out = ((*in) >> 16) % (1U << 6);
  out++;
  *out = ((*in) >> 22) % (1U << 6);
  out++;
  *out = ((*in) >> 28);
  ++in;
  *out |= ((*in) % (1U << 2)) << (6 - 2);
  out++;
  *out = ((*in) >> 2) % (1U << 6);
  out++;
  *out = ((*in) >> 8) % (1U << 6);
  out++;
  *out = ((*in) >> 14) % (1U << 6);
  out++;
  *out = ((*in) >> 20) % (1U << 6);
  out++;
  *out = ((*in) >> 26);
  ++in;
  out++;

  return in;
}

inline const uint32_t* unpack7_32(const uint32_t* in, uint32_t* out) {
  *out = ((*in) >> 0) % (1U << 7);
  out++;
  *out = ((*in) >> 7) % (1U << 7);
  out++;
  *out = ((*in) >> 14) % (1U << 7);
  out++;
  *out = ((*in) >> 21) % (1U << 7);
  out++;
  *out = ((*in) >> 28);
  ++in;
  *out |= ((*in) % (1U << 3)) << (7 - 3);
  out++;
  *out = ((*in) >> 3) % (1U << 7);
  out++;
  *out = ((*in) >> 10) % (1U << 7);
  out++;
  *out = ((*in) >> 17) % (1U << 7);
  out++;
  *out = ((*in) >> 24) % (1U << 7);
  out++;
  *out = ((*in) >> 31);
  ++in;
  *out |= ((*in) % (1U << 6)) << (7 - 6);
  out++;
  *out = ((*in) >> 6) % (1U << 7);
  out++;
  *out = ((*in) >> 13) % (1U << 7);
  out++;
  *out = ((*in) >> 20) % (1U << 7);
  out++;
  *out = ((*in) >> 27);
  ++in;
  *out |= ((*in) % (1U << 2)) << (7 - 2);
  out++;
  *out = ((*in) >> 2) % (1U << 7);
  out++;
  *out = ((*in) >> 9) % (1U << 7);
  out++;
  *out = ((*in) >> 16) % (1U << 7);
  out++;
  *out = ((*in) >> 23) % (1U << 7);
  out++;
  *out = ((*in) >> 30);
  ++in;
  *out |= ((*in) % (1U << 5)) << (7 - 5);
  out++;
  *out = ((*in) >> 5) % (1U << 7);
  out++;
  *out = ((*in) >> 12) % (1U << 7);
  out++;
  *out = ((*in) >> 19) % (1U << 7);
  out++;
  *out = ((*in) >> 26);
  ++in;
  *out |= ((*in) % (1U << 1)) << (7 - 1);
  out++;
  *out = ((*in) >> 1) % (1U << 7);
  out++;
  *out = ((*in) >> 8) % (1U << 7);
  out++;
  *out = ((*in) >> 15) % (1U << 7);
  out++;
  *out = ((*in) >> 22) % (1U << 7);
  out++;
  *out = ((*in) >> 29);
  ++in;
  *out |= ((*in) % (1U << 4)) << (7 - 4);
  out++;
  *out = ((*in) >> 4) % (1U << 7);
  out++;
  *out = ((*in) >> 11) % (1U << 7);
  out++;
  *out = ((*in) >> 18) % (1U << 7);
  out++;
  *out = ((*in) >> 25);
  ++in;
  out++;

  return in;
}

inline const uint32_t* unpack8_32(const uint32_t* in, uint32_t* out) {
  *out = ((*in) >> 0) % (1U << 8);
  out++;
  *out = ((*in) >> 8) % (1U << 8);
  out++;
  *out = ((*in) >> 16) % (1U << 8);
  out++;
  *out = ((*in) >> 24);
  ++in;
  out++;
  *out = ((*in) >> 0) % (1U << 8);
  out++;
  *out = ((*in) >> 8) % (1U << 8);
  out++;
  *out = ((*in) >> 16) % (1U << 8);
  out++;
  *out = ((*in) >> 24);
  ++in;
  out++;
  *out = ((*in) >> 0) % (1U << 8);
  out++;
  *out = ((*in) >> 8) % (1U << 8);
  out++;
  *out = ((*in) >> 16) % (1U << 8);
  out++;
  *out = ((*in) >> 24);
  ++in;
  out++;
  *out = ((*in) >> 0) % (1U << 8);
  out++;
  *out = ((*in) >> 8) % (1U << 8);
  out++;
  *out = ((*in) >> 16) % (1U << 8);
  out++;
  *out = ((*in) >> 24);
  ++in;
  out++;
  *out = ((*in) >> 0) % (1U << 8);
  out++;
  *out = ((*in) >> 8) % (1U << 8);
  out++;
  *out = ((*in) >> 16) % (1U << 8);
  out++;
  *out = ((*in) >> 24);
  ++in;
  out++;
  *out = ((*in) >> 0) % (1U << 8);
  out++;
  *out = ((*in) >> 8) % (1U << 8);
  out++;
  *out = ((*in) >> 16) % (1U << 8);
  out++;
  *out = ((*in) >> 24);
  ++in;
  out++;
  *out = ((*in) >> 0) % (1U << 8);
  out++;
  *out = ((*in) >> 8) % (1U << 8);
  out++;
  *out = ((*in) >> 16) % (1U << 8);
  out++;
  *out = ((*in) >> 24);
  ++in;
  out++;
  *out = ((*in) >> 0) % (1U << 8);
  out++;
  *out = ((*in) >> 8) % (1U << 8);
  out++;
  *out = ((*in) >> 16) % (1U << 8);
  out++;
  *out = ((*in) >> 24);
  ++in;
  out++;

  return in;
}

inline const uint32_t* unpack9_32(const uint32_t* in, uint32_t* out) {
  *out = ((*in) >> 0) % (1U << 9);
  out++;
  *out = ((*in) >> 9) % (1U << 9);
  out++;
  *out = ((*in) >> 18) % (1U << 9);
  out++;
  *out = ((*in) >> 27);
  ++in;
  *out |= ((*in) % (1U << 4)) << (9 - 4);
  out++;
  *out = ((*in) >> 4) % (1U << 9);
  out++;
  *out = ((*in) >> 13) % (1U << 9);
  out++;
  *out = ((*in) >> 22) % (1U << 9);
  out++;
  *out = ((*in) >> 31);
  ++in;
  *out |= ((*in) % (1U << 8)) << (9 - 8);
  out++;
  *out = ((*in) >> 8) % (1U << 9);
  out++;
  *out = ((*in) >> 17) % (1U << 9);
  out++;
  *out = ((*in) >> 26);
  ++in;
  *out |= ((*in) % (1U << 3)) << (9 - 3);
  out++;
  *out = ((*in) >> 3) % (1U << 9);
  out++;
  *out = ((*in) >> 12) % (1U << 9);
  out++;
  *out = ((*in) >> 21) % (1U << 9);
  out++;
  *out = ((*in) >> 30);
  ++in;
  *out |= ((*in) % (1U << 7)) << (9 - 7);
  out++;
  *out = ((*in) >> 7) % (1U << 9);
  out++;
  *out = ((*in) >> 16) % (1U << 9);
  out++;
  *out = ((*in) >> 25);
  ++in;
  *out |= ((*in) % (1U << 2)) << (9 - 2);
  out++;
  *out = ((*in) >> 2) % (1U << 9);
  out++;
  *out = ((*in) >> 11) % (1U << 9);
  out++;
  *out = ((*in) >> 20) % (1U << 9);
  out++;
  *out = ((*in) >> 29);
  ++in;
  *out |= ((*in) % (1U << 6)) << (9 - 6);
  out++;
  *out = ((*in) >> 6) % (1U << 9);
  out++;
  *out = ((*in) >> 15) % (1U << 9);
  out++;
  *out = ((*in) >> 24);
  ++in;
  *out |= ((*in) % (1U << 1)) << (9 - 1);
  out++;
  *out = ((*in) >> 1) % (1U << 9);
  out++;
  *out = ((*in) >> 10) % (1U << 9);
  out++;
  *out = ((*in) >> 19) % (1U << 9);
  out++;
  *out = ((*in) >> 28);
  ++in;
  *out |= ((*in) % (1U << 5)) << (9 - 5);
  out++;
  *out = ((*in) >> 5) % (1U << 9);
  out++;
  *out = ((*in) >> 14) % (1U << 9);
  out++;
  *out = ((*in) >> 23);
  ++in;
  out++;

  return in;
}

inline const uint32_t* unpack10_32(const uint32_t* in, uint32_t* out) {
  *out = ((*in) >> 0) % (1U << 10);
  out++;
  *out = ((*in) >> 10) % (1U << 10);
  out++;
  *out = ((*in) >> 20) % (1U << 10);
  out++;
  *out = ((*in) >> 30);
  ++in;
  *out |= ((*in) % (1U << 8)) << (10 - 8);
  out++;
  *out = ((*in) >> 8) % (1U << 10);
  out++;
  *out = ((*in) >> 18) % (1U << 10);
  out++;
  *out = ((*in) >> 28);
  ++in;
  *out |= ((*in) % (1U << 6)) << (10 - 6);
  out++;
  *out = ((*in) >> 6) % (1U << 10);
  out++;
  *out = ((*in) >> 16) % (1U << 10);
  out++;
  *out = ((*in) >> 26);
  ++in;
  *out |= ((*in) % (1U << 4)) << (10 - 4);
  out++;
  *out = ((*in) >> 4) % (1U << 10);
  out++;
  *out = ((*in) >> 14) % (1U << 10);
  out++;
  *out = ((*in) >> 24);
  ++in;
  *out |= ((*in) % (1U << 2)) << (10 - 2);
  out++;
  *out = ((*in) >> 2) % (1U << 10);
  out++;
  *out = ((*in) >> 12) % (1U << 10);
  out++;
  *out = ((*in) >> 22);
  ++in;
  out++;
  *out = ((*in) >> 0) % (1U << 10);
  out++;
  *out = ((*in) >> 10) % (1U << 10);
  out++;
  *out = ((*in) >> 20) % (1U << 10);
  out++;
  *out = ((*in) >> 30);
  ++in;
  *out |= ((*in) % (1U << 8)) << (10 - 8);
  out++;
  *out = ((*in) >> 8) % (1U << 10);
  out++;
  *out = ((*in) >> 18) % (1U << 10);
  out++;
  *out = ((*in) >> 28);
  ++in;
  *out |= ((*in) % (1U << 6)) << (10 - 6);
  out++;
  *out = ((*in) >> 6) % (1U << 10);
  out++;
  *out = ((*in) >> 16) % (1U << 10);
  out++;
  *out = ((*in) >> 26);
  ++in;
  *out |= ((*in) % (1U << 4)) << (10 - 4);
  out++;
  *out = ((*in) >> 4) % (1U << 10);
  out++;
  *out = ((*in) >> 14) % (1U << 10);
  out++;
  *out = ((*in) >> 24);
  ++in;
  *out |= ((*in) % (1U << 2)) << (10 - 2);
  out++;
  *out = ((*in) >> 2) % (1U << 10);
  out++;
  *out = ((*in) >> 12) % (1U << 10);
  out++;
  *out = ((*in) >> 22);
  ++in;
  out++;

  return in;
}

inline const uint32_t* unpack11_32(const uint32_t* in, uint32_t* out) {
  *out = ((*in) >> 0) % (1U << 11);
  out++;
  *out = ((*in) >> 11) % (1U << 11);
  out++;
  *out = ((*in) >> 22);
  ++in;
  *out |= ((*in) % (1U << 1)) << (11 - 1);
  out++;
  *out = ((*in) >> 1) % (1U << 11);
  out++;
  *out = ((*in) >> 12) % (1U << 11);
  out++;
  *out = ((*in) >> 23);
  ++in;
  *out |= ((*in) % (1U << 2)) << (11 - 2);
  out++;
  *out = ((*in) >> 2) % (1U << 11);
  out++;
  *out = ((*in) >> 13) % (1U << 11);
  out++;
  *out = ((*in) >> 24);
  ++in;
  *out |= ((*in) % (1U << 3)) << (11 - 3);
  out++;
  *out = ((*in) >> 3) % (1U << 11);
  out++;
  *out = ((*in) >> 14) % (1U << 11);
  out++;
  *out = ((*in) >> 25);
  ++in;
  *out |= ((*in) % (1U << 4)) << (11 - 4);
  out++;
  *out = ((*in) >> 4) % (1U << 11);
  out++;
  *out = ((*in) >> 15) % (1U << 11);
  out++;
  *out = ((*in) >> 26);
  ++in;
  *out |= ((*in) % (1U << 5)) << (11 - 5);
  out++;
  *out = ((*in) >> 5) % (1U << 11);
  out++;
  *out = ((*in) >> 16) % (1U << 11);
  out++;
  *out = ((*in) >> 27);
  ++in;
  *out |= ((*in) % (1U << 6)) << (11 - 6);
  out++;
  *out = ((*in) >> 6) % (1U << 11);
  out++;
  *out = ((*in) >> 17) % (1U << 11);
  out++;
  *out = ((*in) >> 28);
  ++in;
  *out |= ((*in) % (1U << 7)) << (11 - 7);
  out++;
  *out = ((*in) >> 7) % (1U << 11);
  out++;
  *out = ((*in) >> 18) % (1U << 11);
  out++;
  *out = ((*in) >> 29);
  ++in;
  *out |= ((*in) % (1U << 8)) << (11 - 8);
  out++;
  *out = ((*in) >> 8) % (1U << 11);
  out++;
  *out = ((*in) >> 19) % (1U << 11);
  out++;
  *out = ((*in) >> 30);
  ++in;
  *out |= ((*in) % (1U << 9)) << (11 - 9);
  out++;
  *out = ((*in) >> 9) % (1U << 11);
  out++;
  *out = ((*in) >> 20) % (1U << 11);
  out++;
  *out = ((*in) >> 31);
  ++in;
  *out |= ((*in) % (1U << 10)) << (11 - 10);
  out++;
  *out = ((*in) >> 10) % (1U << 11);
  out++;
  *out = ((*in) >> 21);
  ++in;
  out++;

  return in;
}

inline const uint32_t* unpack12_32(const uint32_t* in, uint32_t* out) {
  *out = ((*in) >> 0) % (1U << 12);
  out++;
  *out = ((*in) >> 12) % (1U << 12);
  out++;
  *out = ((*in) >> 24);
  ++in;
  *out |= ((*in) % (1U << 4)) << (12 - 4);
  out++;
  *out = ((*in) >> 4) % (1U << 12);
  out++;
  *out = ((*in) >> 16) % (1U << 12);
  out++;
  *out = ((*in) >> 28);
  ++in;
  *out |= ((*in) % (1U << 8)) << (12 - 8);
  out++;
  *out = ((*in) >> 8) % (1U << 12);
  out++;
  *out = ((*in) >> 20);
  ++in;
  out++;
  *out = ((*in) >> 0) % (1U << 12);
  out++;
  *out = ((*in) >> 12) % (1U << 12);
  out++;
  *out = ((*in) >> 24);
  ++in;
  *out |= ((*in) % (1U << 4)) << (12 - 4);
  out++;
  *out = ((*in) >> 4) % (1U << 12);
  out++;
  *out = ((*in) >> 16) % (1U << 12);
  out++;
  *out = ((*in) >> 28);
  ++in;
  *out |= ((*in) % (1U << 8)) << (12 - 8);
  out++;
  *out = ((*in) >> 8) % (1U << 12);
  out++;
  *out = ((*in) >> 20);
  ++in;
  out++;
  *out = ((*in) >> 0) % (1U << 12);
  out++;
  *out = ((*in) >> 12) % (1U << 12);
  out++;
  *out = ((*in) >> 24);
  ++in;
  *out |= ((*in) % (1U << 4)) << (12 - 4);
  out++;
  *out = ((*in) >> 4) % (1U << 12);
  out++;
  *out = ((*in) >> 16) % (1U << 12);
  out++;
  *out = ((*in) >> 28);
  ++in;
  *out |= ((*in) % (1U << 8)) << (12 - 8);
  out++;
  *out = ((*in) >> 8) % (1U << 12);
  out++;
  *out = ((*in) >> 20);
  ++in;
  out++;
  *out = ((*in) >> 0) % (1U << 12);
  out++;
  *out = ((*in) >> 12) % (1U << 12);
  out++;
  *out = ((*in) >> 24);
  ++in;
  *out |= ((*in) % (1U << 4)) << (12 - 4);
  out++;
  *out = ((*in) >> 4) % (1U << 12);
  out++;
  *out = ((*in) >> 16) % (1U << 12);
  out++;
  *out = ((*in) >> 28);
  ++in;
  *out |= ((*in) % (1U << 8)) << (12 - 8);
  out++;
  *out = ((*in) >> 8) % (1U << 12);
  out++;
  *out = ((*in) >> 20);
  ++in;
  out++;

  return in;
}

inline const uint32_t* unpack13_32(const uint32_t* in, uint32_t* out) {
  *out = ((*in) >> 0) % (1U << 13);
  out++;
  *out = ((*in) >> 13) % (1U << 13);
  out++;
  *out = ((*in) >> 26);
  ++in;
  *out |= ((*in) % (1U << 7)) << (13 - 7);
  out++;
  *out = ((*in) >> 7) % (1U << 13);
  out++;
  *out = ((*in) >> 20);
  ++in;
  *out |= ((*in) % (1U << 1)) << (13 - 1);
  out++;
  *out = ((*in) >> 1) % (1U << 13);
  out++;
  *out = ((*in) >> 14) % (1U << 13);
  out++;
  *out = ((*in) >> 27);
  ++in;
  *out |= ((*in) % (1U << 8)) << (13 - 8);
  out++;
  *out = ((*in) >> 8) % (1U << 13);
  out++;
  *out = ((*in) >> 21);
  ++in;
  *out |= ((*in) % (1U << 2)) << (13 - 2);
  out++;
  *out = ((*in) >> 2) % (1U << 13);
  out++;
  *out = ((*in) >> 15) % (1U << 13);
  out++;
  *out = ((*in) >> 28);
  ++in;
  *out |= ((*in) % (1U << 9)) << (13 - 9);
  out++;
  *out = ((*in) >> 9) % (1U << 13);
  out++;
  *out = ((*in) >> 22);
  ++in;
  *out |= ((*in) % (1U << 3)) << (13 - 3);
  out++;
  *out = ((*in) >> 3) % (1U << 13);
  out++;
  *out = ((*in) >> 16) % (1U << 13);
  out++;
  *out = ((*in) >> 29);
  ++in;
  *out |= ((*in) % (1U << 10)) << (13 - 10);
  out++;
  *out = ((*in) >> 10) % (1U << 13);
  out++;
  *out = ((*in) >> 23);
  ++in;
  *out |= ((*in) % (1U << 4)) << (13 - 4);
  out++;
  *out = ((*in) >> 4) % (1U << 13);
  out++;
  *out = ((*in) >> 17) % (1U << 13);
  out++;
  *out = ((*in) >> 30);
  ++in;
  *out |= ((*in) % (1U << 11)) << (13 - 11);
  out++;
  *out = ((*in) >> 11) % (1U << 13);
  out++;
  *out = ((*in) >> 24);
  ++in;
  *out |= ((*in) % (1U << 5)) << (13 - 5);
  out++;
  *out = ((*in) >> 5) % (1U << 13);
  out++;
  *out = ((*in) >> 18) % (1U << 13);
  out++;
  *out = ((*in) >> 31);
  ++in;
  *out |= ((*in) % (1U << 12)) << (13 - 12);
  out++;
  *out = ((*in) >> 12) % (1U << 13);
  out++;
  *out = ((*in) >> 25);
  ++in;
  *out |= ((*in) % (1U << 6)) << (13 - 6);
  out++;
  *out = ((*in) >> 6) % (1U << 13);
  out++;
  *out = ((*in) >> 19);
  ++in;
  out++;

  return in;
}

inline const uint32_t* unpack14_32(const uint32_t* in, uint32_t* out) {
  *out = ((*in) >> 0) % (1U << 14);
  out++;
  *out = ((*in) >> 14) % (1U << 14);
  out++;
  *out = ((*in) >> 28);
  ++in;
  *out |= ((*in) % (1U << 10)) << (14 - 10);
  out++;
  *out = ((*in) >> 10) % (1U << 14);
  out++;
  *out = ((*in) >> 24);
  ++in;
  *out |= ((*in) % (1U << 6)) << (14 - 6);
  out++;
  *out = ((*in) >> 6) % (1U << 14);
  out++;
  *out = ((*in) >> 20);
  ++in;
  *out |= ((*in) % (1U << 2)) << (14 - 2);
  out++;
  *out = ((*in) >> 2) % (1U << 14);
  out++;
  *out = ((*in) >> 16) % (1U << 14);
  out++;
  *out = ((*in) >> 30);
  ++in;
  *out |= ((*in) % (1U << 12)) << (14 - 12);
  out++;
  *out = ((*in) >> 12) % (1U << 14);
  out++;
  *out = ((*in) >> 26);
  ++in;
  *out |= ((*in) % (1U << 8)) << (14 - 8);
  out++;
  *out = ((*in) >> 8) % (1U << 14);
  out++;
  *out = ((*in) >> 22);
  ++in;
  *out |= ((*in) % (1U << 4)) << (14 - 4);
  out++;
  *out = ((*in) >> 4) % (1U << 14);
  out++;
  *out = ((*in) >> 18);
  ++in;
  out++;
  *out = ((*in) >> 0) % (1U << 14);
  out++;
  *out = ((*in) >> 14) % (1U << 14);
  out++;
  *out = ((*in) >> 28);
  ++in;
  *out |= ((*in) % (1U << 10)) << (14 - 10);
  out++;
  *out = ((*in) >> 10) % (1U << 14);
  out++;
  *out = ((*in) >> 24);
  ++in;
  *out |= ((*in) % (1U << 6)) << (14 - 6);
  out++;
  *out = ((*in) >> 6) % (1U << 14);
  out++;
  *out = ((*in) >> 20);
  ++in;
  *out |= ((*in) % (1U << 2)) << (14 - 2);
  out++;
  *out = ((*in) >> 2) % (1U << 14);
  out++;
  *out = ((*in) >> 16) % (1U << 14);
  out++;
  *out = ((*in) >> 30);
  ++in;
  *out |= ((*in) % (1U << 12)) << (14 - 12);
  out++;
  *out = ((*in) >> 12) % (1U << 14);
  out++;
  *out = ((*in) >> 26);
  ++in;
  *out |= ((*in) % (1U << 8)) << (14 - 8);
  out++;
  *out = ((*in) >> 8) % (1U << 14);
  out++;
  *out = ((*in) >> 22);
  ++in;
  *out |= ((*in) % (1U << 4)) << (14 - 4);
  out++;
  *out = ((*in) >> 4) % (1U << 14);
  out++;
  *out = ((*in) >> 18);
  ++in;
  out++;

  return in;
}

inline const uint32_t* unpack15_32(const uint32_t* in, uint32_t* out) {
  *out = ((*in) >> 0) % (1U << 15);
  out++;
  *out = ((*in) >> 15) % (1U << 15);
  out++;
  *out = ((*in) >> 30);
  ++in;
  *out |= ((*in) % (1U << 13)) << (15 - 13);
  out++;
  *out = ((*in) >> 13) % (1U << 15);
  out++;
  *out = ((*in) >> 28);
  ++in;
  *out |= ((*in) % (1U << 11)) << (15 - 11);
  out++;
  *out = ((*in) >> 11) % (1U << 15);
  out++;
  *out = ((*in) >> 26);
  ++in;
  *out |= ((*in) % (1U << 9)) << (15 - 9);
  out++;
  *out = ((*in) >> 9) % (1U << 15);
  out++;
  *out = ((*in) >> 24);
  ++in;
  *out |= ((*in) % (1U << 7)) << (15 - 7);
  out++;
  *out = ((*in) >> 7) % (1U << 15);
  out++;
  *out = ((*in) >> 22);
  ++in;
  *out |= ((*in) % (1U << 5)) << (15 - 5);
  out++;
  *out = ((*in) >> 5) % (1U << 15);
  out++;
  *out = ((*in) >> 20);
  ++in;
  *out |= ((*in) % (1U << 3)) << (15 - 3);
  out++;
  *out = ((*in) >> 3) % (1U << 15);
  out++;
  *out = ((*in) >> 18);
  ++in;
  *out |= ((*in) % (1U << 1)) << (15 - 1);
  out++;
  *out = ((*in) >> 1) % (1U << 15);
  out++;
  *out = ((*in) >> 16) % (1U << 15);
  out++;
  *out = ((*in) >> 31);
  ++in;
  *out |= ((*in) % (1U << 14)) << (15 - 14);
  out++;
  *out = ((*in) >> 14) % (1U << 15);
  out++;
  *out = ((*in) >> 29);
  ++in;
  *out |= ((*in) % (1U << 12)) << (15 - 12);
  out++;
  *out = ((*in) >> 12) % (1U << 15);
  out++;
  *out = ((*in) >> 27);
  ++in;
  *out |= ((*in) % (1U << 10)) << (15 - 10);
  out++;
  *out = ((*in) >> 10) % (1U << 15);
  out++;
  *out = ((*in) >> 25);
  ++in;
  *out |= ((*in) % (1U << 8)) << (15 - 8);
  out++;
  *out = ((*in) >> 8) % (1U << 15);
  out++;
  *out = ((*in) >> 23);
  ++in;
  *out |= ((*in) % (1U << 6)) << (15 - 6);
  out++;
  *out = ((*in) >> 6) % (1U << 15);
  out++;
  *out = ((*in) >> 21);
  ++in;
  *out |= ((*in) % (1U << 4)) << (15 - 4);
  out++;
  *out = ((*in) >> 4) % (1U << 15);
  out++;
  *out = ((*in) >> 19);
  ++in;
  *out |= ((*in) % (1U << 2)) << (15 - 2);
  out++;
  *out = ((*in) >> 2) % (1U << 15);
  out++;
  *out = ((*in) >> 17);
  ++in;
  out++;

  return in;
}

inline const uint32_t* unpack16_32(const uint32_t* in, uint32_t* out) {
  *out = ((*in) >> 0) % (1U << 16);
  out++;
  *out = ((*in) >> 16);
  ++in;
  out++;
  *out = ((*in) >> 0) % (1U << 16);
  out++;
  *out = ((*in) >> 16);
  ++in;
  out++;
  *out = ((*in) >> 0) % (1U << 16);
  out++;
  *out = ((*in) >> 16);
  ++in;
  out++;
  *out = ((*in) >> 0) % (1U << 16);
  out++;
  *out = ((*in) >> 16);
  ++in;
  out++;
  *out = ((*in) >> 0) % (1U << 16);
  out++;
  *out = ((*in) >> 16);
  ++in;
  out++;
  *out = ((*in) >> 0) % (1U << 16);
  out++;
  *out = ((*in) >> 16);
  ++in;
  out++;
  *out = ((*in) >> 0) % (1U << 16);
  out++;
  *out = ((*in) >> 16);
  ++in;
  out++;
  *out = ((*in) >> 0) % (1U << 16);
  out++;
  *out = ((*in) >> 16);
  ++in;
  out++;
  *out = ((*in) >> 0) % (1U << 16);
  out++;
  *out = ((*in) >> 16);
  ++in;
  out++;
  *out = ((*in) >> 0) % (1U << 16);
  out++;
  *out = ((*in) >> 16);
  ++in;
  out++;
  *out = ((*in) >> 0) % (1U << 16);
  out++;
  *out = ((*in) >> 16);
  ++in;
  out++;
  *out = ((*in) >> 0) % (1U << 16);
  out++;
  *out = ((*in) >> 16);
  ++in;
  out++;
  *out = ((*in) >> 0) % (1U << 16);
  out++;
  *out = ((*in) >> 16);
  ++in;
  out++;
  *out = ((*in) >> 0) % (1U << 16);
  out++;
  *out = ((*in) >> 16);
  ++in;
  out++;
  *out = ((*in) >> 0) % (1U << 16);
  out++;
  *out = ((*in) >> 16);
  ++in;
  out++;
  *out = ((*in) >> 0) % (1U << 16);
  out++;
  *out = ((*in) >> 16);
  ++in;
  out++;

  return in;
}

inline const uint32_t* unpack17_32(const uint32_t* in, uint32_t* out) {
  *out = ((*in) >> 0) % (1U << 17);
  out++;
  *out = ((*in) >> 17);
  ++in;
  *out |= ((*in) % (1U << 2)) << (17 - 2);
  out++;
  *out = ((*in) >> 2) % (1U << 17);
  out++;
  *out = ((*in) >> 19);
  ++in;
  *out |= ((*in) % (1U << 4)) << (17 - 4);
  out++;
  *out = ((*in) >> 4) % (1U << 17);
  out++;
  *out = ((*in) >> 21);
  ++in;
  *out |= ((*in) % (1U << 6)) << (17 - 6);
  out++;
  *out = ((*in) >> 6) % (1U << 17);
  out++;
  *out = ((*in) >> 23);
  ++in;
  *out |= ((*in) % (1U << 8)) << (17 - 8);
  out++;
  *out = ((*in) >> 8) % (1U << 17);
  out++;
  *out = ((*in) >> 25);
  ++in;
  *out |= ((*in) % (1U << 10)) << (17 - 10);
  out++;
  *out = ((*in) >> 10) % (1U << 17);
  out++;
  *out = ((*in) >> 27);
  ++in;
  *out |= ((*in) % (1U << 12)) << (17 - 12);
  out++;
  *out = ((*in) >> 12) % (1U << 17);
  out++;
  *out = ((*in) >> 29);
  ++in;
  *out |= ((*in) % (1U << 14)) << (17 - 14);
  out++;
  *out = ((*in) >> 14) % (1U << 17);
  out++;
  *out = ((*in) >> 31);
  ++in;
  *out |= ((*in) % (1U << 16)) << (17 - 16);
  out++;
  *out = ((*in) >> 16);
  ++in;
  *out |= ((*in) % (1U << 1)) << (17 - 1);
  out++;
  *out = ((*in) >> 1) % (1U << 17);
  out++;
  *out = ((*in) >> 18);
  ++in;
  *out |= ((*in) % (1U << 3)) << (17 - 3);
  out++;
  *out = ((*in) >> 3) % (1U << 17);
  out++;
  *out = ((*in) >> 20);
  ++in;
  *out |= ((*in) % (1U << 5)) << (17 - 5);
  out++;
  *out = ((*in) >> 5) % (1U << 17);
  out++;
  *out = ((*in) >> 22);
  ++in;
  *out |= ((*in) % (1U << 7)) << (17 - 7);
  out++;
  *out = ((*in) >> 7) % (1U << 17);
  out++;
  *out = ((*in) >> 24);
  ++in;
  *out |= ((*in) % (1U << 9)) << (17 - 9);
  out++;
  *out = ((*in) >> 9) % (1U << 17);
  out++;
  *out = ((*in) >> 26);
  ++in;
  *out |= ((*in) % (1U << 11)) << (17 - 11);
  out++;
  *out = ((*in) >> 11) % (1U << 17);
  out++;
  *out = ((*in) >> 28);
  ++in;
  *out |= ((*in) % (1U << 13)) << (17 - 13);
  out++;
  *out = ((*in) >> 13) % (1U << 17);
  out++;
  *out = ((*in) >> 30);
  ++in;
  *out |= ((*in) % (1U << 15)) << (17 - 15);
  out++;
  *out = ((*in) >> 15);
  ++in;
  out++;

  return in;
}

inline const uint32_t* unpack18_32(const uint32_t* in, uint32_t* out) {
  *out = ((*in) >> 0) % (1U << 18);
  out++;
  *out = ((*in) >> 18);
  ++in;
  *out |= ((*in) % (1U << 4)) << (18 - 4);
  out++;
  *out = ((*in) >> 4) % (1U << 18);
  out++;
  *out = ((*in) >> 22);
  ++in;
  *out |= ((*in) % (1U << 8)) << (18 - 8);
  out++;
  *out = ((*in) >> 8) % (1U << 18);
  out++;
  *out = ((*in) >> 26);
  ++in;
  *out |= ((*in) % (1U << 12)) << (18 - 12);
  out++;
  *out = ((*in) >> 12) % (1U << 18);
  out++;
  *out = ((*in) >> 30);
  ++in;
  *out |= ((*in) % (1U << 16)) << (18 - 16);
  out++;
  *out = ((*in) >> 16);
  ++in;
  *out |= ((*in) % (1U << 2)) << (18 - 2);
  out++;
  *out = ((*in) >> 2) % (1U << 18);
  out++;
  *out = ((*in) >> 20);
  ++in;
  *out |= ((*in) % (1U << 6)) << (18 - 6);
  out++;
  *out = ((*in) >> 6) % (1U << 18);
  out++;
  *out = ((*in) >> 24);
  ++in;
  *out |= ((*in) % (1U << 10)) << (18 - 10);
  out++;
  *out = ((*in) >> 10) % (1U << 18);
  out++;
  *out = ((*in) >> 28);
  ++in;
  *out |= ((*in) % (1U << 14)) << (18 - 14);
  out++;
  *out = ((*in) >> 14);
  ++in;
  out++;
  *out = ((*in) >> 0) % (1U << 18);
  out++;
  *out = ((*in) >> 18);
  ++in;
  *out |= ((*in) % (1U << 4)) << (18 - 4);
  out++;
  *out = ((*in) >> 4) % (1U << 18);
  out++;
  *out = ((*in) >> 22);
  ++in;
  *out |= ((*in) % (1U << 8)) << (18 - 8);
  out++;
  *out = ((*in) >> 8) % (1U << 18);
  out++;
  *out = ((*in) >> 26);
  ++in;
  *out |= ((*in) % (1U << 12)) << (18 - 12);
  out++;
  *out = ((*in) >> 12) % (1U << 18);
  out++;
  *out = ((*in) >> 30);
  ++in;
  *out |= ((*in) % (1U << 16)) << (18 - 16);
  out++;
  *out = ((*in) >> 16);
  ++in;
  *out |= ((*in) % (1U << 2)) << (18 - 2);
  out++;
  *out = ((*in) >> 2) % (1U << 18);
  out++;
  *out = ((*in) >> 20);
  ++in;
  *out |= ((*in) % (1U << 6)) << (18 - 6);
  out++;
  *out = ((*in) >> 6) % (1U << 18);
  out++;
  *out = ((*in) >> 24);
  ++in;
  *out |= ((*in) % (1U << 10)) << (18 - 10);
  out++;
  *out = ((*in) >> 10) % (1U << 18);
  out++;
  *out = ((*in) >> 28);
  ++in;
  *out |= ((*in) % (1U << 14)) << (18 - 14);
  out++;
  *out = ((*in) >> 14);
  ++in;
  out++;

  return in;
}

inline const uint32_t* unpack19_32(const uint32_t* in, uint32_t* out) {
  *out = ((*in) >> 0) % (1U << 19);
  out++;
  *out = ((*in) >> 19);
  ++in;
  *out |= ((*in) % (1U << 6)) << (19 - 6);
  out++;
  *out = ((*in) >> 6) % (1U << 19);
  out++;
  *out = ((*in) >> 25);
  ++in;
  *out |= ((*in) % (1U << 12)) << (19 - 12);
  out++;
  *out = ((*in) >> 12) % (1U << 19);
  out++;
  *out = ((*in) >> 31);
  ++in;
  *out |= ((*in) % (1U << 18)) << (19 - 18);
  out++;
  *out = ((*in) >> 18);
  ++in;
  *out |= ((*in) % (1U << 5)) << (19 - 5);
  out++;
  *out = ((*in) >> 5) % (1U << 19);
  out++;
  *out = ((*in) >> 24);
  ++in;
  *out |= ((*in) % (1U << 11)) << (19 - 11);
  out++;
  *out = ((*in) >> 11) % (1U << 19);
  out++;
  *out = ((*in) >> 30);
  ++in;
  *out |= ((*in) % (1U << 17)) << (19 - 17);
  out++;
  *out = ((*in) >> 17);
  ++in;
  *out |= ((*in) % (1U << 4)) << (19 - 4);
  out++;
  *out = ((*in) >> 4) % (1U << 19);
  out++;
  *out = ((*in) >> 23);
  ++in;
  *out |= ((*in) % (1U << 10)) << (19 - 10);
  out++;
  *out = ((*in) >> 10) % (1U << 19);
  out++;
  *out = ((*in) >> 29);
  ++in;
  *out |= ((*in) % (1U << 16)) << (19 - 16);
  out++;
  *out = ((*in) >> 16);
  ++in;
  *out |= ((*in) % (1U << 3)) << (19 - 3);
  out++;
  *out = ((*in) >> 3) % (1U << 19);
  out++;
  *out = ((*in) >> 22);
  ++in;
  *out |= ((*in) % (1U << 9)) << (19 - 9);
  out++;
  *out = ((*in) >> 9) % (1U << 19);
  out++;
  *out = ((*in) >> 28);
  ++in;
  *out |= ((*in) % (1U << 15)) << (19 - 15);
  out++;
  *out = ((*in) >> 15);
  ++in;
  *out |= ((*in) % (1U << 2)) << (19 - 2);
  out++;
  *out = ((*in) >> 2) % (1U << 19);
  out++;
  *out = ((*in) >> 21);
  ++in;
  *out |= ((*in) % (1U << 8)) << (19 - 8);
  out++;
  *out = ((*in) >> 8) % (1U << 19);
  out++;
  *out = ((*in) >> 27);
  ++in;
  *out |= ((*in) % (1U << 14)) << (19 - 14);
  out++;
  *out = ((*in) >> 14);
  ++in;
  *out |= ((*in) % (1U << 1)) << (19 - 1);
  out++;
  *out = ((*in) >> 1) % (1U << 19);
  out++;
  *out = ((*in) >> 20);
  ++in;
  *out |= ((*in) % (1U << 7)) << (19 - 7);
  out++;
  *out = ((*in) >> 7) % (1U << 19);
  out++;
  *out = ((*in) >> 26);
  ++in;
  *out |= ((*in) % (1U << 13)) << (19 - 13);
  out++;
  *out = ((*in) >> 13);
  ++in;
  out++;

  return in;
}

inline const uint32_t* unpack20_32(const uint32_t* in, uint32_t* out) {
  *out = ((*in) >> 0) % (1U << 20);
  out++;
  *out = ((*in) >> 20);
  ++in;
  *out |= ((*in) % (1U << 8)) << (20 - 8);
  out++;
  *out = ((*in) >> 8) % (1U << 20);
  out++;
  *out = ((*in) >> 28);
  ++in;
  *out |= ((*in) % (1U << 16)) << (20 - 16);
  out++;
  *out = ((*in) >> 16);
  ++in;
  *out |= ((*in) % (1U << 4)) << (20 - 4);
  out++;
  *out = ((*in) >> 4) % (1U << 20);
  out++;
  *out = ((*in) >> 24);
  ++in;
  *out |= ((*in) % (1U << 12)) << (20 - 12);
  out++;
  *out = ((*in) >> 12);
  ++in;
  out++;
  *out = ((*in) >> 0) % (1U << 20);
  out++;
  *out = ((*in) >> 20);
  ++in;
  *out |= ((*in) % (1U << 8)) << (20 - 8);
  out++;
  *out = ((*in) >> 8) % (1U << 20);
  out++;
  *out = ((*in) >> 28);
  ++in;
  *out |= ((*in) % (1U << 16)) << (20 - 16);
  out++;
  *out = ((*in) >> 16);
  ++in;
  *out |= ((*in) % (1U << 4)) << (20 - 4);
  out++;
  *out = ((*in) >> 4) % (1U << 20);
  out++;
  *out = ((*in) >> 24);
  ++in;
  *out |= ((*in) % (1U << 12)) << (20 - 12);
  out++;
  *out = ((*in) >> 12);
  ++in;
  out++;
  *out = ((*in) >> 0) % (1U << 20);
  out++;
  *out = ((*in) >> 20);
  ++in;
  *out |= ((*in) % (1U << 8)) << (20 - 8);
  out++;
  *out = ((*in) >> 8) % (1U << 20);
  out++;
  *out = ((*in) >> 28);
  ++in;
  *out |= ((*in) % (1U << 16)) << (20 - 16);
  out++;
  *out = ((*in) >> 16);
  ++in;
  *out |= ((*in) % (1U << 4)) << (20 - 4);
  out++;
  *out = ((*in) >> 4) % (1U << 20);
  out++;
  *out = ((*in) >> 24);
  ++in;
  *out |= ((*in) % (1U << 12)) << (20 - 12);
  out++;
  *out = ((*in) >> 12);
  ++in;
  out++;
  *out = ((*in) >> 0) % (1U << 20);
  out++;
  *out = ((*in) >> 20);
  ++in;
  *out |= ((*in) % (1U << 8)) << (20 - 8);
  out++;
  *out = ((*in) >> 8) % (1U << 20);
  out++;
  *out = ((*in) >> 28);
  ++in;
  *out |= ((*in) % (1U << 16)) << (20 - 16);
  out++;
  *out = ((*in) >> 16);
  ++in;
  *out |= ((*in) % (1U << 4)) << (20 - 4);
  out++;
  *out = ((*in) >> 4) % (1U << 20);
  out++;
  *out = ((*in) >> 24);
  ++in;
  *out |= ((*in) % (1U << 12)) << (20 - 12);
  out++;
  *out = ((*in) >> 12);
  ++in;
  out++;

  return in;
}

inline const uint32_t* unpack21_32(const uint32_t* in, uint32_t* out) {
  *out = ((*in) >> 0) % (1U << 21);
  out++;
  *out = ((*in) >> 21);
  ++in;
  *out |= ((*in) % (1U << 10)) << (21 - 10);
  out++;
  *out = ((*in) >> 10) % (1U << 21);
  out++;
  *out = ((*in) >> 31);
  ++in;
  *out |= ((*in) % (1U << 20)) << (21 - 20);
  out++;
  *out = ((*in) >> 20);
  ++in;
  *out |= ((*in) % (1U << 9)) << (21 - 9);
  out++;
  *out = ((*in) >> 9) % (1U << 21);
  out++;
  *out = ((*in) >> 30);
  ++in;
  *out |= ((*in) % (1U << 19)) << (21 - 19);
  out++;
  *out = ((*in) >> 19);
  ++in;
  *out |= ((*in) % (1U << 8)) << (21 - 8);
  out++;
  *out = ((*in) >> 8) % (1U << 21);
  out++;
  *out = ((*in) >> 29);
  ++in;
  *out |= ((*in) % (1U << 18)) << (21 - 18);
  out++;
  *out = ((*in) >> 18);
  ++in;
  *out |= ((*in) % (1U << 7)) << (21 - 7);
  out++;
  *out = ((*in) >> 7) % (1U << 21);
  out++;
  *out = ((*in) >> 28);
  ++in;
  *out |= ((*in) % (1U << 17)) << (21 - 17);
  out++;
  *out = ((*in) >> 17);
  ++in;
  *out |= ((*in) % (1U << 6)) << (21 - 6);
  out++;
  *out = ((*in) >> 6) % (1U << 21);
  out++;
  *out = ((*in) >> 27);
  ++in;
  *out |= ((*in) % (1U << 16)) << (21 - 16);
  out++;
  *out = ((*in) >> 16);
  ++in;
  *out |= ((*in) % (1U << 5)) << (21 - 5);
  out++;
  *out = ((*in) >> 5) % (1U << 21);
  out++;
  *out = ((*in) >> 26);
  ++in;
  *out |= ((*in) % (1U << 15)) << (21 - 15);
  out++;
  *out = ((*in) >> 15);
  ++in;
  *out |= ((*in) % (1U << 4)) << (21 - 4);
  out++;
  *out = ((*in) >> 4) % (1U << 21);
  out++;
  *out = ((*in) >> 25);
  ++in;
  *out |= ((*in) % (1U << 14)) << (21 - 14);
  out++;
  *out = ((*in) >> 14);
  ++in;
  *out |= ((*in) % (1U << 3)) << (21 - 3);
  out++;
  *out = ((*in) >> 3) % (1U << 21);
  out++;
  *out = ((*in) >> 24);
  ++in;
  *out |= ((*in) % (1U << 13)) << (21 - 13);
  out++;
  *out = ((*in) >> 13);
  ++in;
  *out |= ((*in) % (1U << 2)) << (21 - 2);
  out++;
  *out = ((*in) >> 2) % (1U << 21);
  out++;
  *out = ((*in) >> 23);
  ++in;
  *out |= ((*in) % (1U << 12)) << (21 - 12);
  out++;
  *out = ((*in) >> 12);
  ++in;
  *out |= ((*in) % (1U << 1)) << (21 - 1);
  out++;
  *out = ((*in) >> 1) % (1U << 21);
  out++;
  *out = ((*in) >> 22);
  ++in;
  *out |= ((*in) % (1U << 11)) << (21 - 11);
  out++;
  *out = ((*in) >> 11);
  ++in;
  out++;

  return in;
}

inline const uint32_t* unpack22_32(const uint32_t* in, uint32_t* out) {
  *out = ((*in) >> 0) % (1U << 22);
  out++;
  *out = ((*in) >> 22);
  ++in;
  *out |= ((*in) % (1U << 12)) << (22 - 12);
  out++;
  *out = ((*in) >> 12);
  ++in;
  *out |= ((*in) % (1U << 2)) << (22 - 2);
  out++;
  *out = ((*in) >> 2) % (1U << 22);
  out++;
  *out = ((*in) >> 24);
  ++in;
  *out |= ((*in) % (1U << 14)) << (22 - 14);
  out++;
  *out = ((*in) >> 14);
  ++in;
  *out |= ((*in) % (1U << 4)) << (22 - 4);
  out++;
  *out = ((*in) >> 4) % (1U << 22);
  out++;
  *out = ((*in) >> 26);
  ++in;
  *out |= ((*in) % (1U << 16)) << (22 - 16);
  out++;
  *out = ((*in) >> 16);
  ++in;
  *out |= ((*in) % (1U << 6)) << (22 - 6);
  out++;
  *out = ((*in) >> 6) % (1U << 22);
  out++;
  *out = ((*in) >> 28);
  ++in;
  *out |= ((*in) % (1U << 18)) << (22 - 18);
  out++;
  *out = ((*in) >> 18);
  ++in;
  *out |= ((*in) % (1U << 8)) << (22 - 8);
  out++;
  *out = ((*in) >> 8) % (1U << 22);
  out++;
  *out = ((*in) >> 30);
  ++in;
  *out |= ((*in) % (1U << 20)) << (22 - 20);
  out++;
  *out = ((*in) >> 20);
  ++in;
  *out |= ((*in) % (1U << 10)) << (22 - 10);
  out++;
  *out = ((*in) >> 10);
  ++in;
  out++;
  *out = ((*in) >> 0) % (1U << 22);
  out++;
  *out = ((*in) >> 22);
  ++in;
  *out |= ((*in) % (1U << 12)) << (22 - 12);
  out++;
  *out = ((*in) >> 12);
  ++in;
  *out |= ((*in) % (1U << 2)) << (22 - 2);
  out++;
  *out = ((*in) >> 2) % (1U << 22);
  out++;
  *out = ((*in) >> 24);
  ++in;
  *out |= ((*in) % (1U << 14)) << (22 - 14);
  out++;
  *out = ((*in) >> 14);
  ++in;
  *out |= ((*in) % (1U << 4)) << (22 - 4);
  out++;
  *out = ((*in) >> 4) % (1U << 22);
  out++;
  *out = ((*in) >> 26);
  ++in;
  *out |= ((*in) % (1U << 16)) << (22 - 16);
  out++;
  *out = ((*in) >> 16);
  ++in;
  *out |= ((*in) % (1U << 6)) << (22 - 6);
  out++;
  *out = ((*in) >> 6) % (1U << 22);
  out++;
  *out = ((*in) >> 28);
  ++in;
  *out |= ((*in) % (1U << 18)) << (22 - 18);
  out++;
  *out = ((*in) >> 18);
  ++in;
  *out |= ((*in) % (1U << 8)) << (22 - 8);
  out++;
  *out = ((*in) >> 8) % (1U << 22);
  out++;
  *out = ((*in) >> 30);
  ++in;
  *out |= ((*in) % (1U << 20)) << (22 - 20);
  out++;
  *out = ((*in) >> 20);
  ++in;
  *out |= ((*in) % (1U << 10)) << (22 - 10);
  out++;
  *out = ((*in) >> 10);
  ++in;
  out++;

  return in;
}

inline const uint32_t* unpack23_32(const uint32_t* in, uint32_t* out) {
  *out = ((*in) >> 0) % (1U << 23);
  out++;
  *out = ((*in) >> 23);
  ++in;
  *out |= ((*in) % (1U << 14)) << (23 - 14);
  out++;
  *out = ((*in) >> 14);
  ++in;
  *out |= ((*in) % (1U << 5)) << (23 - 5);
  out++;
  *out = ((*in) >> 5) % (1U << 23);
  out++;
  *out = ((*in) >> 28);
  ++in;
  *out |= ((*in) % (1U << 19)) << (23 - 19);
  out++;
  *out = ((*in) >> 19);
  ++in;
  *out |= ((*in) % (1U << 10)) << (23 - 10);
  out++;
  *out = ((*in) >> 10);
  ++in;
  *out |= ((*in) % (1U << 1)) << (23 - 1);
  out++;
  *out = ((*in) >> 1) % (1U << 23);
  out++;
  *out = ((*in) >> 24);
  ++in;
  *out |= ((*in) % (1U << 15)) << (23 - 15);
  out++;
  *out = ((*in) >> 15);
  ++in;
  *out |= ((*in) % (1U << 6)) << (23 - 6);
  out++;
  *out = ((*in) >> 6) % (1U << 23);
  out++;
  *out = ((*in) >> 29);
  ++in;
  *out |= ((*in) % (1U << 20)) << (23 - 20);
  out++;
  *out = ((*in) >> 20);
  ++in;
  *out |= ((*in) % (1U << 11)) << (23 - 11);
  out++;
  *out = ((*in) >> 11);
  ++in;
  *out |= ((*in) % (1U << 2)) << (23 - 2);
  out++;
  *out = ((*in) >> 2) % (1U << 23);
  out++;
  *out = ((*in) >> 25);
  ++in;
  *out |= ((*in) % (1U << 16)) << (23 - 16);
  out++;
  *out = ((*in) >> 16);
  ++in;
  *out |= ((*in) % (1U << 7)) << (23 - 7);
  out++;
  *out = ((*in) >> 7) % (1U << 23);
  out++;
  *out = ((*in) >> 30);
  ++in;
  *out |= ((*in) % (1U << 21)) << (23 - 21);
  out++;
  *out = ((*in) >> 21);
  ++in;
  *out |= ((*in) % (1U << 12)) << (23 - 12);
  out++;
  *out = ((*in) >> 12);
  ++in;
  *out |= ((*in) % (1U << 3)) << (23 - 3);
  out++;
  *out = ((*in) >> 3) % (1U << 23);
  out++;
  *out = ((*in) >> 26);
  ++in;
  *out |= ((*in) % (1U << 17)) << (23 - 17);
  out++;
  *out = ((*in) >> 17);
  ++in;
  *out |= ((*in) % (1U << 8)) << (23 - 8);
  out++;
  *out = ((*in) >> 8) % (1U << 23);
  out++;
  *out = ((*in) >> 31);
  ++in;
  *out |= ((*in) % (1U << 22)) << (23 - 22);
  out++;
  *out = ((*in) >> 22);
  ++in;
  *out |= ((*in) % (1U << 13)) << (23 - 13);
  out++;
  *out = ((*in) >> 13);
  ++in;
  *out |= ((*in) % (1U << 4)) << (23 - 4);
  out++;
  *out = ((*in) >> 4) % (1U << 23);
  out++;
  *out = ((*in) >> 27);
  ++in;
  *out |= ((*in) % (1U << 18)) << (23 - 18);
  out++;
  *out = ((*in) >> 18);
  ++in;
  *out |= ((*in) % (1U << 9)) << (23 - 9);
  out++;
  *out = ((*in) >> 9);
  ++in;
  out++;

  return in;
}

inline const uint32_t* unpack24_32(const uint32_t* in, uint32_t* out) {
  *out = ((*in) >> 0) % (1U << 24);
  out++;
  *out = ((*in) >> 24);
  ++in;
  *out |= ((*in) % (1U << 16)) << (24 - 16);
  out++;
  *out = ((*in) >> 16);
  ++in;
  *out |= ((*in) % (1U << 8)) << (24 - 8);
  out++;
  *out = ((*in) >> 8);
  ++in;
  out++;
  *out = ((*in) >> 0) % (1U << 24);
  out++;
  *out = ((*in) >> 24);
  ++in;
  *out |= ((*in) % (1U << 16)) << (24 - 16);
  out++;
  *out = ((*in) >> 16);
  ++in;
  *out |= ((*in) % (1U << 8)) << (24 - 8);
  out++;
  *out = ((*in) >> 8);
  ++in;
  out++;
  *out = ((*in) >> 0) % (1U << 24);
  out++;
  *out = ((*in) >> 24);
  ++in;
  *out |= ((*in) % (1U << 16)) << (24 - 16);
  out++;
  *out = ((*in) >> 16);
  ++in;
  *out |= ((*in) % (1U << 8)) << (24 - 8);
  out++;
  *out = ((*in) >> 8);
  ++in;
  out++;
  *out = ((*in) >> 0) % (1U << 24);
  out++;
  *out = ((*in) >> 24);
  ++in;
  *out |= ((*in) % (1U << 16)) << (24 - 16);
  out++;
  *out = ((*in) >> 16);
  ++in;
  *out |= ((*in) % (1U << 8)) << (24 - 8);
  out++;
  *out = ((*in) >> 8);
  ++in;
  out++;
  *out = ((*in) >> 0) % (1U << 24);
  out++;
  *out = ((*in) >> 24);
  ++in;
  *out |= ((*in) % (1U << 16)) << (24 - 16);
  out++;
  *out = ((*in) >> 16);
  ++in;
  *out |= ((*in) % (1U << 8)) << (24 - 8);
  out++;
  *out = ((*in) >> 8);
  ++in;
  out++;
  *out = ((*in) >> 0) % (1U << 24);
  out++;
  *out = ((*in) >> 24);
  ++in;
  *out |= ((*in) % (1U << 16)) << (24 - 16);
  out++;
  *out = ((*in) >> 16);
  ++in;
  *out |= ((*in) % (1U << 8)) << (24 - 8);
  out++;
  *out = ((*in) >> 8);
  ++in;
  out++;
  *out = ((*in) >> 0) % (1U << 24);
  out++;
  *out = ((*in) >> 24);
  ++in;
  *out |= ((*in) % (1U << 16)) << (24 - 16);
  out++;
  *out = ((*in) >> 16);
  ++in;
  *out |= ((*in) % (1U << 8)) << (24 - 8);
  out++;
  *out = ((*in) >> 8);
  ++in;
  out++;
  *out = ((*in) >> 0) % (1U << 24);
  out++;
  *out = ((*in) >> 24);
  ++in;
  *out |= ((*in) % (1U << 16)) << (24 - 16);
  out++;
  *out = ((*in) >> 16);
  ++in;
  *out |= ((*in) % (1U << 8)) << (24 - 8);
  out++;
  *out = ((*in) >> 8);
  ++in;
  out++;

  return in;
}

inline const uint32_t* unpack25_32(const uint32_t* in, uint32_t* out) {
  *out = ((*in) >> 0) % (1U << 25);
  out++;
  *out = ((*in) >> 25);
  ++in;
  *out |= ((*in) % (1U << 18)) << (25 - 18);
  out++;
  *out = ((*in) >> 18);
  ++in;
  *out |= ((*in) % (1U << 11)) << (25 - 11);
  out++;
  *out = ((*in) >> 11);
  ++in;
  *out |= ((*in) % (1U << 4)) << (25 - 4);
  out++;
  *out = ((*in) >> 4) % (1U << 25);
  out++;
  *out = ((*in) >> 29);
  ++in;
  *out |= ((*in) % (1U << 22)) << (25 - 22);
  out++;
  *out = ((*in) >> 22);
  ++in;
  *out |= ((*in) % (1U << 15)) << (25 - 15);
  out++;
  *out = ((*in) >> 15);
  ++in;
  *out |= ((*in) % (1U << 8)) << (25 - 8);
  out++;
  *out = ((*in) >> 8);
  ++in;
  *out |= ((*in) % (1U << 1)) << (25 - 1);
  out++;
  *out = ((*in) >> 1) % (1U << 25);
  out++;
  *out = ((*in) >> 26);
  ++in;
  *out |= ((*in) % (1U << 19)) << (25 - 19);
  out++;
  *out = ((*in) >> 19);
  ++in;
  *out |= ((*in) % (1U << 12)) << (25 - 12);
  out++;
  *out = ((*in) >> 12);
  ++in;
  *out |= ((*in) % (1U << 5)) << (25 - 5);
  out++;
  *out = ((*in) >> 5) % (1U << 25);
  out++;
  *out = ((*in) >> 30);
  ++in;
  *out |= ((*in) % (1U << 23)) << (25 - 23);
  out++;
  *out = ((*in) >> 23);
  ++in;
  *out |= ((*in) % (1U << 16)) << (25 - 16);
  out++;
  *out = ((*in) >> 16);
  ++in;
  *out |= ((*in) % (1U << 9)) << (25 - 9);
  out++;
  *out = ((*in) >> 9);
  ++in;
  *out |= ((*in) % (1U << 2)) << (25 - 2);
  out++;
  *out = ((*in) >> 2) % (1U << 25);
  out++;
  *out = ((*in) >> 27);
  ++in;
  *out |= ((*in) % (1U << 20)) << (25 - 20);
  out++;
  *out = ((*in) >> 20);
  ++in;
  *out |= ((*in) % (1U << 13)) << (25 - 13);
  out++;
  *out = ((*in) >> 13);
  ++in;
  *out |= ((*in) % (1U << 6)) << (25 - 6);
  out++;
  *out = ((*in) >> 6) % (1U << 25);
  out++;
  *out = ((*in) >> 31);
  ++in;
  *out |= ((*in) % (1U << 24)) << (25 - 24);
  out++;
  *out = ((*in) >> 24);
  ++in;
  *out |= ((*in) % (1U << 17)) << (25 - 17);
  out++;
  *out = ((*in) >> 17);
  ++in;
  *out |= ((*in) % (1U << 10)) << (25 - 10);
  out++;
  *out = ((*in) >> 10);
  ++in;
  *out |= ((*in) % (1U << 3)) << (25 - 3);
  out++;
  *out = ((*in) >> 3) % (1U << 25);
  out++;
  *out = ((*in) >> 28);
  ++in;
  *out |= ((*in) % (1U << 21)) << (25 - 21);
  out++;
  *out = ((*in) >> 21);
  ++in;
  *out |= ((*in) % (1U << 14)) << (25 - 14);
  out++;
  *out = ((*in) >> 14);
  ++in;
  *out |= ((*in) % (1U << 7)) << (25 - 7);
  out++;
  *out = ((*in) >> 7);
  ++in;
  out++;

  return in;
}

inline const uint32_t* unpack26_32(const uint32_t* in, uint32_t* out) {
  *out = ((*in) >> 0) % (1U << 26);
  out++;
  *out = ((*in) >> 26);
  ++in;
  *out |= ((*in) % (1U << 20)) << (26 - 20);
  out++;
  *out = ((*in) >> 20);
  ++in;
  *out |= ((*in) % (1U << 14)) << (26 - 14);
  out++;
  *out = ((*in) >> 14);
  ++in;
  *out |= ((*in) % (1U << 8)) << (26 - 8);
  out++;
  *out = ((*in) >> 8);
  ++in;
  *out |= ((*in) % (1U << 2)) << (26 - 2);
  out++;
  *out = ((*in) >> 2) % (1U << 26);
  out++;
  *out = ((*in) >> 28);
  ++in;
  *out |= ((*in) % (1U << 22)) << (26 - 22);
  out++;
  *out = ((*in) >> 22);
  ++in;
  *out |= ((*in) % (1U << 16)) << (26 - 16);
  out++;
  *out = ((*in) >> 16);
  ++in;
  *out |= ((*in) % (1U << 10)) << (26 - 10);
  out++;
  *out = ((*in) >> 10);
  ++in;
  *out |= ((*in) % (1U << 4)) << (26 - 4);
  out++;
  *out = ((*in) >> 4) % (1U << 26);
  out++;
  *out = ((*in) >> 30);
  ++in;
  *out |= ((*in) % (1U << 24)) << (26 - 24);
  out++;
  *out = ((*in) >> 24);
  ++in;
  *out |= ((*in) % (1U << 18)) << (26 - 18);
  out++;
  *out = ((*in) >> 18);
  ++in;
  *out |= ((*in) % (1U << 12)) << (26 - 12);
  out++;
  *out = ((*in) >> 12);
  ++in;
  *out |= ((*in) % (1U << 6)) << (26 - 6);
  out++;
  *out = ((*in) >> 6);
  ++in;
  out++;
  *out = ((*in) >> 0) % (1U << 26);
  out++;
  *out = ((*in) >> 26);
  ++in;
  *out |= ((*in) % (1U << 20)) << (26 - 20);
  out++;
  *out = ((*in) >> 20);
  ++in;
  *out |= ((*in) % (1U << 14)) << (26 - 14);
  out++;
  *out = ((*in) >> 14);
  ++in;
  *out |= ((*in) % (1U << 8)) << (26 - 8);
  out++;
  *out = ((*in) >> 8);
  ++in;
  *out |= ((*in) % (1U << 2)) << (26 - 2);
  out++;
  *out = ((*in) >> 2) % (1U << 26);
  out++;
  *out = ((*in) >> 28);
  ++in;
  *out |= ((*in) % (1U << 22)) << (26 - 22);
  out++;
  *out = ((*in) >> 22);
  ++in;
  *out |= ((*in) % (1U << 16)) << (26 - 16);
  out++;
  *out = ((*in) >> 16);
  ++in;
  *out |= ((*in) % (1U << 10)) << (26 - 10);
  out++;
  *out = ((*in) >> 10);
  ++in;
  *out |= ((*in) % (1U << 4)) << (26 - 4);
  out++;
  *out = ((*in) >> 4) % (1U << 26);
  out++;
  *out = ((*in) >> 30);
  ++in;
  *out |= ((*in) % (1U << 24)) << (26 - 24);
  out++;
  *out = ((*in) >> 24);
  ++in;
  *out |= ((*in) % (1U << 18)) << (26 - 18);
  out++;
  *out = ((*in) >> 18);
  ++in;
  *out |= ((*in) % (1U << 12)) << (26 - 12);
  out++;
  *out = ((*in) >> 12);
  ++in;
  *out |= ((*in) % (1U << 6)) << (26 - 6);
  out++;
  *out = ((*in) >> 6);
  ++in;
  out++;

  return in;
}

inline const uint32_t* unpack27_32(const uint32_t* in, uint32_t* out) {
  *out = ((*in) >> 0) % (1U << 27);
  out++;
  *out = ((*in) >> 27);
  ++in;
  *out |= ((*in) % (1U << 22)) << (27 - 22);
  out++;
  *out = ((*in) >> 22);
  ++in;
  *out |= ((*in) % (1U << 17)) << (27 - 17);
  out++;
  *out = ((*in) >> 17);
  ++in;
  *out |= ((*in) % (1U << 12)) << (27 - 12);
  out++;
  *out = ((*in) >> 12);
  ++in;
  *out |= ((*in) % (1U << 7)) << (27 - 7);
  out++;
  *out = ((*in) >> 7);
  ++in;
  *out |= ((*in) % (1U << 2)) << (27 - 2);
  out++;
  *out = ((*in) >> 2) % (1U << 27);
  out++;
  *out = ((*in) >> 29);
  ++in;
  *out |= ((*in) % (1U << 24)) << (27 - 24);
  out++;
  *out = ((*in) >> 24);
  ++in;
  *out |= ((*in) % (1U << 19)) << (27 - 19);
  out++;
  *out = ((*in) >> 19);
  ++in;
  *out |= ((*in) % (1U << 14)) << (27 - 14);
  out++;
  *out = ((*in) >> 14);
  ++in;
  *out |= ((*in) % (1U << 9)) << (27 - 9);
  out++;
  *out = ((*in) >> 9);
  ++in;
  *out |= ((*in) % (1U << 4)) << (27 - 4);
  out++;
  *out = ((*in) >> 4) % (1U << 27);
  out++;
  *out = ((*in) >> 31);
  ++in;
  *out |= ((*in) % (1U << 26)) << (27 - 26);
  out++;
  *out = ((*in) >> 26);
  ++in;
  *out |= ((*in) % (1U << 21)) << (27 - 21);
  out++;
  *out = ((*in) >> 21);
  ++in;
  *out |= ((*in) % (1U << 16)) << (27 - 16);
  out++;
  *out = ((*in) >> 16);
  ++in;
  *out |= ((*in) % (1U << 11)) << (27 - 11);
  out++;
  *out = ((*in) >> 11);
  ++in;
  *out |= ((*in) % (1U << 6)) << (27 - 6);
  out++;
  *out = ((*in) >> 6);
  ++in;
  *out |= ((*in) % (1U << 1)) << (27 - 1);
  out++;
  *out = ((*in) >> 1) % (1U << 27);
  out++;
  *out = ((*in) >> 28);
  ++in;
  *out |= ((*in) % (1U << 23)) << (27 - 23);
  out++;
  *out = ((*in) >> 23);
  ++in;
  *out |= ((*in) % (1U << 18)) << (27 - 18);
  out++;
  *out = ((*in) >> 18);
  ++in;
  *out |= ((*in) % (1U << 13)) << (27 - 13);
  out++;
  *out = ((*in) >> 13);
  ++in;
  *out |= ((*in) % (1U << 8)) << (27 - 8);
  out++;
  *out = ((*in) >> 8);
  ++in;
  *out |= ((*in) % (1U << 3)) << (27 - 3);
  out++;
  *out = ((*in) >> 3) % (1U << 27);
  out++;
  *out = ((*in) >> 30);
  ++in;
  *out |= ((*in) % (1U << 25)) << (27 - 25);
  out++;
  *out = ((*in) >> 25);
  ++in;
  *out |= ((*in) % (1U << 20)) << (27 - 20);
  out++;
  *out = ((*in) >> 20);
  ++in;
  *out |= ((*in) % (1U << 15)) << (27 - 15);
  out++;
  *out = ((*in) >> 15);
  ++in;
  *out |= ((*in) % (1U << 10)) << (27 - 10);
  out++;
  *out = ((*in) >> 10);
  ++in;
  *out |= ((*in) % (1U << 5)) << (27 - 5);
  out++;
  *out = ((*in) >> 5);
  ++in;
  out++;

  return in;
}

inline const uint32_t* unpack28_32(const uint32_t* in, uint32_t* out) {
  *out = ((*in) >> 0) % (1U << 28);
  out++;
  *out = ((*in) >> 28);
  ++in;
  *out |= ((*in) % (1U << 24)) << (28 - 24);
  out++;
  *out = ((*in) >> 24);
  ++in;
  *out |= ((*in) % (1U << 20)) << (28 - 20);
  out++;
  *out = ((*in) >> 20);
  ++in;
  *out |= ((*in) % (1U << 16)) << (28 - 16);
  out++;
  *out = ((*in) >> 16);
  ++in;
  *out |= ((*in) % (1U << 12)) << (28 - 12);
  out++;
  *out = ((*in) >> 12);
  ++in;
  *out |= ((*in) % (1U << 8)) << (28 - 8);
  out++;
  *out = ((*in) >> 8);
  ++in;
  *out |= ((*in) % (1U << 4)) << (28 - 4);
  out++;
  *out = ((*in) >> 4);
  ++in;
  out++;
  *out = ((*in) >> 0) % (1U << 28);
  out++;
  *out = ((*in) >> 28);
  ++in;
  *out |= ((*in) % (1U << 24)) << (28 - 24);
  out++;
  *out = ((*in) >> 24);
  ++in;
  *out |= ((*in) % (1U << 20)) << (28 - 20);
  out++;
  *out = ((*in) >> 20);
  ++in;
  *out |= ((*in) % (1U << 16)) << (28 - 16);
  out++;
  *out = ((*in) >> 16);
  ++in;
  *out |= ((*in) % (1U << 12)) << (28 - 12);
  out++;
  *out = ((*in) >> 12);
  ++in;
  *out |= ((*in) % (1U << 8)) << (28 - 8);
  out++;
  *out = ((*in) >> 8);
  ++in;
  *out |= ((*in) % (1U << 4)) << (28 - 4);
  out++;
  *out = ((*in) >> 4);
  ++in;
  out++;
  *out = ((*in) >> 0) % (1U << 28);
  out++;
  *out = ((*in) >> 28);
  ++in;
  *out |= ((*in) % (1U << 24)) << (28 - 24);
  out++;
  *out = ((*in) >> 24);
  ++in;
  *out |= ((*in) % (1U << 20)) << (28 - 20);
  out++;
  *out = ((*in) >> 20);
  ++in;
  *out |= ((*in) % (1U << 16)) << (28 - 16);
  out++;
  *out = ((*in) >> 16);
  ++in;
  *out |= ((*in) % (1U << 12)) << (28 - 12);
  out++;
  *out = ((*in) >> 12);
  ++in;
  *out |= ((*in) % (1U << 8)) << (28 - 8);
  out++;
  *out = ((*in) >> 8);
  ++in;
  *out |= ((*in) % (1U << 4)) << (28 - 4);
  out++;
  *out = ((*in) >> 4);
  ++in;
  out++;
  *out = ((*in) >> 0) % (1U << 28);
  out++;
  *out = ((*in) >> 28);
  ++in;
  *out |= ((*in) % (1U << 24)) << (28 - 24);
  out++;
  *out = ((*in) >> 24);
  ++in;
  *out |= ((*in) % (1U << 20)) << (28 - 20);
  out++;
  *out = ((*in) >> 20);
  ++in;
  *out |= ((*in) % (1U << 16)) << (28 - 16);
  out++;
  *out = ((*in) >> 16);
  ++in;
  *out |= ((*in) % (1U << 12)) << (28 - 12);
  out++;
  *out = ((*in) >> 12);
  ++in;
  *out |= ((*in) % (1U << 8)) << (28 - 8);
  out++;
  *out = ((*in) >> 8);
  ++in;
  *out |= ((*in) % (1U << 4)) << (28 - 4);
  out++;
  *out = ((*in) >> 4);
  ++in;
  out++;

  return in;
}

inline const uint32_t* unpack29_32(const uint32_t* in, uint32_t* out) {
  *out = ((*in) >> 0) % (1U << 29);
  out++;
  *out = ((*in) >> 29);
  ++in;
  *out |= ((*in) % (1U << 26)) << (29 - 26);
  out++;
  *out = ((*in) >> 26);
  ++in;
  *out |= ((*in) % (1U << 23)) << (29 - 23);
  out++;
  *out = ((*in) >> 23);
  ++in;
  *out |= ((*in) % (1U << 20)) << (29 - 20);
  out++;
  *out = ((*in) >> 20);
  ++in;
  *out |= ((*in) % (1U << 17)) << (29 - 17);
  out++;
  *out = ((*in) >> 17);
  ++in;
  *out |= ((*in) % (1U << 14)) << (29 - 14);
  out++;
  *out = ((*in) >> 14);
  ++in;
  *out |= ((*in) % (1U << 11)) << (29 - 11);
  out++;
  *out = ((*in) >> 11);
  ++in;
  *out |= ((*in) % (1U << 8)) << (29 - 8);
  out++;
  *out = ((*in) >> 8);
  ++in;
  *out |= ((*in) % (1U << 5)) << (29 - 5);
  out++;
  *out = ((*in) >> 5);
  ++in;
  *out |= ((*in) % (1U << 2)) << (29 - 2);
  out++;
  *out = ((*in) >> 2) % (1U << 29);
  out++;
  *out = ((*in) >> 31);
  ++in;
  *out |= ((*in) % (1U << 28)) << (29 - 28);
  out++;
  *out = ((*in) >> 28);
  ++in;
  *out |= ((*in) % (1U << 25)) << (29 - 25);
  out++;
  *out = ((*in) >> 25);
  ++in;
  *out |= ((*in) % (1U << 22)) << (29 - 22);
  out++;
  *out = ((*in) >> 22);
  ++in;
  *out |= ((*in) % (1U << 19)) << (29 - 19);
  out++;
  *out = ((*in) >> 19);
  ++in;
  *out |= ((*in) % (1U << 16)) << (29 - 16);
  out++;
  *out = ((*in) >> 16);
  ++in;
  *out |= ((*in) % (1U << 13)) << (29 - 13);
  out++;
  *out = ((*in) >> 13);
  ++in;
  *out |= ((*in) % (1U << 10)) << (29 - 10);
  out++;
  *out = ((*in) >> 10);
  ++in;
  *out |= ((*in) % (1U << 7)) << (29 - 7);
  out++;
  *out = ((*in) >> 7);
  ++in;
  *out |= ((*in) % (1U << 4)) << (29 - 4);
  out++;
  *out = ((*in) >> 4);
  ++in;
  *out |= ((*in) % (1U << 1)) << (29 - 1);
  out++;
  *out = ((*in) >> 1) % (1U << 29);
  out++;
  *out = ((*in) >> 30);
  ++in;
  *out |= ((*in) % (1U << 27)) << (29 - 27);
  out++;
  *out = ((*in) >> 27);
  ++in;
  *out |= ((*in) % (1U << 24)) << (29 - 24);
  out++;
  *out = ((*in) >> 24);
  ++in;
  *out |= ((*in) % (1U << 21)) << (29 - 21);
  out++;
  *out = ((*in) >> 21);
  ++in;
  *out |= ((*in) % (1U << 18)) << (29 - 18);
  out++;
  *out = ((*in) >> 18);
  ++in;
  *out |= ((*in) % (1U << 15)) << (29 - 15);
  out++;
  *out = ((*in) >> 15);
  ++in;
  *out |= ((*in) % (1U << 12)) << (29 - 12);
  out++;
  *out = ((*in) >> 12);
  ++in;
  *out |= ((*in) % (1U << 9)) << (29 - 9);
  out++;
  *out = ((*in) >> 9);
  ++in;
  *out |= ((*in) % (1U << 6)) << (29 - 6);
  out++;
  *out = ((*in) >> 6);
  ++in;
  *out |= ((*in) % (1U << 3)) << (29 - 3);
  out++;
  *out = ((*in) >> 3);
  ++in;
  out++;

  return in;
}

inline const uint32_t* unpack30_32(const uint32_t* in, uint32_t* out) {
  *out = ((*in) >> 0) % (1U << 30);
  out++;
  *out = ((*in) >> 30);
  ++in;
  *out |= ((*in) % (1U << 28)) << (30 - 28);
  out++;
  *out = ((*in) >> 28);
  ++in;
  *out |= ((*in) % (1U << 26)) << (30 - 26);
  out++;
  *out = ((*in) >> 26);
  ++in;
  *out |= ((*in) % (1U << 24)) << (30 - 24);
  out++;
  *out = ((*in) >> 24);
  ++in;
  *out |= ((*in) % (1U << 22)) << (30 - 22);
  out++;
  *out = ((*in) >> 22);
  ++in;
  *out |= ((*in) % (1U << 20)) << (30 - 20);
  out++;
  *out = ((*in) >> 20);
  ++in;
  *out |= ((*in) % (1U << 18)) << (30 - 18);
  out++;
  *out = ((*in) >> 18);
  ++in;
  *out |= ((*in) % (1U << 16)) << (30 - 16);
  out++;
  *out = ((*in) >> 16);
  ++in;
  *out |= ((*in) % (1U << 14)) << (30 - 14);
  out++;
  *out = ((*in) >> 14);
  ++in;
  *out |= ((*in) % (1U << 12)) << (30 - 12);
  out++;
  *out = ((*in) >> 12);
  ++in;
  *out |= ((*in) % (1U << 10)) << (30 - 10);
  out++;
  *out = ((*in) >> 10);
  ++in;
  *out |= ((*in) % (1U << 8)) << (30 - 8);
  out++;
  *out = ((*in) >> 8);
  ++in;
  *out |= ((*in) % (1U << 6)) << (30 - 6);
  out++;
  *out = ((*in) >> 6);
  ++in;
  *out |= ((*in) % (1U << 4)) << (30 - 4);
  out++;
  *out = ((*in) >> 4);
  ++in;
  *out |= ((*in) % (1U << 2)) << (30 - 2);
  out++;
  *out = ((*in) >> 2);
  ++in;
  out++;
  *out = ((*in) >> 0) % (1U << 30);
  out++;
  *out = ((*in) >> 30);
  ++in;
  *out |= ((*in) % (1U << 28)) << (30 - 28);
  out++;
  *out = ((*in) >> 28);
  ++in;
  *out |= ((*in) % (1U << 26)) << (30 - 26);
  out++;
  *out = ((*in) >> 26);
  ++in;
  *out |= ((*in) % (1U << 24)) << (30 - 24);
  out++;
  *out = ((*in) >> 24);
  ++in;
  *out |= ((*in) % (1U << 22)) << (30 - 22);
  out++;
  *out = ((*in) >> 22);
  ++in;
  *out |= ((*in) % (1U << 20)) << (30 - 20);
  out++;
  *out = ((*in) >> 20);
  ++in;
  *out |= ((*in) % (1U << 18)) << (30 - 18);
  out++;
  *out = ((*in) >> 18);
  ++in;
  *out |= ((*in) % (1U << 16)) << (30 - 16);
  out++;
  *out = ((*in) >> 16);
  ++in;
  *out |= ((*in) % (1U << 14)) << (30 - 14);
  out++;
  *out = ((*in) >> 14);
  ++in;
  *out |= ((*in) % (1U << 12)) << (30 - 12);
  out++;
  *out = ((*in) >> 12);
  ++in;
  *out |= ((*in) % (1U << 10)) << (30 - 10);
  out++;
  *out = ((*in) >> 10);
  ++in;
  *out |= ((*in) % (1U << 8)) << (30 - 8);
  out++;
  *out = ((*in) >> 8);
  ++in;
  *out |= ((*in) % (1U << 6)) << (30 - 6);
  out++;
  *out = ((*in) >> 6);
  ++in;
  *out |= ((*in) % (1U << 4)) << (30 - 4);
  out++;
  *out = ((*in) >> 4);
  ++in;
  *out |= ((*in) % (1U << 2)) << (30 - 2);
  out++;
  *out = ((*in) >> 2);
  ++in;
  out++;

  return in;
}

inline const uint32_t* unpack31_32(const uint32_t* in, uint32_t* out) {
  *out = ((*in) >> 0) % (1U << 31);
  out++;
  *out = ((*in) >> 31);
  ++in;
  *out |= ((*in) % (1U << 30)) << (31 - 30);
  out++;
  *out = ((*in) >> 30);
  ++in;
  *out |= ((*in) % (1U << 29)) << (31 - 29);
  out++;
  *out = ((*in) >> 29);
  ++in;
  *out |= ((*in) % (1U << 28)) << (31 - 28);
  out++;
  *out = ((*in) >> 28);
  ++in;
  *out |= ((*in) % (1U << 27)) << (31 - 27);
  out++;
  *out = ((*in) >> 27);
  ++in;
  *out |= ((*in) % (1U << 26)) << (31 - 26);
  out++;
  *out = ((*in) >> 26);
  ++in;
  *out |= ((*in) % (1U << 25)) << (31 - 25);
  out++;
  *out = ((*in) >> 25);
  ++in;
  *out |= ((*in) % (1U << 24)) << (31 - 24);
  out++;
  *out = ((*in) >> 24);
  ++in;
  *out |= ((*in) % (1U << 23)) << (31 - 23);
  out++;
  *out = ((*in) >> 23);
  ++in;
  *out |= ((*in) % (1U << 22)) << (31 - 22);
  out++;
  *out = ((*in) >> 22);
  ++in;
  *out |= ((*in) % (1U << 21)) << (31 - 21);
  out++;
  *out = ((*in) >> 21);
  ++in;
  *out |= ((*in) % (1U << 20)) << (31 - 20);
  out++;
  *out = ((*in) >> 20);
  ++in;
  *out |= ((*in) % (1U << 19)) << (31 - 19);
  out++;
  *out = ((*in) >> 19);
  ++in;
  *out |= ((*in) % (1U << 18)) << (31 - 18);
  out++;
  *out = ((*in) >> 18);
  ++in;
  *out |= ((*in) % (1U << 17)) << (31 - 17);
  out++;
  *out = ((*in) >> 17);
  ++in;
  *out |= ((*in) % (1U << 16)) << (31 - 16);
  out++;
  *out = ((*in) >> 16);
  ++in;
  *out |= ((*in) % (1U << 15)) << (31 - 15);
  out++;
  *out = ((*in) >> 15);
  ++in;
  *out |= ((*in) % (1U << 14)) << (31 - 14);
  out++;
  *out = ((*in) >> 14);
  ++in;
  *out |= ((*in) % (1U << 13)) << (31 - 13);
  out++;
  *out = ((*in) >> 13);
  ++in;
  *out |= ((*in) % (1U << 12)) << (31 - 12);
  out++;
  *out = ((*in) >> 12);
  ++in;
  *out |= ((*in) % (1U << 11)) << (31 - 11);
  out++;
  *out = ((*in) >> 11);
  ++in;
  *out |= ((*in) % (1U << 10)) << (31 - 10);
  out++;
  *out = ((*in) >> 10);
  ++in;
  *out |= ((*in) % (1U << 9)) << (31 - 9);
  out++;
  *out = ((*in) >> 9);
  ++in;
  *out |= ((*in) % (1U << 8)) << (31 - 8);
  out++;
  *out = ((*in) >> 8);
  ++in;
  *out |= ((*in) % (1U << 7)) << (31 - 7);
  out++;
  *out = ((*in) >> 7);
  ++in;
  *out |= ((*in) % (1U << 6)) << (31 - 6);
  out++;
  *out = ((*in) >> 6);
  ++in;
  *out |= ((*in) % (1U << 5)) << (31 - 5);
  out++;
  *out = ((*in) >> 5);
  ++in;
  *out |= ((*in) % (1U << 4)) << (31 - 4);
  out++;
  *out = ((*in) >> 4);
  ++in;
  *out |= ((*in) % (1U << 3)) << (31 - 3);
  out++;
  *out = ((*in) >> 3);
  ++in;
  *out |= ((*in) % (1U << 2)) << (31 - 2);
  out++;
  *out = ((*in) >> 2);
  ++in;
  *out |= ((*in) % (1U << 1)) << (31 - 1);
  out++;
  *out = ((*in) >> 1);
  ++in;
  out++;

  return in;
}

inline const uint32_t* unpack32_32(const uint32_t* in, uint32_t* out) {
  *out = ((*in) >> 0);
  ++in;
  out++;
  *out = ((*in) >> 0);
  ++in;
  out++;
  *out = ((*in) >> 0);
  ++in;
  out++;
  *out = ((*in) >> 0);
  ++in;
  out++;
  *out = ((*in) >> 0);
  ++in;
  out++;
  *out = ((*in) >> 0);
  ++in;
  out++;
  *out = ((*in) >> 0);
  ++in;
  out++;
  *out = ((*in) >> 0);
  ++in;
  out++;
  *out = ((*in) >> 0);
  ++in;
  out++;
  *out = ((*in) >> 0);
  ++in;
  out++;
  *out = ((*in) >> 0);
  ++in;
  out++;
  *out = ((*in) >> 0);
  ++in;
  out++;
  *out = ((*in) >> 0);
  ++in;
  out++;
  *out = ((*in) >> 0);
  ++in;
  out++;
  *out = ((*in) >> 0);
  ++in;
  out++;
  *out = ((*in) >> 0);
  ++in;
  out++;
  *out = ((*in) >> 0);
  ++in;
  out++;
  *out = ((*in) >> 0);
  ++in;
  out++;
  *out = ((*in) >> 0);
  ++in;
  out++;
  *out = ((*in) >> 0);
  ++in;
  out++;
  *out = ((*in) >> 0);
  ++in;
  out++;
  *out = ((*in) >> 0);
  ++in;
  out++;
  *out = ((*in) >> 0);
  ++in;
  out++;
  *out = ((*in) >> 0);
  ++in;
  out++;
  *out = ((*in) >> 0);
  ++in;
  out++;
  *out = ((*in) >> 0);
  ++in;
  out++;
  *out = ((*in) >> 0);
  ++in;
  out++;
  *out = ((*in) >> 0);
  ++in;
  out++;
  *out = ((*in) >> 0);
  ++in;
  out++;
  *out = ((*in) >> 0);
  ++in;
  out++;
  *out = ((*in) >> 0);
  ++in;
  out++;
  *out = ((*in) >> 0);
  ++in;
  out++;

  return in;
}

inline const uint32_t* nullunpacker32(const uint32_t* in, uint32_t* out) {
  for (int k = 0; k < 32; ++k) {
    out[k] = 0;
  }
  return in;
}

inline int unpack32(const uint32_t* in, uint32_t* out, int batch_size, int num_bits) {
  batch_size = batch_size / 32 * 32;
  int num_loops = batch_size / 32;

  switch (num_bits) {
    case 0:
      for (int i = 0; i < num_loops; ++i)
        in = nullunpacker32(in, out + i * 32);
      break;
    case 1:
      for (int i = 0; i < num_loops; ++i)
        in = unpack1_32(in, out + i * 32);
      break;
    case 2:
      for (int i = 0; i < num_loops; ++i)
        in = unpack2_32(in, out + i * 32);
      break;
    case 3:
      for (int i = 0; i < num_loops; ++i)
        in = unpack3_32(in, out + i * 32);
      break;
    case 4:
      for (int i = 0; i < num_loops; ++i)
        in = unpack4_32(in, out + i * 32);
      break;
    case 5:
      for (int i = 0; i < num_loops; ++i)
        in = unpack5_32(in, out + i * 32);
      break;
    case 6:
      for (int i = 0; i < num_loops; ++i)
        in = unpack6_32(in, out + i * 32);
      break;
    case 7:
      for (int i = 0; i < num_loops; ++i)
        in = unpack7_32(in, out + i * 32);
      break;
    case 8:
      for (int i = 0; i < num_loops; ++i)
        in = unpack8_32(in, out + i * 32);
      break;
    case 9:
      for (int i = 0; i < num_loops; ++i)
        in = unpack9_32(in, out + i * 32);
      break;
    case 10:
      for (int i = 0; i < num_loops; ++i)
        in = unpack10_32(in, out + i * 32);
      break;
    case 11:
      for (int i = 0; i < num_loops; ++i)
        in = unpack11_32(in, out + i * 32);
      break;
    case 12:
      for (int i = 0; i < num_loops; ++i)
        in = unpack12_32(in, out + i * 32);
      break;
    case 13:
      for (int i = 0; i < num_loops; ++i)
        in = unpack13_32(in, out + i * 32);
      break;
    case 14:
      for (int i = 0; i < num_loops; ++i)
        in = unpack14_32(in, out + i * 32);
      break;
    case 15:
      for (int i = 0; i < num_loops; ++i)
        in = unpack15_32(in, out + i * 32);
      break;
    case 16:
      for (int i = 0; i < num_loops; ++i)
        in = unpack16_32(in, out + i * 32);
      break;
    case 17:
      for (int i = 0; i < num_loops; ++i)
        in = unpack17_32(in, out + i * 32);
      break;
    case 18:
      for (int i = 0; i < num_loops; ++i)
        in = unpack18_32(in, out + i * 32);
      break;
    case 19:
      for (int i = 0; i < num_loops; ++i)
        in = unpack19_32(in, out + i * 32);
      break;
    case 20:
      for (int i = 0; i < num_loops; ++i)
        in = unpack20_32(in, out + i * 32);
      break;
    case 21:
      for (int i = 0; i < num_loops; ++i)
        in = unpack21_32(in, out + i * 32);
      break;
    case 22:
      for (int i = 0; i < num_loops; ++i)
        in = unpack22_32(in, out + i * 32);
      break;
    case 23:
      for (int i = 0; i < num_loops; ++i)
        in = unpack23_32(in, out + i * 32);
      break;
    case 24:
      for (int i = 0; i < num_loops; ++i)
        in = unpack24_32(in, out + i * 32);
      break;
    case 25:
      for (int i = 0; i < num_loops; ++i)
        in = unpack25_32(in, out + i * 32);
      break;
    case 26:
      for (int i = 0; i < num_loops; ++i)
        in = unpack26_32(in, out + i * 32);
      break;
    case 27:
      for (int i = 0; i < num_loops; ++i)
        in = unpack27_32(in, out + i * 32);
      break;
    case 28:
      for (int i = 0; i < num_loops; ++i)
        in = unpack28_32(in, out + i * 32);
      break;
    case 29:
      for (int i = 0; i < num_loops; ++i)
        in = unpack29_32(in, out + i * 32);
      break;
    case 30:
      for (int i = 0; i < num_loops; ++i)
        in = unpack30_32(in, out + i * 32);
      break;
    case 31:
      for (int i = 0; i < num_loops; ++i)
        in = unpack31_32(in, out + i * 32);
      break;
    case 32:
      for (int i = 0; i < num_loops; ++i)
        in = unpack32_32(in, out + i * 32);
      break;
    default:
      throw std::runtime_error("Unsupported num_bits");
  }

  return batch_size;
}

};  // namespace parquet

#endif  // PARQUET_UTIL_BPACKING_H
