# Mutate Constants

This protection is similar to Constants Melt, however it mutates constants using maths expressions and flows them more.

{% code title="Before Obfuscation" %}

```csharp
private void InitializeComponent()
		{
			this.button1 = new Button();
			base.SuspendLayout();
			this.button1.Location = new Point(284, 190);
			this.button1.Name = "button1";
			this.button1.Size = new Size(206, 73);
			this.button1.TabIndex = 0;
			this.button1.Text = "button1";
			this.button1.UseVisualStyleBackColor = true;
			this.button1.Click += this.button1_Click;
			base.AutoScaleDimensions = new SizeF(8f, 16f);
			base.AutoScaleMode = AutoScaleMode.Font;
			base.ClientSize = new Size(800, 450);
			base.Controls.Add(this.button1);
			base.Name = "Form1";
			this.Text = "Form1";
			base.ResumeLayout(false);
		}

		// Token: 0x04000001 RID: 1
		public string lol = "Hi";
```

{% endcode %}

{% code title="After Obfuscation" %}

```csharp
private void InitializeComponent()
		{
			this.button1 = new Button();
			base.SuspendLayout();
			Control control = this.button1;
			int num = 283;
			object obj = sizeof(GCNotificationStatus);
			int num2 = num + obj;
			object obj2 = sizeof(sbyte);
			int num3 = num2 - obj2;
			object obj3 = sizeof(sbyte);
			int num4 = num3 - obj3;
			object obj4 = sizeof(sbyte);
			int x = num4 - obj4;
			int num5 = 188;
			object obj5 = sizeof(char);
			control.Location = new Point(x, num5 + obj5);
			this.button1.Name = "button1";
			Control control2 = this.button1;
			int num6 = 204;
			object obj6 = sizeof(char);
			int width = num6 + obj6;
			int num7 = 71;
			object obj7 = sizeof(char);
			control2.Size = new Size(width, num7 + obj7);
			Control control3 = this.button1;
			int num8 = -2;
			object obj8 = sizeof(char);
			control3.TabIndex = num8 + obj8;
			this.button1.Text = "button1";
			ButtonBase buttonBase = this.button1;
			bool flag = false;
			object obj9 = sizeof(GCNotificationStatus);
			bool flag2 = flag + obj9 != null;
			object obj10 = sizeof(sbyte);
			bool flag3 = flag2 - obj10 != null;
			object obj11 = sizeof(sbyte);
			bool flag4 = flag3 - obj11 != null;
			object obj12 = sizeof(sbyte);
			buttonBase.UseVisualStyleBackColor = (flag4 - obj12 != null);
			this.button1.Click += this.button1_Click;
			base.AutoScaleDimensions = new SizeF(8f, 16f);
			AutoScaleMode autoScaleMode = AutoScaleMode.None;
			object obj13 = sizeof(GCNotificationStatus);
			AutoScaleMode autoScaleMode2 = autoScaleMode + obj13;
			object obj14 = sizeof(sbyte);
			AutoScaleMode autoScaleMode3 = autoScaleMode2 - obj14;
			object obj15 = sizeof(sbyte);
			AutoScaleMode autoScaleMode4 = autoScaleMode3 - obj15;
			object obj16 = sizeof(sbyte);
			base.AutoScaleMode = autoScaleMode4 - obj16;
			int num9 = 799;
			object obj17 = sizeof(GCNotificationStatus);
			int num10 = num9 + obj17;
			object obj18 = sizeof(sbyte);
			int num11 = num10 - obj18;
			object obj19 = sizeof(sbyte);
			int num12 = num11 - obj19;
			object obj20 = sizeof(sbyte);
			int width2 = num12 - obj20;
			int num13 = 448;
			object obj21 = sizeof(char);
			base.ClientSize = new Size(width2, num13 + obj21);
			base.Controls.Add(this.button1);
			base.Name = "Form1";
			this.Text = "Form1";
			bool flag5 = -1 != 0;
			object obj22 = sizeof(GCNotificationStatus);
			bool flag6 = flag5 + obj22 != null;
			object obj23 = sizeof(sbyte);
			bool flag7 = flag6 - obj23 != null;
			object obj24 = sizeof(sbyte);
			bool flag8 = flag7 - obj24 != null;
			object obj25 = sizeof(sbyte);
			base.ResumeLayout(flag8 - obj25 != null);
		}

		// Token: 0x04000001 RID: 1
		public string lol = "Hi";
```

{% endcode %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://trinity.gitbook.io/obfuscator/protections/code-protection/constants/mutate-constants.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
