TLDR;1) Find out that the program is computing a recursive function inefficiently (the function has overlapping subproblems, fibonacci-like)2) Get an overview of the recursive function (the parameters changing between the calls)3) Perform memoization from a shellcode in assembly, by patching the function prologue and epilogue, and caching the computed results (without paying attention to the details of how the function works)