code: def load_code(self):
      
      a = self.load_int()
      b = self.load_int()
      key = get_keys(a, b)
      padsize = (b + 15) & ~0xf
      intsize = padsize/4
      data = self.bufstr[self.bufpos:self.bufpos+padsize]
      # print("%d: %d (%d=%d)" % (self.bufpos, b, padsize, len(data)))
      data = list(struct.unpack('<%dL' % intsize, data))
      tea_decipher(data, key)
      self.bufpos += padsize
      obj = xmarshal._FastUnmarshaller(struct.pack('<%dL' % intsize, *data))
      code = obj.load_code()
      co_code = patch(code.co_code)
      if PYTHON3:
          return Code2Compat(code.co_argcount, code.co_nlocals, code.co_stacksize,
                             code.co_flags,
                             co_code, code.co_consts, code.co_names, code.co_varnames,
                             code.co_filename, code.co_name, code.co_firstlineno,
                             code.co_lnotab, code.co_freevars, code.co_cellvars)
      else:
          return types.CodeType(code.co_argcount, code.co_nlocals, code.co_stacksize, code.co_flags,
                                co_code, code.co_consts, code.co_names, code.co_varnames,
                                code.co_filename, code.co_name, code.co_firstlineno,
                                code.co_lnotab, code.co_freevars, code.co_cellvars)
docs: Returns a Python code object like xdis.unmarshal.load_code(),
      but in we decrypt the data in self.bufstr.
  
      That is:
        * calculate the TEA key,
        * decrypt self.bufstr
        * create and return a Python code-object