(self, stmt)
:param ailment.Assignment stmt:
        :return:
def _ail_handle_Assignment(self, stmt):
        """

        :param ailment.Assignment stmt:
        :return:
        """

        src = self._expr(stmt.src)
        dst = stmt.dst

        if src is None:
            src = MultiValues(offset_to_values={0: {self.state.top(dst.bits)}})

        if isinstance(dst, ailment.Tmp):
            self.state.kill_and_add_definition(Tmp(dst.tmp_idx, dst.size), self._codeloc(), src)
            self.tmps[dst.tmp_idx] = src

        elif isinstance(dst, ailment.Register):
            reg = Register(dst.reg_offset, dst.size)
            self.state.kill_and_add_definition(reg, self._codeloc(), src)

            if dst.reg_offset == self.arch.sp_offset:
                # TODO: Special logic that frees all definitions above the current stack pointer
                pass

        else:
            l.warning('Unsupported type of Assignment dst %s.', type(dst).__name__)
def _ail_handle_Assignment ( self , stmt ) : src = self . _expr ( stmt . src ) dst = stmt . dst if src is None : src = MultiValues ( offset_to_values = { 0 : { self . state . top ( dst . bits ) } } ) if isinstance ( dst , ailment . Tmp ) : self . state . kill_and_add_definition ( Tmp ( dst . tmp_idx , dst . size ) , self . _codeloc ( ) , src ) self . tmps [ dst . tmp_idx ] = src elif isinstance ( dst , ailment . Register ) : reg = Register ( dst . reg_offset , dst . size ) self . state . kill_and_add_definition ( reg , self . _codeloc ( ) , src ) if dst . reg_offset == self . arch . sp_offset : # TODO: Special logic that frees all definitions above the current stack pointer pass else : l . warning ( 'Unsupported type of Assignment dst %s.' , type ( dst ) . __name__ )