+void sc_truncate(unsigned int num_bits, void *buffer) {
+ char *cbuffer = buffer;
+ char *pos = cbuffer + (num_bits / 4);
+ char *end = cbuffer + calc_buffer_size;
+
+ assert(pos < end);
+
+ switch(num_bits % 4) {
+ case 0: /* nothing to do */ break;
+ case 1: *pos = and_table[_val(*pos)][SC_1]; pos++; break;
+ case 2: *pos = and_table[_val(*pos)][SC_3]; pos++; break;
+ case 3: *pos = and_table[_val(*pos)][SC_7]; pos++; break;
+ }
+
+ for( ; pos < end; ++pos)
+ *pos = SC_0;
+}
+