Move writes after reads

Change-Id: Ia1a5c6ab46d38c493cfb4df1d03f05d98dc31f73
diff --git a/cc/gapii/gles_spy.h b/cc/gapii/gles_spy.h
index e3669ed..486e3b8 100644
--- a/cc/gapii/gles_spy.h
+++ b/cc/gapii/gles_spy.h
@@ -3751,9 +3751,9 @@
             /* case false: */(((l_min_88_a < l_min_88_b) == (false))) ? (l_min_88_b) :
             /* default: */ 0 /* clang-format on */;
         int32_t l_l = l_min_88_result;
-        write(slice(string_length_written, 0, 1), 0, l_l);
         copy(slice(info, (uint64_t)(0), (uint64_t)(l_l)),
              slice(l_s->mInfoLog, (uint64_t)(0), (uint64_t)(l_l)));
+        write(slice(string_length_written, 0, 1), 0, l_l);
     } while (false);
 
     mEncoder->Uint16(141);  // Type ID -- TODO: mEncoder->Id(GL_GET_SHADER_INFO_LOG_ID);
@@ -3784,9 +3784,9 @@
             /* case false: */(((l_min_90_a < l_min_90_b) == (false))) ? (l_min_90_b) :
             /* default: */ 0 /* clang-format on */;
         int32_t l_l = l_min_90_result;
-        write(slice(string_length_written, 0, 1), 0, l_l);
         copy(slice(source, (uint64_t)(0), (uint64_t)(l_l)),
              slice(slice(l_s->mSource), (uint64_t)(0), (uint64_t)(l_l)));
+        write(slice(string_length_written, 0, 1), 0, l_l);
     } while (false);
 
     mEncoder->Uint16(142);  // Type ID -- TODO: mEncoder->Id(GL_GET_SHADER_SOURCE_ID);
@@ -3976,9 +3976,9 @@
             /* case false: */(((l_min_99_a < l_min_99_b) == (false))) ? (l_min_99_b) :
             /* default: */ 0 /* clang-format on */;
         int32_t l_l = l_min_99_result;
-        write(slice(string_length_written, 0, 1), 0, l_l);
         copy(slice(info, (uint64_t)(0), (uint64_t)(l_l)),
              slice(l_p->mInfoLog, (uint64_t)(0), (uint64_t)(l_l)));
+        write(slice(string_length_written, 0, 1), 0, l_l);
     } while (false);
 
     mEncoder->Uint16(152);  // Type ID -- TODO: mEncoder->Id(GL_GET_PROGRAM_INFO_LOG_ID);
@@ -4792,43 +4792,51 @@
                 break;
             }
             case StateVariable::GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS: {
-                write(l_v, 0,
-                      read(slice(values, (uint64_t)(0), (uint64_t)(stateVariableSize(param))), 0));
+                auto l_result =
+                        read(slice(values, (uint64_t)(0), (uint64_t)(stateVariableSize(param))), 0);
+                write(l_v, 0, l_result);
                 break;
             }
             case StateVariable::GL_MAX_CUBE_MAP_TEXTURE_SIZE: {
-                write(l_v, 0,
-                      read(slice(values, (uint64_t)(0), (uint64_t)(stateVariableSize(param))), 0));
+                auto l_result =
+                        read(slice(values, (uint64_t)(0), (uint64_t)(stateVariableSize(param))), 0);
+                write(l_v, 0, l_result);
                 break;
             }
             case StateVariable::GL_MAX_FRAGMENT_UNIFORM_VECTORS: {
-                write(l_v, 0,
-                      read(slice(values, (uint64_t)(0), (uint64_t)(stateVariableSize(param))), 0));
+                auto l_result =
+                        read(slice(values, (uint64_t)(0), (uint64_t)(stateVariableSize(param))), 0);
+                write(l_v, 0, l_result);
                 break;
             }
             case StateVariable::GL_MAX_RENDERBUFFER_SIZE: {
-                write(l_v, 0,
-                      read(slice(values, (uint64_t)(0), (uint64_t)(stateVariableSize(param))), 0));
+                auto l_result =
+                        read(slice(values, (uint64_t)(0), (uint64_t)(stateVariableSize(param))), 0);
+                write(l_v, 0, l_result);
                 break;
             }
             case StateVariable::GL_MAX_TEXTURE_IMAGE_UNITS: {
-                write(l_v, 0,
-                      read(slice(values, (uint64_t)(0), (uint64_t)(stateVariableSize(param))), 0));
+                auto l_result =
+                        read(slice(values, (uint64_t)(0), (uint64_t)(stateVariableSize(param))), 0);
+                write(l_v, 0, l_result);
                 break;
             }
             case StateVariable::GL_MAX_TEXTURE_SIZE: {
-                write(l_v, 0,
-                      read(slice(values, (uint64_t)(0), (uint64_t)(stateVariableSize(param))), 0));
+                auto l_result =
+                        read(slice(values, (uint64_t)(0), (uint64_t)(stateVariableSize(param))), 0);
+                write(l_v, 0, l_result);
                 break;
             }
             case StateVariable::GL_MAX_VARYING_VECTORS: {
-                write(l_v, 0,
-                      read(slice(values, (uint64_t)(0), (uint64_t)(stateVariableSize(param))), 0));
+                auto l_result =
+                        read(slice(values, (uint64_t)(0), (uint64_t)(stateVariableSize(param))), 0);
+                write(l_v, 0, l_result);
                 break;
             }
             case StateVariable::GL_MAX_VERTEX_ATTRIBS: {
-                write(l_v, 0,
-                      read(slice(values, (uint64_t)(0), (uint64_t)(stateVariableSize(param))), 0));
+                auto l_result =
+                        read(slice(values, (uint64_t)(0), (uint64_t)(stateVariableSize(param))), 0);
+                write(l_v, 0, l_result);
                 break;
             }
             case StateVariable::GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS: {
@@ -4837,25 +4845,30 @@
                 break;
             }
             case StateVariable::GL_MAX_VERTEX_UNIFORM_VECTORS: {
-                write(l_v, 0,
-                      read(slice(values, (uint64_t)(0), (uint64_t)(stateVariableSize(param))), 0));
+                auto l_result =
+                        read(slice(values, (uint64_t)(0), (uint64_t)(stateVariableSize(param))), 0);
+                write(l_v, 0, l_result);
                 break;
             }
             case StateVariable::GL_MAX_VIEWPORT_DIMS: {
-                write(l_v, 0,
-                      read(slice(values, (uint64_t)(0), (uint64_t)(stateVariableSize(param))), 0));
-                write(l_v, 1,
-                      read(slice(values, (uint64_t)(0), (uint64_t)(stateVariableSize(param))), 1));
+                auto l_max_width =
+                        read(slice(values, (uint64_t)(0), (uint64_t)(stateVariableSize(param))), 0);
+                auto l_max_height =
+                        read(slice(values, (uint64_t)(0), (uint64_t)(stateVariableSize(param))), 1);
+                write(l_v, 0, l_max_width);
+                write(l_v, 1, l_max_height);
                 break;
             }
             case StateVariable::GL_NUM_COMPRESSED_TEXTURE_FORMATS: {
-                write(l_v, 0,
-                      read(slice(values, (uint64_t)(0), (uint64_t)(stateVariableSize(param))), 0));
+                auto l_result =
+                        read(slice(values, (uint64_t)(0), (uint64_t)(stateVariableSize(param))), 0);
+                write(l_v, 0, l_result);
                 break;
             }
             case StateVariable::GL_NUM_SHADER_BINARY_FORMATS: {
-                write(l_v, 0,
-                      read(slice(values, (uint64_t)(0), (uint64_t)(stateVariableSize(param))), 0));
+                auto l_result =
+                        read(slice(values, (uint64_t)(0), (uint64_t)(stateVariableSize(param))), 0);
+                write(l_v, 0, l_result);
                 break;
             }
             case StateVariable::GL_PACK_ALIGNMENT: {
@@ -4907,8 +4920,9 @@
                 break;
             }
             case StateVariable::GL_SUBPIXEL_BITS: {
-                write(l_v, 0,
-                      read(slice(values, (uint64_t)(0), (uint64_t)(stateVariableSize(param))), 0));
+                auto l_result =
+                        read(slice(values, (uint64_t)(0), (uint64_t)(stateVariableSize(param))), 0);
+                write(l_v, 0, l_result);
                 break;
             }
             case StateVariable::GL_IMPLEMENTATION_COLOR_READ_FORMAT: {
diff --git a/gfxapi/gles/gles.api b/gfxapi/gles/gles.api
index 8c2a13c..322d6bf 100644
--- a/gfxapi/gles/gles.api
+++ b/gfxapi/gles/gles.api
@@ -1978,8 +1978,8 @@
     ctx := GetContext()
     s := ctx.Instances.Shaders[shader]
     l := min(buffer_length, as!s32(strlen(s.InfoLog)))
-    string_length_written[0] = l
     copy(info[0:l], s.InfoLog[0:l])
+    string_length_written[0] = l
 }
 
 ///http://www.khronos.org/opengles/sdk/docs/man/xhtml/glGetShaderSource.xml
