TFYA5EBLWIMWQ4ULT6MK4Y2XWAFJH5JPLS2MGM7IR4ZWLNJHTNXQC
vector<clause_t> decode_clauses(const cFunctionData *restrict attribute,
int n_clauses, const char **clauses) {
const vector<clause_t> &decode_clauses(const cFunctionData *restrict attribute,
int n_clauses, const char **clauses) {
// We assume that each `clauses` pointer is unique
static unordered_map<const char **, vector<clause_t> > memoized_results;
auto result_it = memoized_results.find(clauses);
if (result_it != memoized_results.end())
return result_it->second;