code: def _create_memory_variable(self, action, addr, addrs):
          
  
          variable = None
          if len(addrs) == 1 and len(action.addr.tmp_deps) == 1:
              addr_tmp = list(action.addr.tmp_deps)[0]
              if addr_tmp in self._temp_register_symbols:
                  # it must be a stack variable
                  sort, offset = self._temp_register_symbols[addr_tmp]
                  variable = SimStackVariable(offset, action.size.ast // 8, base=sort, base_addr=addr - offset)
  
          if variable is None:
              variable = SimMemoryVariable(addr, action.size.ast // 8)
  
          return variable
docs: Create a SimStackVariable or SimMemoryVariable based on action objects and its address.
  
          :param SimAction action: The action to work with.
          :param int addr:         The address of the memory variable in creation.
          :param list addrs:       A list of all addresses that the action was effective on.
          :return: