Practical Recompilation Of Multithreaded Binaries: Choreographing Static And Dynamic Techniques