The Anatomy of Hardware Reverse Engineering: An Exploration of Human Factors during Problem Solving