in theta/include/bit_packing.hpp [5981:6057]
static inline void unpack_bits_62(uint64_t* values, const uint8_t* ptr) {
values[0] = static_cast<uint64_t>(*ptr++) << 54;
values[0] |= static_cast<uint64_t>(*ptr++) << 46;
values[0] |= static_cast<uint64_t>(*ptr++) << 38;
values[0] |= static_cast<uint64_t>(*ptr++) << 30;
values[0] |= *ptr++ << 22;
values[0] |= *ptr++ << 14;
values[0] |= *ptr++ << 6;
values[0] |= *ptr >> 2;
values[1] = static_cast<uint64_t>(*ptr++ & 3) << 60;
values[1] |= static_cast<uint64_t>(*ptr++) << 52;
values[1] |= static_cast<uint64_t>(*ptr++) << 44;
values[1] |= static_cast<uint64_t>(*ptr++) << 36;
values[1] |= static_cast<uint64_t>(*ptr++) << 28;
values[1] |= *ptr++ << 20;
values[1] |= *ptr++ << 12;
values[1] |= *ptr++ << 4;
values[1] |= *ptr >> 4;
values[2] = static_cast<uint64_t>(*ptr++ & 0xf) << 58;
values[2] |= static_cast<uint64_t>(*ptr++) << 50;
values[2] |= static_cast<uint64_t>(*ptr++) << 42;
values[2] |= static_cast<uint64_t>(*ptr++) << 34;
values[2] |= static_cast<uint64_t>(*ptr++) << 26;
values[2] |= *ptr++ << 18;
values[2] |= *ptr++ << 10;
values[2] |= *ptr++ << 2;
values[2] |= *ptr >> 6;
values[3] = static_cast<uint64_t>(*ptr++ & 0x3f) << 56;
values[3] |= static_cast<uint64_t>(*ptr++) << 48;
values[3] |= static_cast<uint64_t>(*ptr++) << 40;
values[3] |= static_cast<uint64_t>(*ptr++) << 32;
values[3] |= static_cast<uint64_t>(*ptr++) << 24;
values[3] |= *ptr++ << 16;
values[3] |= *ptr++ << 8;
values[3] |= *ptr++;
values[4] = static_cast<uint64_t>(*ptr++) << 54;
values[4] |= static_cast<uint64_t>(*ptr++) << 46;
values[4] |= static_cast<uint64_t>(*ptr++) << 38;
values[4] |= static_cast<uint64_t>(*ptr++) << 30;
values[4] |= *ptr++ << 22;
values[4] |= *ptr++ << 14;
values[4] |= *ptr++ << 6;
values[4] |= *ptr >> 2;
values[5] = static_cast<uint64_t>(*ptr++ & 3) << 60;
values[5] |= static_cast<uint64_t>(*ptr++) << 52;
values[5] |= static_cast<uint64_t>(*ptr++) << 44;
values[5] |= static_cast<uint64_t>(*ptr++) << 36;
values[5] |= static_cast<uint64_t>(*ptr++) << 28;
values[5] |= *ptr++ << 20;
values[5] |= *ptr++ << 12;
values[5] |= *ptr++ << 4;
values[5] |= *ptr >> 4;
values[6] = static_cast<uint64_t>(*ptr++ & 0xf) << 58;
values[6] |= static_cast<uint64_t>(*ptr++) << 50;
values[6] |= static_cast<uint64_t>(*ptr++) << 42;
values[6] |= static_cast<uint64_t>(*ptr++) << 34;
values[6] |= static_cast<uint64_t>(*ptr++) << 26;
values[6] |= *ptr++ << 18;
values[6] |= *ptr++ << 10;
values[6] |= *ptr++ << 2;
values[6] |= *ptr >> 6;
values[7] = static_cast<uint64_t>(*ptr++ & 0x3f) << 56;
values[7] |= static_cast<uint64_t>(*ptr++) << 48;
values[7] |= static_cast<uint64_t>(*ptr++) << 40;
values[7] |= static_cast<uint64_t>(*ptr++) << 32;
values[7] |= static_cast<uint64_t>(*ptr++) << 24;
values[7] |= *ptr++ << 16;
values[7] |= *ptr++ << 8;
values[7] |= *ptr;
}