Learning Your Lock: Exploiting Structural Vulnerabilities in Logic Locking