code: def assign(self, dst_addr_ast):
          
  
          if dst_addr_ast.uc_alloc_depth > self._max_alloc_depth:
              raise SimUCManagerAllocationError('Current allocation depth %d is greater than the cap (%d)' % \
                  (dst_addr_ast.uc_alloc_depth, self._max_alloc_depth))
  
          abs_addr = self._region_base + self._pos
          ptr = self.state.solver.BVV(abs_addr, self.state.arch.bits)
          self._pos += self._region_size
  
          self._alloc_depth_map[(abs_addr - self._region_base) // self._region_size] = dst_addr_ast.uc_alloc_depth
  
          l.debug("Assigned new memory region %s", ptr)
          return ptr
docs: Assign a new region for under-constrained symbolic execution.
  
          :param dst_addr_ast: the symbolic AST which address of the new allocated region will be assigned to.
          :return: as ast of memory address that points to a new region