Learning to Superoptimize Real-world Programs