Machine learning techniques for program representation and comprehension with applications to mobile security