Terrain correction algorithm details

How does sentinel performs a topographic correction? Which algorithm performs the correction?

Thanks!

Please refer to: https://sentinel.esa.int/documents/247904/685211/Sentinel-2_User_Handbook