It's unmanaged C++ but it also uses the VFP runtime to execute heavily decomposed and obfuscated VFP commands. So theoretically you could splice something back together by hooking VFP _execute to track every possible outcome of every If, for, scan, while etc. IME it's simply too difficult.
The remaining hole relates to encryption. I like Craig Boyd's vfpencryption.fll but it's trivially easy to eavesdrop passage of keys to a dll without even bothering to decompile the app. That's my next project: if encryption is put into private calls buried deep in the app dll with parameters munged using randomly altered C++ routines, eavesdropping isn't a threat because the parameters are always encrypted and you can't call the routine from outside the dll so you're forced to disassemble to figure out what's going on.
Performance is equivalent AFAICS- inefficiency from the obfuscation and decomposition is balanced by better C++ variable and method handling.
"... They ne'er cared for us
yet: suffer us to famish, and their store-houses
crammed with grain; make edicts for usury, to
support usurers; repeal daily any wholesome act
established against the rich, and provide more
piercing statutes daily, to chain up and restrain
the poor. If the wars eat us not up, they will; and
there's all the love they bear us."
-- Shakespeare: Coriolanus, Act 1, scene 1