@@ -1990,8 +1990,8 @@
     ctx := GetContext()
     s := ctx.Instances.Shaders[shader]
     l := min(buffer_length, as!s32(strlen(s.Source)))
-    string_length_written[0] = l
     copy(source[0:l], as!char[](s.Source)[0:l])
+    string_length_written[0] = l
 }
 
 ///http://www.khronos.org/opengles/sdk/docs/man/xhtml/glReleaseShaderCompiler.xml
@@ -2072,8 +2072,8 @@
     ctx := GetContext()
     p := ctx.Instances.Programs[program]
     l := min(buffer_length, as!s32(strlen(p.InfoLog)))
-    string_length_written[0] = l
     copy(info[0:l], p.InfoLog[0:l])
+    string_length_written[0] = l
 }
 
 ///http://www.khronos.org/opengles/sdk/docs/man/xhtml/glUseProgram.xml
@@ -2470,56 +2470,69 @@
       case GL_GENERATE_MIPMAP_HINT:
         v[0] = as!s32(ctx.GenerateMipmapHint)
       case GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS: {
-        v[0] = ?
-        assert(v[0] > 7)
+        result := ?
+        assert(result > 7)
+        v[0] = result
       }
       case GL_MAX_CUBE_MAP_TEXTURE_SIZE: {
-        v[0] = ?
-        assert(v[0] > 15)
+        result := ?
+        assert(result > 15)
+        v[0] = result
       }
       case GL_MAX_FRAGMENT_UNIFORM_VECTORS: {
-        v[0] = ?
-        assert(v[0] > 15)
+        result := ?
+        assert(result > 15)
+        v[0] = result
       }
       case GL_MAX_RENDERBUFFER_SIZE: {
-        v[0] = ?
-        assert(v[0] > 0)
+        result := ?
+        assert(result > 0)
+        v[0] = result
       }
       case GL_MAX_TEXTURE_IMAGE_UNITS: {
-        v[0] = ?
-        assert(v[0] > 7)
+        result := ?
+        assert(result > 7)
+        v[0] = result
       }
       case GL_MAX_TEXTURE_SIZE: {
-        v[0] = ?
-        assert(v[0] > 63)
+        result := ?
+        assert(result > 63)
+        v[0] = result
       }
       case GL_MAX_VARYING_VECTORS: {
-        v[0] = ?
-        assert(v[0] > 7)
+        result := ?
+        assert(result > 7)
+        v[0] = result
       }
       case GL_MAX_VERTEX_ATTRIBS: {
-        v[0] = ?
-        assert(v[0] > 7)
+        result := ?
+        assert(result > 7)
+        v[0] = result
       }
       case GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS:
         v[0] = ?
       case GL_MAX_VERTEX_UNIFORM_VECTORS: {
-        v[0] = ?
-        assert(v[0] > 127)
+        result := ?
+        assert(result > 127)
+        v[0] = result
       }
       case GL_MAX_VIEWPORT_DIMS: {
-        v[0] = ?  /* max width */
-        assert(v[0] > ctx.Rasterizing.Viewport.Width-1)
-        v[1] = ?  /* max height */
-        assert(v[1] > ctx.Rasterizing.Viewport.Height-1)
+        max_width := ?
+        max_height := ?
+        assert(max_width > ctx.Rasterizing.Viewport.Width-1)
+        assert(max_height > ctx.Rasterizing.Viewport.Height-1)
+        v[0] =  max_width
+        v[1] =  max_height
       }
       case GL_NUM_COMPRESSED_TEXTURE_FORMATS: {
-        v[0] = ?
-        assert(v[0] > -1)
+        result := ?
+        assert(result > -1)
+        v[0] = result
       }
       case GL_NUM_SHADER_BINARY_FORMATS: {
-        v[0] = ?
-        assert(v[0] > -1)
+        result := ?
+        assert(result > -1)
+        v[0] = result
       }
       case GL_PACK_ALIGNMENT:
         v[0] = ctx.PixelStorage[GL_PACK_ALIGNMENT]
