{'fraction_non_alphanumeric': 0.015363128491620111, 'fraction_numerical': 0.0, 'mean_word_length': 5.5181818181818185, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
Qualifying reusable functions using symbolic execution

We present an approach to reverse engineering source code modules to abstract their interface and functional specifications. A fine-grained program representation for C programs, the Combined C Graph (CGG), is used to perform dynamic analysis of a module by means of symbolic execution techniques. We focus on problems like pointer variables and expressions containing embedded side-effects and control flows. The role of the user interaction to understand the module behaviour and to deal with invariant assertions is also discussed. The functional specifications are produced in the form of first order logic formulas called preconditions and postconditions.