void UnpackBits()
{
int i = 0, last_bit = 0, value = 0;
for (int j = 0; j < m_bits.Count; j++)
{
int bit = m_bits[j];
if (bit == 0)
{
m_result[i] = (i > 0) ? value ^ m_result[i - 1] : value;
value = 0;
last_bit = 0;
i++;
continue;
}
bit += last_bit;
last_bit = bit;
value |= 1 << (bit - 1);
}
}