@@ -2548,8 +2561,9 @@
       case GL_STENCIL_BITS:
         v[0] = ?
       case GL_SUBPIXEL_BITS: {
-        v[0] = ?
-        assert(v[0] > 3)
+        result := ?
+        assert(result > 3)
+        v[0] = result
       }
       case GL_IMPLEMENTATION_COLOR_READ_FORMAT:
         v[0] = ?
diff --git a/gfxapi/gles/replay_writer.go b/gfxapi/gles/replay_writer.go
index ac56d40..ae95e44 100644
--- a/gfxapi/gles/replay_writer.go
+++ b/gfxapi/gles/replay_writer.go
@@ -3519,8 +3519,8 @@
 		}
 	}() // s32
 	l := min_88_result // s32
-	ϟa.StringLengthWritten.Slice(uint64(0), uint64(1), ϟs).Index(uint64(0), ϟs).replayWrite(l, ϟa, ϟs, ϟd, ϟl, ϟb, ϟp)
 	ϟa.Info.Slice(uint64(int32(0)), uint64(l), ϟs).replayCopy(s.InfoLog.Slice(uint64(int32(0)), uint64(l), ϟs), ϟa, ϟs, ϟd, ϟl, ϟb, ϟp)
+	ϟa.StringLengthWritten.Slice(uint64(0), uint64(1), ϟs).Index(uint64(0), ϟs).replayWrite(l, ϟa, ϟs, ϟd, ϟl, ϟb, ϟp)
 	_, _, _, _, _, _, _, _ = context, GetContext_87_result, ctx, s, min_88_a, min_88_b, min_88_result, l
 	ϟa.observations.ApplyWrites(ϟs.Memory[memory.ApplicationPool])
 	if key, remap := ϟa.Shader.remap(ϟa, ϟs); remap {
@@ -3560,8 +3560,8 @@
 		}
 	}() // s32
 	l := min_90_result // s32
-	ϟa.StringLengthWritten.Slice(uint64(0), uint64(1), ϟs).Index(uint64(0), ϟs).replayWrite(l, ϟa, ϟs, ϟd, ϟl, ϟb, ϟp)
 	ϟa.Source.Slice(uint64(int32(0)), uint64(l), ϟs).replayCopy(MakeCharˢFromString(s.Source, ϟs).Slice(uint64(int32(0)), uint64(l), ϟs), ϟa, ϟs, ϟd, ϟl, ϟb, ϟp)
+	ϟa.StringLengthWritten.Slice(uint64(0), uint64(1), ϟs).Index(uint64(0), ϟs).replayWrite(l, ϟa, ϟs, ϟd, ϟl, ϟb, ϟp)
 	_, _, _, _, _, _, _, _ = context, GetContext_89_result, ctx, s, min_90_a, min_90_b, min_90_result, l
 	ϟa.observations.ApplyWrites(ϟs.Memory[memory.ApplicationPool])
 	if key, remap := ϟa.Shader.remap(ϟa, ϟs); remap {
@@ -3804,8 +3804,8 @@
 		}
 	}() // s32
 	l := min_99_result // s32
-	ϟa.StringLengthWritten.Slice(uint64(0), uint64(1), ϟs).Index(uint64(0), ϟs).replayWrite(l, ϟa, ϟs, ϟd, ϟl, ϟb, ϟp)
 	ϟa.Info.Slice(uint64(int32(0)), uint64(l), ϟs).replayCopy(p.InfoLog.Slice(uint64(int32(0)), uint64(l), ϟs), ϟa, ϟs, ϟd, ϟl, ϟb, ϟp)
