Binary Code Fingerprinting with Application to Automated Vulnerability Detection