diff --git a/src/main/java/com/android/tools/r8/Version.java b/src/main/java/com/android/tools/r8/Version.java
index 29fce2f..eba3f9e 100644
--- a/src/main/java/com/android/tools/r8/Version.java
+++ b/src/main/java/com/android/tools/r8/Version.java
@@ -11,7 +11,7 @@
 
   // This field is accessed from release scripts using simple pattern matching.
   // Therefore, changing this field could break our release scripts.
-  public static final String LABEL = "v1.0.7";
+  public static final String LABEL = "v1.0.8";
 
   private Version() {
   }
diff --git a/src/main/java/com/android/tools/r8/ir/conversion/JarSourceCode.java b/src/main/java/com/android/tools/r8/ir/conversion/JarSourceCode.java
index 117bc6f..69ecb83 100644
--- a/src/main/java/com/android/tools/r8/ir/conversion/JarSourceCode.java
+++ b/src/main/java/com/android/tools/r8/ir/conversion/JarSourceCode.java
@@ -2372,7 +2372,7 @@
     builder.addMove(valueType(value1.type), stack0, stack2);
     builder.addMove(valueType(value2.type), stack1, stack3);
     builder.addMove(valueType(value3.type), stack2, stack4);
-    builder.addMove(valueType(value3.type), stack3, stack5);
+    builder.addMove(valueType(value4.type), stack3, stack5);
     builder.addMove(valueType(value1.type), stack4, stack0);
     builder.addMove(valueType(value2.type), stack5, stack1);
   }
diff --git a/src/test/java/com/android/tools/r8/jasmin/Regress72758525.java b/src/test/java/com/android/tools/r8/jasmin/Regress72758525.java
new file mode 100644
index 0000000..97331c8
--- /dev/null
+++ b/src/test/java/com/android/tools/r8/jasmin/Regress72758525.java
@@ -0,0 +1,61 @@
+// Copyright (c) 2018, the R8 project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+package com.android.tools.r8.jasmin;
+
+import com.android.tools.r8.jasmin.JasminBuilder.ClassFileVersion;
+import org.junit.Test;
+
+public class Regress72758525 extends JasminTestBase {
+
+  private JasminBuilder buildClass() {
+    JasminBuilder builder = new JasminBuilder(ClassFileVersion.JDK_1_4);
+    JasminBuilder.ClassBuilder clazz = builder.addClass("Test");
+
+    clazz.addDefaultConstructor();
+
+    clazz.addMainMethod(
+        ".limit stack 25",
+        ".limit locals 1",
+        "aload 0",
+        "dup",
+        "lconst_0",
+        "dconst_1",
+        "fconst_0",
+        "lconst_1",
+        "iconst_5",
+        "fconst_1",
+        "dconst_1",
+        "new Test",
+        "dup",
+        "invokespecial Test/<init>()V",
+        "lconst_0",
+        "new java/lang/Object",
+        "dup",
+        "invokespecial java/lang/Object/<init>()V",
+        "iconst_m1",
+        "dup2",
+        "dup2_x2",
+        "L0:",
+        "ineg",
+        "new java/lang/Object",
+        "dup",
+        "invokespecial java/lang/Object/<init>()V",
+        "dup2_x2",
+        "pop2",
+        "pop",
+        "aload 0",
+        "ifnull L0",
+        "i2f",
+        "invokestatic java/lang/Float/isNaN(F)Z",
+        "return");
+    return builder;
+  }
+
+  @Test
+  public void test() throws Exception {
+    JasminBuilder builder = buildClass();
+    runOnArtD8(builder, "Test");
+  }
+}
