def_lift(self):ifTYPE_CHECKING:assertisinstance(self.irsb.arch,LibvexArch)assertisinstance(self.data,CLiftSource)try:_libvex_lock.acquire()pvc.log_level=log.getEffectiveLevel()vex_arch=getattr(pvc,self.irsb.arch.vex_arch,None)assertvex_archisnotNoneifself.bytes_offsetisNone:self.bytes_offset=0ifself.max_bytesisNoneorself.max_bytes>VEX_MAX_BYTES:max_bytes=VEX_MAX_BYTESelse:max_bytes=self.max_bytesifself.max_instisNoneorself.max_inst>VEX_MAX_INSTRUCTIONS:max_inst=VEX_MAX_INSTRUCTIONSelse:max_inst=self.max_inststrict_block_end=self.strict_block_endifstrict_block_endisNone:strict_block_end=Trueifself.cross_insn_opt:px_control=VexRegisterUpdates.VexRegUpdUnwindregsAtMemAccesselse:px_control=VexRegisterUpdates.VexRegUpdLdAllregsAtEachInsnself.irsb.arch.vex_archinfo["hwcache_info"]["caches"]=ffi.NULLlift_r=pvc.vex_lift(vex_arch,self.irsb.arch.vex_archinfo,self.data+self.bytes_offset,self.irsb.addr,max_inst,max_bytes,self.opt_level,self.traceflags,self.allow_arch_optimizations,strict_block_end,1ifself.collect_data_refselse0,1ifself.load_from_ro_regionselse0,1ifself.const_propelse0,px_control,self.bytes_offset,)log_str=self.get_vex_log()iflift_r==ffi.NULL:raiseLiftingException("libvex: unknown error"iflog_strisNoneelselog_str)else:iflog_strisnotNone:log.debug(log_str)self.irsb._from_c(lift_r,skip_stmts=self.skip_stmts)ifself.irsb.size==0:log.debug("raising lifting exception")raiseLiftingException("libvex: could not decode any instructions @ 0x%x"%self.addr)finally:_libvex_lock.release()self.irsb.arch.vex_archinfo["hwcache_info"]["caches"]=None