"Procedures for protection" tab
The "Procedures for protection" tab is used to select the objects to protect. The left part of the window shows the project tree:

- New procedure… – add a new object to the project;
- New folder… – add a folder to the project:

Folders are used to group protected objects in the project tree and also to change protection options (inclusion in compilation, compilation type) for all objects in one folder at once.
- Edit… – edit the parameters of the protected object;
- Delete – remove the object from the list of protected objects;
- Include in compilation – include/exclude the selected object from the list of protected objects. If the selected object is a folder, this option will be applied to all objects in this folder;
- Compilation type – select the compilation type for the selected object (mutation, virtualization, ultra). If the selected object is a folder, this option will be applied to all objects in this folder;
- Move up – move the selected object up in the project tree;
- Move down – move the selected object down in the project tree;
- Expand all folders – expandn all folders in the project tree;
- Collapse all folders – collapse all folders in the project tree.
The right part of the window shows the content of the selected object. If a protected object is selected in the tree, the right part of the window shows its disassembled representation:

- External address – include the selected address to the list of external addresses;
- End of procedure – limit the list of instructions that will be processed during compilation;
- Go to address… – go to the specified address in the protected application;
- Copy – copy the selected data to the clipboard;
- Select all – select all content;
- Find… – find a text fragment in the selected object;
- Find next – find the next text fragment in the selected object.
If a folder is selected in the project tree, the right part of the window shows the list of objects in this folder:

- Open – go to the selected object in the project tree;
- Include in compilation – include/exclude the selected object from the list of protected objects;
- Compilation type – select the compilation type for the selected object;
- Copy – copy the selected data to the clipboard;
- Select all – select all content;
- Find… – find a text fragment in names of objects in this folder;
- Find next – find the next text fragment in names of objects in this folder.
You can drag and drop objects to move them from one folder to another.
Adding/editing an object for protection
Options

- Compilation type – select the compilation type for the object. The correct choice of the protection method against analyzing and cracking each protected object (procedure, function, code section) will ensure the optimal proportion between the protection level and the execution performance. VMProtect allows you to select the following compilation types for each protected object:
- Mutation. The executable code is modified on the level of CPU instructions: existing instructions are modified, all kinds of garbage commands are added, etc. This compilation type provides relatively weak protection for the processed code against being cracked and analyzed and mainly prevents functions from being determined by signature analyzers (PEiD+KANAL, IDA+FLIRT, etc). It makes sense to use this compilation type while protecting library functions because they do not need protection against being cracked or analyzed, as a rule, and it will be enough just to change their signatures so the cracker is unable to automatically determine exactly what libraries the application uses. If mutation is used, the level of protection against being cracked and analyzed is low, but the code execution performance is high.
- Virtualization. The executable code is compiled into the bytecode executed on the virtual machine. This compilation type should be used for all critical sections of the code where the execution performance is important together with protection against analysis. If virtualization is used, the level of protection against being cracked and analyzed is medium and the code execution performance is medium.
- Ultra (mutation + virtualization). The executable code is modified on the level of CPU instructions and then compiled into the bytecode executed on the virtual machine. This compilation type should be used for all code sections where the execution performance is not important. The protection level is high, but the execution performance is low.
- Use project options – if this option is enabled, the current object will use the common protection options. If this option is disabled, all individual protection options can be selected for the current object.
Additional options are available for SenseLock Edition

Lock to key
- Do not use license – if this option is used, during the execution of the code of the current object the system will be checked for a connected SenseLock key without a license system;
- Use license – if this option is used, during execution of the code of the current object the SenseLock key will be checked for a license with the specified number and version.
All procedures
You can see the list of objects that can be included in the project on the "All procedures" tab:

While adding a new procedure, it is possible to simultaneously select several objects in the list of all objects. The selected objects will be added to the project with predefined protection options.
Search
You can use the "Search" tab to find all necessary objects by their names:

You can use the standard wildcard characters in the search string:
- * – any number of character;
- ? – a single character.
While adding a new procedure, it is possible to simultaneously select several objects in the list of found objects. The selected objects will be added to the project with predefined protection options.