BinStruct: Binary Structure Recovery Combining Static Analysis and Semantics