+	ϟa.StringLengthWritten.Slice(uint64(0), uint64(1), ϟs).Index(uint64(0), ϟs).replayWrite(l, ϟa, ϟs, ϟd, ϟl, ϟb, ϟp)
 	_, _, _, _, _, _, _, _ = context, GetContext_98_result, ctx, p, min_99_a, min_99_b, min_99_result, l
 	ϟa.observations.ApplyWrites(ϟs.Memory[memory.ApplicationPool])
 	if key, remap := ϟa.Program.remap(ϟa, ϟs); remap {
@@ -4646,32 +4646,57 @@
 	case StateVariable_GL_GENERATE_MIPMAP_HINT:
 		v.Index(uint64(0), ϟs).replayWrite(int32(ctx.GenerateMipmapHint), ϟa, ϟs, ϟd, ϟl, ϟb, ϟp)
 	case StateVariable_GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS:
-		v.Index(uint64(0), ϟs).replayWrite(ϟa.Values.Slice(uint64(int32(0)), uint64(externs{ϟs, ϟd, ϟl}.stateVariableSize(ϟa.Param)), ϟs).Index(uint64(0), ϟs).replayMap(ϟa, ϟs, ϟd, ϟl, ϟb), ϟa, ϟs, ϟd, ϟl, ϟb, ϟp)
+		result := ϟa.Values.Slice(uint64(int32(0)), uint64(externs{ϟs, ϟd, ϟl}.stateVariableSize(ϟa.Param)), ϟs).Index(uint64(0), ϟs).replayMap(ϟa, ϟs, ϟd, ϟl, ϟb) // any
+		v.Index(uint64(0), ϟs).replayWrite(result, ϟa, ϟs, ϟd, ϟl, ϟb, ϟp)
+		_ = result
 	case StateVariable_GL_MAX_CUBE_MAP_TEXTURE_SIZE:
-		v.Index(uint64(0), ϟs).replayWrite(ϟa.Values.Slice(uint64(int32(0)), uint64(externs{ϟs, ϟd, ϟl}.stateVariableSize(ϟa.Param)), ϟs).Index(uint64(0), ϟs).replayMap(ϟa, ϟs, ϟd, ϟl, ϟb), ϟa, ϟs, ϟd, ϟl, ϟb, ϟp)
+		result := ϟa.Values.Slice(uint64(int32(0)), uint64(externs{ϟs, ϟd, ϟl}.stateVariableSize(ϟa.Param)), ϟs).Index(uint64(0), ϟs).replayMap(ϟa, ϟs, ϟd, ϟl, ϟb) // any
+		v.Index(uint64(0), ϟs).replayWrite(result, ϟa, ϟs, ϟd, ϟl, ϟb, ϟp)
+		_ = result
 	case StateVariable_GL_MAX_FRAGMENT_UNIFORM_VECTORS:
-		v.Index(uint64(0), ϟs).replayWrite(ϟa.Values.Slice(uint64(int32(0)), uint64(externs{ϟs, ϟd, ϟl}.stateVariableSize(ϟa.Param)), ϟs).Index(uint64(0), ϟs).replayMap(ϟa, ϟs, ϟd, ϟl, ϟb), ϟa, ϟs, ϟd, ϟl, ϟb, ϟp)
+		result := ϟa.Values.Slice(uint64(int32(0)), uint64(externs{ϟs, ϟd, ϟl}.stateVariableSize(ϟa.Param)), ϟs).Index(uint64(0), ϟs).replayMap(ϟa, ϟs, ϟd, ϟl, ϟb) // any
+		v.Index(uint64(0), ϟs).replayWrite(result, ϟa, ϟs, ϟd, ϟl, ϟb, ϟp)
+		_ = result
 	case StateVariable_GL_MAX_RENDERBUFFER_SIZE:
-		v.Index(uint64(0), ϟs).replayWrite(ϟa.Values.Slice(uint64(int32(0)), uint64(externs{ϟs, ϟd, ϟl}.stateVariableSize(ϟa.Param)), ϟs).Index(uint64(0), ϟs).replayMap(ϟa, ϟs, ϟd, ϟl, ϟb), ϟa, ϟs, ϟd, ϟl, ϟb, ϟp)
+		result := ϟa.Values.Slice(uint64(int32(0)), uint64(externs{ϟs, ϟd, ϟl}.stateVariableSize(ϟa.Param)), ϟs).Index(uint64(0), ϟs).replayMap(ϟa, ϟs, ϟd, ϟl, ϟb) // any
+		v.Index(uint64(0), ϟs).replayWrite(result, ϟa, ϟs, ϟd, ϟl, ϟb, ϟp)
+		_ = result
 	case StateVariable_GL_MAX_TEXTURE_IMAGE_UNITS:
-		v.Index(uint64(0), ϟs).replayWrite(ϟa.Values.Slice(uint64(int32(0)), uint64(externs{ϟs, ϟd, ϟl}.stateVariableSize(ϟa.Param)), ϟs).Index(uint64(0), ϟs).replayMap(ϟa, ϟs, ϟd, ϟl, ϟb), ϟa, ϟs, ϟd, ϟl, ϟb, ϟp)
+		result := ϟa.Values.Slice(uint64(int32(0)), uint64(externs{ϟs, ϟd, ϟl}.stateVariableSize(ϟa.Param)), ϟs).Index(uint64(0), ϟs).replayMap(ϟa, ϟs, ϟd, ϟl, ϟb) // any
+		v.Index(uint64(0), ϟs).replayWrite(result, ϟa, ϟs, ϟd, ϟl, ϟb, ϟp)
+		_ = result
 	case StateVariable_GL_MAX_TEXTURE_SIZE:
-		v.Index(uint64(0), ϟs).replayWrite(ϟa.Values.Slice(uint64(int32(0)), uint64(externs{ϟs, ϟd, ϟl}.stateVariableSize(ϟa.Param)), ϟs).Index(uint64(0), ϟs).replayMap(ϟa, ϟs, ϟd, ϟl, ϟb), ϟa, ϟs, ϟd, ϟl, ϟb, ϟp)
+		result := ϟa.Values.Slice(uint64(int32(0)), uint64(externs{ϟs, ϟd, ϟl}.stateVariableSize(ϟa.Param)), ϟs).Index(uint64(0), ϟs).replayMap(ϟa, ϟs, ϟd, ϟl, ϟb) // any
+		v.Index(uint64(0), ϟs).replayWrite(result, ϟa, ϟs, ϟd, ϟl, ϟb, ϟp)
+		_ = result
 	case StateVariable_GL_MAX_VARYING_VECTORS:
-		v.Index(uint64(0), ϟs).replayWrite(ϟa.Values.Slice(uint64(int32(0)), uint64(externs{ϟs, ϟd, ϟl}.stateVariableSize(ϟa.Param)), ϟs).Index(uint64(0), ϟs).replayMap(ϟa, ϟs, ϟd, ϟl, ϟb), ϟa, ϟs, ϟd, ϟl, ϟb, ϟp)
+		result := ϟa.Values.Slice(uint64(int32(0)), uint64(externs{ϟs, ϟd, ϟl}.stateVariableSize(ϟa.Param)), ϟs).Index(uint64(0), ϟs).replayMap(ϟa, ϟs, ϟd, ϟl, ϟb) // any
+		v.Index(uint64(0), ϟs).replayWrite(result, ϟa, ϟs, ϟd, ϟl, ϟb, ϟp)
+		_ = result
 	case StateVariable_GL_MAX_VERTEX_ATTRIBS:
-		v.Index(uint64(0), ϟs).replayWrite(ϟa.Values.Slice(uint64(int32(0)), uint64(externs{ϟs, ϟd, ϟl}.stateVariableSize(ϟa.Param)), ϟs).Index(uint64(0), ϟs).replayMap(ϟa, ϟs, ϟd, ϟl, ϟb), ϟa, ϟs, ϟd, ϟl, ϟb, ϟp)
+		result := ϟa.Values.Slice(uint64(int32(0)), uint64(externs{ϟs, ϟd, ϟl}.stateVariableSize(ϟa.Param)), ϟs).Index(uint64(0), ϟs).replayMap(ϟa, ϟs, ϟd, ϟl, ϟb) // any
+		v.Index(uint64(0), ϟs).replayWrite(result, ϟa, ϟs, ϟd, ϟl, ϟb, ϟp)
+		_ = result
 	case StateVariable_GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS:
 		v.Index(uint64(0), ϟs).replayWrite(ϟa.Values.Slice(uint64(int32(0)), uint64(externs{ϟs, ϟd, ϟl}.stateVariableSize(ϟa.Param)), ϟs).Index(uint64(0), ϟs).replayMap(ϟa, ϟs, ϟd, ϟl, ϟb), ϟa, ϟs, ϟd, ϟl, ϟb, ϟp)
 	case StateVariable_GL_MAX_VERTEX_UNIFORM_VECTORS:
-		v.Index(uint64(0), ϟs).replayWrite(ϟa.Values.Slice(uint64(int32(0)), uint64(externs{ϟs, ϟd, ϟl}.stateVariableSize(ϟa.Param)), ϟs).Index(uint64(0), ϟs).replayMap(ϟa, ϟs, ϟd, ϟl, ϟb), ϟa, ϟs, ϟd, ϟl, ϟb, ϟp)
+		result := ϟa.Values.Slice(uint64(int32(0)), uint64(externs{ϟs, ϟd, ϟl}.stateVariableSize(ϟa.Param)), ϟs).Index(uint64(0), ϟs).replayMap(ϟa, ϟs, ϟd, ϟl, ϟb) // any
+		v.Index(uint64(0), ϟs).replayWrite(result, ϟa, ϟs, ϟd, ϟl, ϟb, ϟp)
+		_ = result
 	case StateVariable_GL_MAX_VIEWPORT_DIMS:
-		v.Index(uint64(0), ϟs).replayWrite(ϟa.Values.Slice(uint64(int32(0)), uint64(externs{ϟs, ϟd, ϟl}.stateVariableSize(ϟa.Param)), ϟs).Index(uint64(0), ϟs).replayMap(ϟa, ϟs, ϟd, ϟl, ϟb), ϟa, ϟs, ϟd, ϟl, ϟb, ϟp)
-		v.Index(uint64(1), ϟs).replayWrite(ϟa.Values.Slice(uint64(int32(0)), uint64(externs{ϟs, ϟd, ϟl}.stateVariableSize(ϟa.Param)), ϟs).Index(uint64(1), ϟs).replayMap(ϟa, ϟs, ϟd, ϟl, ϟb), ϟa, ϟs, ϟd, ϟl, ϟb, ϟp)
+		max_width := ϟa.Values.Slice(uint64(int32(0)), uint64(externs{ϟs, ϟd, ϟl}.stateVariableSize(ϟa.Param)), ϟs).Index(uint64(0), ϟs).replayMap(ϟa, ϟs, ϟd, ϟl, ϟb)  // any
+		max_height := ϟa.Values.Slice(uint64(int32(0)), uint64(externs{ϟs, ϟd, ϟl}.stateVariableSize(ϟa.Param)), ϟs).Index(uint64(1), ϟs).replayMap(ϟa, ϟs, ϟd, ϟl, ϟb) // any
+		v.Index(uint64(0), ϟs).replayWrite(max_width, ϟa, ϟs, ϟd, ϟl, ϟb, ϟp)
+		v.Index(uint64(1), ϟs).replayWrite(max_height, ϟa, ϟs, ϟd, ϟl, ϟb, ϟp)
+		_, _ = max_width, max_height
 	case StateVariable_GL_NUM_COMPRESSED_TEXTURE_FORMATS:
-		v.Index(uint64(0), ϟs).replayWrite(ϟa.Values.Slice(uint64(int32(0)), uint64(externs{ϟs, ϟd, ϟl}.stateVariableSize(ϟa.Param)), ϟs).Index(uint64(0), ϟs).replayMap(ϟa, ϟs, ϟd, ϟl, ϟb), ϟa, ϟs, ϟd, ϟl, ϟb, ϟp)
+		result := ϟa.Values.Slice(uint64(int32(0)), uint64(externs{ϟs, ϟd, ϟl}.stateVariableSize(ϟa.Param)), ϟs).Index(uint64(0), ϟs).replayMap(ϟa, ϟs, ϟd, ϟl, ϟb) // any
+		v.Index(uint64(0), ϟs).replayWrite(result, ϟa, ϟs, ϟd, ϟl, ϟb, ϟp)
+		_ = result
 	case StateVariable_GL_NUM_SHADER_BINARY_FORMATS:
-		v.Index(uint64(0), ϟs).replayWrite(ϟa.Values.Slice(uint64(int32(0)), uint64(externs{ϟs, ϟd, ϟl}.stateVariableSize(ϟa.Param)), ϟs).Index(uint64(0), ϟs).replayMap(ϟa, ϟs, ϟd, ϟl, ϟb), ϟa, ϟs, ϟd, ϟl, ϟb, ϟp)
+		result := ϟa.Values.Slice(uint64(int32(0)), uint64(externs{ϟs, ϟd, ϟl}.stateVariableSize(ϟa.Param)), ϟs).Index(uint64(0), ϟs).replayMap(ϟa, ϟs, ϟd, ϟl, ϟb) // any
+		v.Index(uint64(0), ϟs).replayWrite(result, ϟa, ϟs, ϟd, ϟl, ϟb, ϟp)
+		_ = result
 	case StateVariable_GL_PACK_ALIGNMENT:
 		v.Index(uint64(0), ϟs).replayWrite(ctx.PixelStorage.Get(PixelStoreParameter_GL_PACK_ALIGNMENT), ϟa, ϟs, ϟd, ϟl, ϟb, ϟp)
 	case StateVariable_GL_UNPACK_ALIGNMENT:
@@ -4693,7 +4718,9 @@
 	case StateVariable_GL_STENCIL_BITS:
 		v.Index(uint64(0), ϟs).replayWrite(ϟa.Values.Slice(uint64(int32(0)), uint64(externs{ϟs, ϟd, ϟl}.stateVariableSize(ϟa.Param)), ϟs).Index(uint64(0), ϟs).replayMap(ϟa, ϟs, ϟd, ϟl, ϟb), ϟa, ϟs, ϟd, ϟl, ϟb, ϟp)
 	case StateVariable_GL_SUBPIXEL_BITS:
-		v.Index(uint64(0), ϟs).replayWrite(ϟa.Values.Slice(uint64(int32(0)), uint64(externs{ϟs, ϟd, ϟl}.stateVariableSize(ϟa.Param)), ϟs).Index(uint64(0), ϟs).replayMap(ϟa, ϟs, ϟd, ϟl, ϟb), ϟa, ϟs, ϟd, ϟl, ϟb, ϟp)
+		result := ϟa.Values.Slice(uint64(int32(0)), uint64(externs{ϟs, ϟd, ϟl}.stateVariableSize(ϟa.Param)), ϟs).Index(uint64(0), ϟs).replayMap(ϟa, ϟs, ϟd, ϟl, ϟb) // any
+		v.Index(uint64(0), ϟs).replayWrite(result, ϟa, ϟs, ϟd, ϟl, ϟb, ϟp)
+		_ = result
 	case StateVariable_GL_IMPLEMENTATION_COLOR_READ_FORMAT:
 		v.Index(uint64(0), ϟs).replayWrite(ϟa.Values.Slice(uint64(int32(0)), uint64(externs{ϟs, ϟd, ϟl}.stateVariableSize(ϟa.Param)), ϟs).Index(uint64(0), ϟs).replayMap(ϟa, ϟs, ϟd, ϟl, ϟb), ϟa, ϟs, ϟd, ϟl, ϟb, ϟp)
 	case StateVariable_GL_IMPLEMENTATION_COLOR_READ_TYPE:
diff --git a/gfxapi/gles/state_mutator.go b/gfxapi/gles/state_mutator.go
index f7e9638..67a1d12 100644
--- a/gfxapi/gles/state_mutator.go
+++ b/gfxapi/gles/state_mutator.go
@@ -2795,8 +2795,8 @@
 		}
 	}() // s32
 	l := min_88_result // s32
