Instance_of should return false if reference is NULL.
diff --git a/vm/compiler/codegen/armv5te/Codegen.c b/vm/compiler/codegen/armv5te/Codegen.c
index 27bdec6..b4f7c73 100644
--- a/vm/compiler/codegen/armv5te/Codegen.c
+++ b/vm/compiler/codegen/armv5te/Codegen.c
@@ -2148,16 +2148,17 @@
             ClassObject *classPtr =
               (cUnit->method->clazz->pDvmDex->pResClasses[mir->dalvikInsn.vC]);
             assert(classPtr != NULL);
-            loadValue(cUnit, mir->dalvikInsn.vB, r1);  /* Ref */
+            loadValue(cUnit, mir->dalvikInsn.vB, r0);  /* Ref */
             loadConstant(cUnit, r2, (int) classPtr );
-            loadConstant(cUnit, r0, 1);                /* Assume true */
-            newLIR2(cUnit, ARMV5TE_CMP_RI8, r1, 0);    /* Null? */
+            newLIR2(cUnit, ARMV5TE_CMP_RI8, r0, 0);    /* Null? */
+            /* When taken r0 has NULL which can be used for store directly */
             Armv5teLIR *branch1 = newLIR2(cUnit, ARMV5TE_B_COND, 4,
                                           ARM_COND_EQ);
             /* r1 now contains object->clazz */
-            newLIR3(cUnit, ARMV5TE_LDR_RRI5, r1, r1,
+            newLIR3(cUnit, ARMV5TE_LDR_RRI5, r1, r0,
                     offsetof(Object, clazz) >> 2);
             loadConstant(cUnit, r4PC, (int)dvmInstanceofNonTrivial);
+            loadConstant(cUnit, r0, 1);                /* Assume true */
             newLIR2(cUnit, ARMV5TE_CMP_RR, r1, r2);
             Armv5teLIR *branch2 = newLIR2(cUnit, ARMV5TE_B_COND, 2,
                                           ARM_COND_EQ);