Code protection technique that transforms readable JS source into hard-to-reverse-engineer form via variable renaming, string encoding and control flow flattening.