func (s *WorkingSet) Map(addr, size uint64, mu uc.Unicorn) error { alignment := (addr % pagesize) base_addr := addr - alignment err := mu.MemMap(base_addr, uint64(pagesize)) if err != nil { return err } err = mu.MemWrite(base_addr, GetMem(base_addr, pagesize)) if err != nil { return err } s.StoreInWorkingSet(base_addr, mu) if addr+size > base_addr+pagesize { //sometimes we might need to map 2 pages s.Map(base_addr+pagesize, 1, mu) //map next pages as well } return nil }