14. The system of claim 13 , wherein moving the exploration of multiple paths from within the symbolic executor to within a solver comprises implementing a string solver by purely modifying the source code.
13. A system comprising: means for using a source code-to-source code rewrite to optimize a C++ function comprising one or more loops for symbolic execution, comprising: for a first loop of the one or more loops, the first loop comprising a first branching condition, means for performing semantics preserving source code-to-source code rewrite to convert the first loop to move the first branching condition outside the loop; and for a second loop of the one or more loops, the second loop comprising a second branching condition, means for rewriting the second loop to include a symbolic variable representing a return value and means for replacing the second loop with an equivalent logical formula relating the symbolic variable with inputs of the C++ function; and wherein: the C++ function comprises a C++ library function, the C++ function further comprises one or more conditional branches, using the source code-to-source code rewrite to optimize the C++ function comprises using a hack-in function to access the symbolic executor to move the exploration of the multiple paths from within the symbolic executor to within the solver, and using the source code-to-source code rewrite for the first loop and the second loop moves an exploration of multiple paths from within a symbolic executor to within a solver.