-	ϟa.StringLengthWritten.Slice(uint64(0), uint64(1), ϟs).Index(uint64(0), ϟs).Write(l, ϟs)
 	ϟa.Info.Slice(uint64(int32(0)), uint64(l), ϟs).Copy(s.InfoLog.Slice(uint64(int32(0)), uint64(l), ϟs), ϟs, ϟd, ϟl)
+	ϟa.StringLengthWritten.Slice(uint64(0), uint64(1), ϟs).Index(uint64(0), ϟs).Write(l, ϟs)
 	_, _, _, _, _, _, _, _ = context, GetContext_87_result, ctx, s, min_88_a, min_88_b, min_88_result, l
 	ϟa.observations.ApplyWrites(ϟs.Memory[memory.ApplicationPool])
 	return nil
@@ -2824,8 +2824,8 @@
 		}
 	}() // s32
 	l := min_90_result // s32
-	ϟa.StringLengthWritten.Slice(uint64(0), uint64(1), ϟs).Index(uint64(0), ϟs).Write(l, ϟs)
 	ϟa.Source.Slice(uint64(int32(0)), uint64(l), ϟs).Copy(MakeCharˢFromString(s.Source, ϟs).Slice(uint64(int32(0)), uint64(l), ϟs), ϟs, ϟd, ϟl)
