Fixed initializing the 'leave' enable mask on every shader iteration.
diff --git a/src/Shader/PixelRoutine.cpp b/src/Shader/PixelRoutine.cpp
index 2528a9c..42f6189 100644
--- a/src/Shader/PixelRoutine.cpp
+++ b/src/Shader/PixelRoutine.cpp
@@ -3781,6 +3781,11 @@
 		r.enableIndex = 0;
 		r.stackIndex = 0;
 
+		if(shader->containsLeaveInstruction())
+		{
+			r.enableLeave = Int4(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF);
+		}
+
 		bool out[4][4] = {false};
 
 		// Create all call site return blocks up front
diff --git a/src/Shader/PixelRoutine.hpp b/src/Shader/PixelRoutine.hpp
index de8533d..1439467 100644
--- a/src/Shader/PixelRoutine.hpp
+++ b/src/Shader/PixelRoutine.hpp
@@ -66,11 +66,6 @@
 					enableContinue = Int4(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF);
 				}
 
-				if(shader && shader->containsLeaveInstruction())
-				{
-					enableLeave = Int4(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF);
-				}
-
 				occlusion = 0;
 				
 				#if PERF_PROFILE
diff --git a/src/Shader/VertexProgram.cpp b/src/Shader/VertexProgram.cpp
index 6075d1f..75dc5df 100644
--- a/src/Shader/VertexProgram.cpp
+++ b/src/Shader/VertexProgram.cpp
@@ -70,6 +70,11 @@
 		r.enableIndex = 0;
 		r.stackIndex = 0;
 
+		if(shader->containsLeaveInstruction())
+		{
+			r.enableLeave = Int4(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF);
+		}
+
 		// Create all call site return blocks up front
 		for(int i = 0; i < shader->getLength(); i++)
 		{
diff --git a/src/Shader/VertexRoutine.hpp b/src/Shader/VertexRoutine.hpp
index 7c174e8..17c04dd 100644
--- a/src/Shader/VertexRoutine.hpp
+++ b/src/Shader/VertexRoutine.hpp
@@ -41,11 +41,6 @@
 				{
 					enableContinue = Int4(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF);
 				}
-
-				if(shader && shader->containsLeaveInstruction())
-				{
-					enableLeave = Int4(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF);
-				}
 			}
 
 			Pointer<Byte> data;