Using the two resources you refer to, I come up with:
Select Top 1000000
tblSoftwareUni.softwareName As Software,
tsysIPLocations.IPLocation,
Count(tblSoftware.SoftwareID) As Total
FROM
tblSoftware
INNER JOIN tblAssets ON tblSoftware.AssetID = tblAssets.AssetID
INNER JOIN tblSoftwareUni ON tblSoftware.softID = tblSoftwareUni.SoftID
INNER JOIN tblAssetCustom ON tblAssets.AssetID = tblAssetCustom.AssetID
LEFT JOIN tsysIPLocations ON tsysIPLocations.EndIP >= tblAssets.IPNumeric AND tsysIPLocations.StartIP <= tblAssets.IPNumeric
WHERE
tblSoftwareUni.SoftwarePublisher Like N'%microsoft%'
And tblAssetCustom.State = 1
GROUP BY
tblSoftwareUni.softwareName,
tsysIPLocations.IPLocation
ORDER BY
Software,
Total Desc
You'll have to add filters if you don't want every single piece of Microsoft software, of course.