The problem occurs while GameAssembly.dll fills own strunctures in the “.fptable” section. It calls VirtualProtect every time and VMProtect checks the list of protected regions, so the speed is much slower than without protection. Anyway, this behavior of GameAssembly is very strange because “.fptable” already has writable flag and don’t need to call VirtualProtect.