<s> import math <EOL> import struct <EOL> from pdb import set_trace as br <EOL> WSIZE = <NUM_LIT:8> <EOL> def atoword ( bytelist ) : <EOL> if WSIZE == <NUM_LIT:4> : <EOL> return struct . unpack ( '<STR_LIT:I>' , '<STR_LIT>' . join ( map ( chr , bytelist ) ) ) [ <NUM_LIT:0> ] <EOL> elif WSIZE == <NUM_LIT:8> : <EOL> return struct . unpack ( '<STR_LIT>' , '<STR_LIT>' . join ( map ( chr , bytelist ) ) ) [ <NUM_LIT:0> ] <EOL> else : <EOL> raise Exception ( '<STR_LIT>' ) <EOL> def chunks ( l , n ) : <EOL> res = [ ] <EOL> for i in xrange ( <NUM_LIT:0> , len ( l ) , n ) : <EOL> res . append ( l [ i : i + n ] ) <EOL> return res <EOL> def unpack ( string_word ) : <EOL> if WSIZE == <NUM_LIT:4> : <EOL> return struct . unpack ( '<STR_LIT:I>' , string_word ) [ <NUM_LIT:0> ] <EOL> elif WSIZE == <NUM_LIT:8> : <EOL> return struct . unpack ( '<STR_LIT>' , string_word ) [ <NUM_LIT:0> ] <EOL> else : <EOL> raise Exception ( '<STR_LIT>' ) <EOL> def unpack_tagged ( string_word ) : <EOL> if WSIZE == <NUM_LIT:4> : <EOL> return untag ( struct . unpack ( '<STR_LIT:I>' , string_word ) [ <NUM_LIT:0> ] ) <EOL> elif WSIZE == <NUM_LIT:8> : <EOL> return untag ( struct . unpack ( '<STR_LIT>' , string_word ) [ <NUM_LIT:0> ] ) <EOL> else : <EOL> raise Exception ( '<STR_LIT>' ) <EOL> def pack_word ( num ) : <EOL> if WSIZE == <NUM_LIT:4> : <EOL> return struct . pack ( '<STR_LIT:I>' , num ) <EOL> elif WSIZE == <NUM_LIT:8> : <EOL> return struct . pack ( '<STR_LIT>' , num ) <EOL> else : <EOL> raise Exception ( '<STR_LIT>' ) <EOL> def pack32 ( num ) : <EOL> return struct . pack ( '<STR_LIT:I>' , num ) <EOL> def pack_byte ( num ) : <EOL> return struct . pack ( '<STR_LIT:B>' , num ) <EOL> def untag ( num ) : <EOL> if WSIZE == <NUM_LIT:4> : <EOL> return num & <NUM_LIT> <EOL> elif WSIZE == <NUM_LIT:8> : <EOL> return num & <NUM_LIT> <EOL> else : <EOL> raise Exception ( '<STR_LIT>' ) <EOL> def tag ( num ) : <EOL> if WSIZE == <NUM_LIT:4> : <EOL> return num | <NUM_LIT> <EOL> elif WSIZE == <NUM_LIT:8> : <EOL> return num | <NUM_LIT> <EOL> else : <EOL> raise Exception ( '<STR_LIT>' ) <EOL> def bytelist ( num ) : <EOL> if WSIZE == <NUM_LIT:4> : <EOL> return map ( ord , struct . pack ( '<STR_LIT:I>' , num ) ) <EOL> elif WSIZE == <NUM_LIT:8> : <EOL> return map ( ord , struct . pack ( '<STR_LIT>' , num ) ) <EOL> else : <EOL> raise Exception ( '<STR_LIT>' ) <EOL> def bytelist_tag ( num ) : <EOL> if WSIZE == <NUM_LIT:4> : <EOL> return map ( ord , struct . pack ( '<STR_LIT:I>' , tag ( num ) ) ) <EOL> elif WSIZE == <NUM_LIT:8> : <EOL> return map ( ord , struct . pack ( '<STR_LIT>' , tag ( num ) ) ) <EOL> else : <EOL> raise Exception ( '<STR_LIT>' ) <EOL> def string_block_size ( string ) : <EOL> return int ( math . ceil ( len ( string ) / float ( WSIZE ) ) * WSIZE ) </s>