+	ϟa.StringLengthWritten.Slice(uint64(0), uint64(1), ϟs).Index(uint64(0), ϟs).Write(l, ϟs)
 	_, _, _, _, _, _, _, _ = context, GetContext_89_result, ctx, s, min_90_a, min_90_b, min_90_result, l
 	ϟa.observations.ApplyWrites(ϟs.Memory[memory.ApplicationPool])
 	return nil
@@ -2972,8 +2972,8 @@
 		}
 	}() // s32
 	l := min_99_result // s32
-	ϟa.StringLengthWritten.Slice(uint64(0), uint64(1), ϟs).Index(uint64(0), ϟs).Write(l, ϟs)
 	ϟa.Info.Slice(uint64(int32(0)), uint64(l), ϟs).Copy(p.InfoLog.Slice(uint64(int32(0)), uint64(l), ϟs), ϟs, ϟd, ϟl)
+	ϟa.StringLengthWritten.Slice(uint64(0), uint64(1), ϟs).Index(uint64(0), ϟs).Write(l, ϟs)
 	_, _, _, _, _, _, _, _ = context, GetContext_98_result, ctx, p, min_99_a, min_99_b, min_99_result, l
 	ϟa.observations.ApplyWrites(ϟs.Memory[memory.ApplicationPool])
 	return nil
@@ -3652,32 +3652,57 @@
 	case StateVariable_GL_GENERATE_MIPMAP_HINT:
 		v.Index(uint64(0), ϟs).Write(int32(ctx.GenerateMipmapHint), ϟs)
 	case StateVariable_GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS:
-		v.Index(uint64(0), ϟs).Write(ϟa.Values.Slice(uint64(int32(0)), uint64(externs{ϟs, ϟd, ϟl}.stateVariableSize(ϟa.Param)), ϟs).Index(uint64(0), ϟs).Read(ϟs, ϟd, ϟl), ϟs)
+		result := ϟa.Values.Slice(uint64(int32(0)), uint64(externs{ϟs, ϟd, ϟl}.stateVariableSize(ϟa.Param)), ϟs).Index(uint64(0), ϟs).Read(ϟs, ϟd, ϟl) // any
+		v.Index(uint64(0), ϟs).Write(result, ϟs)
+		_ = result
 	case StateVariable_GL_MAX_CUBE_MAP_TEXTURE_SIZE:
-		v.Index(uint64(0), ϟs).Write(ϟa.Values.Slice(uint64(int32(0)), uint64(externs{ϟs, ϟd, ϟl}.stateVariableSize(ϟa.Param)), ϟs).Index(uint64(0), ϟs).Read(ϟs, ϟd, ϟl), ϟs)
+		result := ϟa.Values.Slice(uint64(int32(0)), uint64(externs{ϟs, ϟd, ϟl}.stateVariableSize(ϟa.Param)), ϟs).Index(uint64(0), ϟs).Read(ϟs, ϟd, ϟl) // any
+		v.Index(uint64(0), ϟs).Write(result, ϟs)
+		_ = result
 	case StateVariable_GL_MAX_FRAGMENT_UNIFORM_VECTORS:
-		v.Index(uint64(0), ϟs).Write(ϟa.Values.Slice(uint64(int32(0)), uint64(externs{ϟs, ϟd, ϟl}.stateVariableSize(ϟa.Param)), ϟs).Index(uint64(0), ϟs).Read(ϟs, ϟd, ϟl), ϟs)
+		result := ϟa.Values.Slice(uint64(int32(0)), uint64(externs{ϟs, ϟd, ϟl}.stateVariableSize(ϟa.Param)), ϟs).Index(uint64(0), ϟs).Read(ϟs, ϟd, ϟl) // any
+		v.Index(uint64(0), ϟs).Write(result, ϟs)
+		_ = result
 	case StateVariable_GL_MAX_RENDERBUFFER_SIZE:
-		v.Index(uint64(0), ϟs).Write(ϟa.Values.Slice(uint64(int32(0)), uint64(externs{ϟs, ϟd, ϟl}.stateVariableSize(ϟa.Param)), ϟs).Index(uint64(0), ϟs).Read(ϟs, ϟd, ϟl), ϟs)
+		result := ϟa.Values.Slice(uint64(int32(0)), uint64(externs{ϟs, ϟd, ϟl}.stateVariableSize(ϟa.Param)), ϟs).Index(uint64(0), ϟs).Read(ϟs, ϟd, ϟl) // any
+		v.Index(uint64(0), ϟs).Write(result, ϟs)
+		_ = result
 	case StateVariable_GL_MAX_TEXTURE_IMAGE_UNITS:
-		v.Index(uint64(0), ϟs).Write(ϟa.Values.Slice(uint64(int32(0)), uint64(externs{ϟs, ϟd, ϟl}.stateVariableSize(ϟa.Param)), ϟs).Index(uint64(0), ϟs).Read(ϟs, ϟd, ϟl), ϟs)
+		result := ϟa.Values.Slice(uint64(int32(0)), uint64(externs{ϟs, ϟd, ϟl}.stateVariableSize(ϟa.Param)), ϟs).Index(uint64(0), ϟs).Read(ϟs, ϟd, ϟl) // any
+		v.Index(uint64(0), ϟs).Write(result, ϟs)
+		_ = result
 	case StateVariable_GL_MAX_TEXTURE_SIZE:
