[hvgl] Micro-optimize segment access
diff --git a/src/hb-aat-var-hvgl-table.cc b/src/hb-aat-var-hvgl-table.cc
index 1de3455..bd0ae83 100644
--- a/src/hb-aat-var-hvgl-table.cc
+++ b/src/hb-aat-var-hvgl-table.cc
@@ -210,13 +210,12 @@
       break;
 
     // Resolve blend type
+    segment_t segment = &v.arrayZ[(end - 1) * 4];
     for (unsigned i = start; i < end; i++)
     {
       unsigned blendType = blendTypes[i];
-
-      segment_t segment = &v.arrayZ[i * 4];
-      unsigned prev_i = i == start ? end - 1 : i - 1;
-      segment_t prev_segment = &v.arrayZ[prev_i * 4];
+      segment_t prev_segment = segment;
+      segment = &v.arrayZ[i * 4];
 
       switch (blendType)
       {
@@ -267,11 +266,12 @@
       float y0 = (float) first_segment[SEGMENT_POINT_ON_CURVE_Y];
       transform.transform_point (x0, y0);
       draw_session.move_to (x0, y0);
+      segment_t next_segment = &v.arrayZ[start * 4];
       for (unsigned i = start; i < end; i++)
       {
-	const segment_t segment = &v.arrayZ[i * 4];
+	segment_t segment = next_segment;
 	unsigned next_i = i == end - 1 ? start : i + 1;
-	const segment_t next_segment = &v.arrayZ[next_i * 4];
+	next_segment = &v.arrayZ[next_i * 4];
 
 	float x1 = (float) segment[SEGMENT_POINT_OFF_CURVE_X];
 	float y1 = (float) segment[SEGMENT_POINT_OFF_CURVE_Y];