# Dynamic Control Flow

An extra addition to Control Flow that uses a dynamic switch-base.

{% code title="Before Obfuscation" %}
```csharp
protected override void Dispose(bool disposing)
		{
			bool flag = disposing && this.components != null;
			if (flag)
			{
				this.components.Dispose();
			}
			base.Dispose(disposing);
		}
```
{% endcode %}

{% code title="After Obfuscation " %}
```csharp
protected override void Dispose(bool disposing)
		{
			for (;;)
			{
				IL_01:
				int num = -1776109792;
				for (;;)
				{
					bool flag;
					switch (<Module>.InterfaceTunnelType(num))
					{
					case 1:
						IL_40:
						base.Dispose(disposing);
						num = -1776109793;
						continue;
					case 2:
						if (disposing)
						{
							num = -1776109791;
							continue;
						}
						flag = false;
						goto IL_5A;
					case 3:
						num = -1776109714;
						continue;
					case 4:
						num = -1776109715;
						continue;
					case 5:
						flag = (this.components != null);
						goto IL_5A;
					case 6:
						goto IL_01;
					}
					return;
					IL_5A:
					bool flag2 = flag;
					if (!flag2)
					{
						goto IL_40;
					}
					this.components.Dispose();
					num = -1776109790;
				}
			}
		}
```
{% endcode %}
