encode data , functions methods and the lot so that linker can distinguish different namespaces . changing names so that linker can make meaning and accurately link against different objects which may have conflicting names
name can also includes semantic meaning such as length of arguments and their sizes etc.