-		v.Index(uint64(0), ϟs).Write(ϟa.Values.Slice(uint64(int32(0)), uint64(externs{ϟs, ϟd, ϟl}.stateVariableSize(ϟa.Param)), ϟs).Index(uint64(0), ϟs).Read(ϟs, ϟd, ϟl), ϟs)
+		result := ϟa.Values.Slice(uint64(int32(0)), uint64(externs{ϟs, ϟd, ϟl}.stateVariableSize(ϟa.Param)), ϟs).Index(uint64(0), ϟs).Read(ϟs, ϟd, ϟl) // any
+		v.Index(uint64(0), ϟs).Write(result, ϟs)
+		_ = result
 	case StateVariable_GL_MAX_VARYING_VECTORS:
-		v.Index(uint64(0), ϟs).Write(ϟa.Values.Slice(uint64(int32(0)), uint64(externs{ϟs, ϟd, ϟl}.stateVariableSize(ϟa.Param)), ϟs).Index(uint64(0), ϟs).Read(ϟs, ϟd, ϟl), ϟs)
+		result := ϟa.Values.Slice(uint64(int32(0)), uint64(externs{ϟs, ϟd, ϟl}.stateVariableSize(ϟa.Param)), ϟs).Index(uint64(0), ϟs).Read(ϟs, ϟd, ϟl) // any
+		v.Index(uint64(0), ϟs).Write(result, ϟs)
+		_ = result
 	case StateVariable_GL_MAX_VERTEX_ATTRIBS:
-		v.Index(uint64(0), ϟs).Write(ϟa.Values.Slice(uint64(int32(0)), uint64(externs{ϟs, ϟd, ϟl}.stateVariableSize(ϟa.Param)), ϟs).Index(uint64(0), ϟs).Read(ϟs, ϟd, ϟl), ϟs)
+		result := ϟa.Values.Slice(uint64(int32(0)), uint64(externs{ϟs, ϟd, ϟl}.stateVariableSize(ϟa.Param)), ϟs).Index(uint64(0), ϟs).Read(ϟs, ϟd, ϟl) // any
+		v.Index(uint64(0), ϟs).Write(result, ϟs)
+		_ = result
 	case StateVariable_GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS:
 		v.Index(uint64(0), ϟs).Write(ϟa.Values.Slice(uint64(int32(0)), uint64(externs{ϟs, ϟd, ϟl}.stateVariableSize(ϟa.Param)), ϟs).Index(uint64(0), ϟs).Read(ϟs, ϟd, ϟl), ϟs)
 	case StateVariable_GL_MAX_VERTEX_UNIFORM_VECTORS:
-		v.Index(uint64(0), ϟs).Write(ϟa.Values.Slice(uint64(int32(0)), uint64(externs{ϟs, ϟd, ϟl}.stateVariableSize(ϟa.Param)), ϟs).Index(uint64(0), ϟs).Read(ϟs, ϟd, ϟl), ϟs)
+		result := ϟa.Values.Slice(uint64(int32(0)), uint64(externs{ϟs, ϟd, ϟl}.stateVariableSize(ϟa.Param)), ϟs).Index(uint64(0), ϟs).Read(ϟs, ϟd, ϟl) // any
+		v.Index(uint64(0), ϟs).Write(result, ϟs)
+		_ = result
 	case StateVariable_GL_MAX_VIEWPORT_DIMS:
-		v.Index(uint64(0), ϟs).Write(ϟa.Values.Slice(uint64(int32(0)), uint64(externs{ϟs, ϟd, ϟl}.stateVariableSize(ϟa.Param)), ϟs).Index(uint64(0), ϟs).Read(ϟs, ϟd, ϟl), ϟs)
-		v.Index(uint64(1), ϟs).Write(ϟa.Values.Slice(uint64(int32(0)), uint64(externs{ϟs, ϟd, ϟl}.stateVariableSize(ϟa.Param)), ϟs).Index(uint64(1), ϟs).Read(ϟs, ϟd, ϟl), ϟs)
+		max_width := ϟa.Values.Slice(uint64(int32(0)), uint64(externs{ϟs, ϟd, ϟl}.stateVariableSize(ϟa.Param)), ϟs).Index(uint64(0), ϟs).Read(ϟs, ϟd, ϟl)  // any
+		max_height := ϟa.Values.Slice(uint64(int32(0)), uint64(externs{ϟs, ϟd, ϟl}.stateVariableSize(ϟa.Param)), ϟs).Index(uint64(1), ϟs).Read(ϟs, ϟd, ϟl) // any
+		v.Index(uint64(0), ϟs).Write(max_width, ϟs)
+		v.Index(uint64(1), ϟs).Write(max_height, ϟs)
+		_, _ = max_width, max_height
 	case StateVariable_GL_NUM_COMPRESSED_TEXTURE_FORMATS:
-		v.Index(uint64(0), ϟs).Write(ϟa.Values.Slice(uint64(int32(0)), uint64(externs{ϟs, ϟd, ϟl}.stateVariableSize(ϟa.Param)), ϟs).Index(uint64(0), ϟs).Read(ϟs, ϟd, ϟl), ϟs)
+		result := ϟa.Values.Slice(uint64(int32(0)), uint64(externs{ϟs, ϟd, ϟl}.stateVariableSize(ϟa.Param)), ϟs).Index(uint64(0), ϟs).Read(ϟs, ϟd, ϟl) // any
+		v.Index(uint64(0), ϟs).Write(result, ϟs)
+		_ = result
 	case StateVariable_GL_NUM_SHADER_BINARY_FORMATS:
-		v.Index(uint64(0), ϟs).Write(ϟa.Values.Slice(uint64(int32(0)), uint64(externs{ϟs, ϟd, ϟl}.stateVariableSize(ϟa.Param)), ϟs).Index(uint64(0), ϟs).Read(ϟs, ϟd, ϟl), ϟs)
+		result := ϟa.Values.Slice(uint64(int32(0)), uint64(externs{ϟs, ϟd, ϟl}.stateVariableSize(ϟa.Param)), ϟs).Index(uint64(0), ϟs).Read(ϟs, ϟd, ϟl) // any
+		v.Index(uint64(0), ϟs).Write(result, ϟs)
+		_ = result
 	case StateVariable_GL_PACK_ALIGNMENT:
 		v.Index(uint64(0), ϟs).Write(ctx.PixelStorage.Get(PixelStoreParameter_GL_PACK_ALIGNMENT), ϟs)
 	case StateVariable_GL_UNPACK_ALIGNMENT:
