+ if( value < 0x80 ) { // 7 bits into 1 byte
+ _put_byte(value);
+ }
+ else if( !(value >> (8+6)) ) { // 14 bits packed into 2 bytes
+ _put_byte( 0x80 | ((value >> 8) & 0x3F) );
+ _put_byte( value & 0xFF );
+ }
+ else if( !(value >> (32+5)) ) { // 37 bits into 5 bytes
+ _put_byte( 0xC0 | ((value >> 32) & 0x1F) );
+ _put_dword(value & 0xFFFFFFFF);
+ }
+ else {
+ _put_byte( 0xE0 ); // 64 (actually 68) bits into 9 bytes
+ _put_dword(value & 0xFFFFFFFF);
+ _put_dword(value >> 32);
+ }