@@ -3699,7 +3724,9 @@
 	case StateVariable_GL_STENCIL_BITS:
 		v.Index(uint64(0), ϟs).Write(ϟa.Values.Slice(uint64(int32(0)), uint64(externs{ϟs, ϟd, ϟl}.stateVariableSize(ϟa.Param)), ϟs).Index(uint64(0), ϟs).Read(ϟs, ϟd, ϟl), ϟs)
 	case StateVariable_GL_SUBPIXEL_BITS:
-		v.Index(uint64(0), ϟs).Write(ϟa.Values.Slice(uint64(int32(0)), uint64(externs{ϟs, ϟd, ϟl}.stateVariableSize(ϟa.Param)), ϟs).Index(uint64(0), ϟs).Read(ϟs, ϟd, ϟl), ϟs)
+		result := ϟa.Values.Slice(uint64(int32(0)), uint64(externs{ϟs, ϟd, ϟl}.stateVariableSize(ϟa.Param)), ϟs).Index(uint64(0), ϟs).Read(ϟs, ϟd, ϟl) // any
+		v.Index(uint64(0), ϟs).Write(result, ϟs)
+		_ = result
 	case StateVariable_GL_IMPLEMENTATION_COLOR_READ_FORMAT:
 		v.Index(uint64(0), ϟs).Write(ϟa.Values.Slice(uint64(int32(0)), uint64(externs{ϟs, ϟd, ϟl}.stateVariableSize(ϟa.Param)), ϟs).Index(uint64(0), ϟs).Read(ϟs, ϟd, ϟl), ϟs)
 	case StateVariable_GL_IMPLEMENTATION_COLOR_READ_TYPE:
diff --git a/gfxapi/test/gfxapi_test.api b/gfxapi/test/gfxapi_test.api
index 113629c..30d7b3b 100644
--- a/gfxapi/test/gfxapi_test.api
+++ b/gfxapi/test/gfxapi_test.api
@@ -108,9 +108,9 @@
 ////////////////////////////////////////////////////////////////
 cmd void cmd_void_3_in_arrays(u8* a, u8** b, int* c) {
   buf = make!u8(10)
-	copy(buf, a[5:25]) // only 10 elements should be copied
-	read(b[5:15])
+  read(b[5:15])
 	read(c[5:15])
+	copy(buf, a[5:25]) // only 10 elements should be copied
 }
 
 ////////////////////////////////////////////////////////////////
diff --git a/gfxapi/test/replay_writer.go b/gfxapi/test/replay_writer.go
index 9465f3d..4e06f2d 100644
--- a/gfxapi/test/replay_writer.go
+++ b/gfxapi/test/replay_writer.go
@@ -390,9 +390,9 @@
 	_ = ϟc
 	ϟa.observations.ApplyReads(ϟs.Memory[memory.ApplicationPool])
 	ϟc.Buf = MakeU8ˢ(uint64(10), ϟs)
-	ϟc.Buf.replayCopy(ϟa.A.Slice(uint64(5), uint64(25), ϟs), ϟa, ϟs, ϟd, ϟl, ϟb, ϟp)
 	ϟa.B.Slice(uint64(5), uint64(15), ϟs).onReplayRead(ϟa, ϟs, ϟd, ϟl, ϟb)
 	ϟa.C.Slice(uint64(5), uint64(15), ϟs).onReplayRead(ϟa, ϟs, ϟd, ϟl, ϟb)
+	ϟc.Buf.replayCopy(ϟa.A.Slice(uint64(5), uint64(25), ϟs), ϟa, ϟs, ϟd, ϟl, ϟb, ϟp)
 	ϟa.observations.ApplyWrites(ϟs.Memory[memory.ApplicationPool])
 	ϟb.Push(ϟa.A.value())
 	ϟb.Push(ϟa.B.value())
diff --git a/gfxapi/test/replay_writer_test.go b/gfxapi/test/replay_writer_test.go
index a97eff2..a5cc4f4 100644
--- a/gfxapi/test/replay_writer_test.go
+++ b/gfxapi/test/replay_writer_test.go
@@ -322,22 +322,22 @@
 		},
 		expected: expected{
 			//   ┌────┬────┬────┬────┬────╔════╤════╤════╤════╤════╤════╤════╤════╤════╤════╗
-			// a │0x00│0x01│0x02│0x03│0x04║0x05│0x06│0x07│0x08│0x09│0x0a│0x0b│0x0c│0x0d│0x0e║
-			//   └────┴────┴────┴────┴────╚════╧════╧════╧════╧════╧════╧════╧════╧════╧════╝
-			//   ┌────┬────┬────┬────┬────╔════╤════╤════╤════╤════╤════╤════╤════╤════╤════╗
 			// b │0x10│0x14│0x18│0x1c│0x20║0x24│0x28│0x2c│0x30│0x34│0x38│0x3c│0x40│0x44│0x48║
 			//   └────┴────┴────┴────┴────╚════╧════╧════╧════╧════╧════╧════╧════╧════╧════╝
 			//   ┌────┬────┬────┬────┬────╔════╤════╤════╤════╤════╤════╤════╤════╤════╤════╗
 			// c │0x50│0x58│0x60│0x68│0x70║0x78│0x80│0x88│0x90│0x98│0xa0│0xa8│0xb0│0xb8│0xc0║
 			//   └────┴────┴────┴────┴────╚════╧════╧════╧════╧════╧════╧════╧════╧════╧════╝
-			resources: []binary.ID{aID, bID, cID},
+			//   ┌────┬────┬────┬────┬────╔════╤════╤════╤════╤════╤════╤════╤════╤════╤════╗
+			// a │0x00│0x01│0x02│0x03│0x04║0x05│0x06│0x07│0x08│0x09│0x0a│0x0b│0x0c│0x0d│0x0e║
+			//   └────┴────┴────┴────┴────╚════╧════╧════╧════╧════╧════╧════╧════╧════╧════╝
+			resources: []binary.ID{bID, cID, aID},
 			opcodes: []interface{}{
 				opcode.Label{Value: 0},
-				opcode.PushI{DataType: protocol.TypeVolatilePointer, Value: 0x5},
-				opcode.Resource{ID: 0},
 				opcode.PushI{DataType: protocol.TypeVolatilePointer, Value: 0x24},
-				opcode.Resource{ID: 1},
+				opcode.Resource{ID: 0},
 				opcode.PushI{DataType: protocol.TypeVolatilePointer, Value: 0x78},
+				opcode.Resource{ID: 1},
+				opcode.PushI{DataType: protocol.TypeVolatilePointer, Value: 0x5},
 				opcode.Resource{ID: 2},
 				opcode.PushI{DataType: protocol.TypeVolatilePointer, Value: 0x00},
 				opcode.PushI{DataType: protocol.TypeVolatilePointer, Value: 0x10},