Make arm64-scratch-register less dexer dependent

Make test  626-checker-arm64-scratch-register less dexer dependent

Test: run-test .. --build-with-javac-dx && run-test .. --build-with-javac-dx --build-with-d8
Change-Id: If3d6103938c085a798655bee3c338103bed2efff
diff --git a/test/626-checker-arm64-scratch-register/smali/Smali.smali b/test/626-checker-arm64-scratch-register/smali/Smali.smali
new file mode 100644
index 0000000..e6943cf
--- /dev/null
+++ b/test/626-checker-arm64-scratch-register/smali/Smali.smali
@@ -0,0 +1,2119 @@
+# Copyright (C) 2017 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+.class public LSmali;
+.super Ljava/lang/Object;
+.field b00:Z
+.field b01:Z
+.field b02:Z
+.field b03:Z
+.field b04:Z
+.field b05:Z
+.field b06:Z
+.field b07:Z
+.field b08:Z
+.field b09:Z
+.field b10:Z
+.field b11:Z
+.field b12:Z
+.field b13:Z
+.field b14:Z
+.field b15:Z
+.field b16:Z
+.field b17:Z
+.field b18:Z
+.field b19:Z
+.field b20:Z
+.field b21:Z
+.field b22:Z
+.field b23:Z
+.field b24:Z
+.field b25:Z
+.field b26:Z
+.field b27:Z
+.field b28:Z
+.field b29:Z
+.field b30:Z
+.field b31:Z
+.field b32:Z
+.field b33:Z
+.field b34:Z
+.field b35:Z
+.field b36:Z
+
+.field conditionA:Z
+.field conditionB:Z
+.field conditionC:Z
+
+.method public constructor <init>()V
+    .registers 1
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+    return-void
+.end method
+
+##  CHECK-START-ARM64: void Smali.test() register (after)
+##  CHECK: begin_block
+##  CHECK:   name "B0"
+##  CHECK:       <<This:l\d+>>  ParameterValue
+##  CHECK: end_block
+##  CHECK: begin_block
+##  CHECK:   successors "<<ThenBlock:B\d+>>" "<<ElseBlock:B\d+>>"
+##  CHECK:       <<CondB:z\d+>>  InstanceFieldGet [<<This>>] field_name:Smali.conditionB
+##  CHECK:                       If [<<CondB>>]
+##  CHECK:  end_block
+##  CHECK: begin_block
+##  CHECK:   name "<<ElseBlock>>"
+##  CHECK:                      ParallelMove moves:[40(sp)->d0,24(sp)->32(sp),28(sp)->36(sp),d0->d3,d3->d4,d2->d5,d4->d6,d5->d7,d6->d18,d7->d19,d18->d20,d19->d21,d20->d22,d21->d23,d22->d10,d23->d11,16(sp)->24(sp),20(sp)->28(sp),d10->d14,d11->d12,d12->d13,d13->d1,d14->d2,32(sp)->16(sp),36(sp)->20(sp)]
+##  CHECK: end_block
+
+##  CHECK-START-ARM64: void Smali.test() disassembly (after)
+##  CHECK: begin_block
+##  CHECK:   name "B0"
+##  CHECK:       <<This:l\d+>>  ParameterValue
+##  CHECK: end_block
+##  CHECK: begin_block
+##  CHECK:   successors "<<ThenBlock:B\d+>>" "<<ElseBlock:B\d+>>"
+##  CHECK:       <<CondB:z\d+>>  InstanceFieldGet [<<This>>] field_name:Smali.conditionB
+##  CHECK:                       If [<<CondB>>]
+##  CHECK:  end_block
+##  CHECK: begin_block
+##  CHECK:   name "<<ElseBlock>>"
+##  CHECK:                      ParallelMove moves:[invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid]
+##  CHECK:                        fmov d31, d2
+##  CHECK:                        ldr s2, [sp, #36]
+##  CHECK:                        ldr w16, [sp, #16]
+##  CHECK:                        str w16, [sp, #36]
+##  CHECK:                        str s14, [sp, #16]
+##  CHECK:                        ldr s14, [sp, #28]
+##  CHECK:                        str s1, [sp, #28]
+##  CHECK:                        ldr s1, [sp, #32]
+##  CHECK:                        str s31, [sp, #32]
+##  CHECK:                        ldr s31, [sp, #20]
+##  CHECK:                        str s31, [sp, #40]
+##  CHECK:                        str s12, [sp, #20]
+##  CHECK:                        fmov d12, d11
+##  CHECK:                        fmov d11, d10
+##  CHECK:                        fmov d10, d23
+##  CHECK:                        fmov d23, d22
+##  CHECK:                        fmov d22, d21
+##  CHECK:                        fmov d21, d20
+##  CHECK:                        fmov d20, d19
+##  CHECK:                        fmov d19, d18
+##  CHECK:                        fmov d18, d7
+##  CHECK:                        fmov d7, d6
+##  CHECK:                        fmov d6, d5
+##  CHECK:                        fmov d5, d4
+##  CHECK:                        fmov d4, d3
+##  CHECK:                        fmov d3, d13
+##  CHECK:                        ldr s13, [sp, #24]
+##  CHECK:                        str s3, [sp, #24]
+##  CHECK:                        ldr s3, pc+{{\d+}} (addr {{0x[0-9a-f]+}}) (100)
+##  CHECK: end_block
+.method public test()V
+    .registers 45
+
+    const-string v39, ""
+
+    move-object/from16 v0, p0
+
+    iget-boolean v0, v0, LSmali;->b17:Z
+
+    move/from16 v42, v0
+
+    if-eqz v42, :cond_367
+
+    const/16 v19, 0x0
+
+    :goto_c
+    move-object/from16 v0, p0
+
+    iget-boolean v0, v0, LSmali;->b16:Z
+
+    move/from16 v42, v0
+
+    if-eqz v42, :cond_36b
+
+    const/16 v18, 0x0
+
+    :goto_16
+    move-object/from16 v0, p0
+
+    iget-boolean v0, v0, LSmali;->b18:Z
+
+    move/from16 v42, v0
+
+    if-eqz v42, :cond_36f
+
+    const/16 v20, 0x0
+
+    :goto_20
+    move-object/from16 v0, p0
+
+    iget-boolean v0, v0, LSmali;->b19:Z
+
+    move/from16 v42, v0
+
+    if-eqz v42, :cond_373
+
+    const/16 v21, 0x0
+
+    :goto_2a
+    move-object/from16 v0, p0
+
+    iget-boolean v0, v0, LSmali;->b20:Z
+
+    move/from16 v42, v0
+
+    if-eqz v42, :cond_377
+
+    const/16 v22, 0x0
+
+    :goto_34
+    move-object/from16 v0, p0
+
+    iget-boolean v0, v0, LSmali;->b21:Z
+
+    move/from16 v42, v0
+
+    if-eqz v42, :cond_37b
+
+    const/16 v23, 0x0
+
+    :goto_3e
+    move-object/from16 v0, p0
+
+    iget-boolean v0, v0, LSmali;->b15:Z
+
+    move/from16 v42, v0
+
+    if-eqz v42, :cond_37f
+
+    const/16 v17, 0x0
+
+    :goto_48
+    move-object/from16 v0, p0
+
+    iget-boolean v0, v0, LSmali;->b00:Z
+
+    move/from16 v42, v0
+
+    if-eqz v42, :cond_383
+
+    const/4 v2, 0x0
+
+    :goto_51
+    move-object/from16 v0, p0
+
+    iget-boolean v0, v0, LSmali;->b22:Z
+
+    move/from16 v42, v0
+
+    if-eqz v42, :cond_387
+
+    const/16 v24, 0x0
+
+    :goto_5b
+    move-object/from16 v0, p0
+
+    iget-boolean v0, v0, LSmali;->b23:Z
+
+    move/from16 v42, v0
+
+    if-eqz v42, :cond_38b
+
+    const/16 v25, 0x0
+
+    :goto_65
+    move-object/from16 v0, p0
+
+    iget-boolean v0, v0, LSmali;->b24:Z
+
+    move/from16 v42, v0
+
+    if-eqz v42, :cond_38f
+
+    const/16 v26, 0x0
+
+    :goto_6f
+    move-object/from16 v0, p0
+
+    iget-boolean v0, v0, LSmali;->b25:Z
+
+    move/from16 v42, v0
+
+    if-eqz v42, :cond_393
+
+    const/16 v27, 0x0
+
+    :goto_79
+    move-object/from16 v0, p0
+
+    iget-boolean v0, v0, LSmali;->b26:Z
+
+    move/from16 v42, v0
+
+    if-eqz v42, :cond_397
+
+    const/16 v28, 0x0
+
+    :goto_83
+    move-object/from16 v0, p0
+
+    iget-boolean v0, v0, LSmali;->b27:Z
+
+    move/from16 v42, v0
+
+    if-eqz v42, :cond_39b
+
+    const/16 v29, 0x0
+
+    :goto_8d
+    move-object/from16 v0, p0
+
+    iget-boolean v0, v0, LSmali;->b29:Z
+
+    move/from16 v42, v0
+
+    if-eqz v42, :cond_39f
+
+    const/16 v31, 0x0
+
+    :goto_97
+    move-object/from16 v0, p0
+
+    iget-boolean v0, v0, LSmali;->b28:Z
+
+    move/from16 v42, v0
+
+    if-eqz v42, :cond_3a3
+
+    const/16 v30, 0x0
+
+    :goto_a1
+    move-object/from16 v0, p0
+
+    iget-boolean v0, v0, LSmali;->b01:Z
+
+    move/from16 v42, v0
+
+    if-eqz v42, :cond_3a7
+
+    const/4 v3, 0x0
+
+    :goto_aa
+    move-object/from16 v0, p0
+
+    iget-boolean v0, v0, LSmali;->b02:Z
+
+    move/from16 v42, v0
+
+    if-eqz v42, :cond_3ab
+
+    const/4 v4, 0x0
+
+    :goto_b3
+    move-object/from16 v0, p0
+
+    iget-boolean v0, v0, LSmali;->b03:Z
+
+    move/from16 v42, v0
+
+    if-eqz v42, :cond_3af
+
+    const/4 v5, 0x0
+
+    :goto_bc
+    move-object/from16 v0, p0
+
+    iget-boolean v0, v0, LSmali;->b04:Z
+
+    move/from16 v42, v0
+
+    if-eqz v42, :cond_3b3
+
+    const/4 v6, 0x0
+
+    :goto_c5
+    move-object/from16 v0, p0
+
+    iget-boolean v0, v0, LSmali;->b05:Z
+
+    move/from16 v42, v0
+
+    if-eqz v42, :cond_3b7
+
+    const/4 v7, 0x0
+
+    :goto_ce
+    move-object/from16 v0, p0
+
+    iget-boolean v0, v0, LSmali;->b07:Z
+
+    move/from16 v42, v0
+
+    if-eqz v42, :cond_3bb
+
+    const/4 v9, 0x0
+
+    :goto_d7
+    move-object/from16 v0, p0
+
+    iget-boolean v0, v0, LSmali;->b06:Z
+
+    move/from16 v42, v0
+
+    if-eqz v42, :cond_3bf
+
+    const/4 v8, 0x0
+
+    :goto_e0
+    move-object/from16 v0, p0
+
+    iget-boolean v0, v0, LSmali;->b30:Z
+
+    move/from16 v42, v0
+
+    if-eqz v42, :cond_3c3
+
+    const/16 v32, 0x0
+
+    :goto_ea
+    move-object/from16 v0, p0
+
+    iget-boolean v0, v0, LSmali;->b31:Z
+
+    move/from16 v42, v0
+
+    if-eqz v42, :cond_3c7
+
+    const/16 v33, 0x0
+
+    :goto_f4
+    move-object/from16 v0, p0
+
+    iget-boolean v0, v0, LSmali;->b32:Z
+
+    move/from16 v42, v0
+
+    if-eqz v42, :cond_3cb
+
+    const/16 v34, 0x0
+
+    :goto_fe
+    move-object/from16 v0, p0
+
+    iget-boolean v0, v0, LSmali;->b33:Z
+
+    move/from16 v42, v0
+
+    if-eqz v42, :cond_3cf
+
+    const/16 v35, 0x0
+
+    :goto_108
+    move-object/from16 v0, p0
+
+    iget-boolean v0, v0, LSmali;->b34:Z
+
+    move/from16 v42, v0
+
+    if-eqz v42, :cond_3d3
+
+    const/16 v36, 0x0
+
+    :goto_112
+    move-object/from16 v0, p0
+
+    iget-boolean v0, v0, LSmali;->b36:Z
+
+    move/from16 v42, v0
+
+    if-eqz v42, :cond_3d7
+
+    const/16 v38, 0x0
+
+    :goto_11c
+    move-object/from16 v0, p0
+
+    iget-boolean v0, v0, LSmali;->b35:Z
+
+    move/from16 v42, v0
+
+    if-eqz v42, :cond_3db
+
+    const/16 v37, 0x0
+
+    :goto_126
+    move-object/from16 v0, p0
+
+    iget-boolean v0, v0, LSmali;->b08:Z
+
+    move/from16 v42, v0
+
+    if-eqz v42, :cond_3df
+
+    const/4 v10, 0x0
+
+    :goto_12f
+    move-object/from16 v0, p0
+
+    iget-boolean v0, v0, LSmali;->b09:Z
+
+    move/from16 v42, v0
+
+    if-eqz v42, :cond_3e3
+
+    const/4 v11, 0x0
+
+    :goto_138
+    move-object/from16 v0, p0
+
+    iget-boolean v0, v0, LSmali;->b10:Z
+
+    move/from16 v42, v0
+
+    if-eqz v42, :cond_3e7
+
+    const/4 v12, 0x0
+
+    :goto_141
+    move-object/from16 v0, p0
+
+    iget-boolean v0, v0, LSmali;->b11:Z
+
+    move/from16 v42, v0
+
+    if-eqz v42, :cond_3eb
+
+    const/4 v13, 0x0
+
+    :goto_14a
+    move-object/from16 v0, p0
+
+    iget-boolean v0, v0, LSmali;->b12:Z
+
+    move/from16 v42, v0
+
+    if-eqz v42, :cond_3ef
+
+    const/4 v14, 0x0
+
+    :goto_153
+    move-object/from16 v0, p0
+
+    iget-boolean v0, v0, LSmali;->b14:Z
+
+    move/from16 v42, v0
+
+    if-eqz v42, :cond_3f3
+
+    const/16 v16, 0x0
+
+    :goto_15d
+    move-object/from16 v0, p0
+
+    iget-boolean v0, v0, LSmali;->b13:Z
+
+    move/from16 v42, v0
+
+    if-eqz v42, :cond_3f7
+
+    const/4 v15, 0x0
+
+    :goto_166
+    move-object/from16 v0, p0
+
+    iget-boolean v0, v0, LSmali;->conditionA:Z
+
+    move/from16 v42, v0
+
+    if-eqz v42, :cond_202
+
+    const/high16 v42, 0x447a0000    # 1000.0f
+
+    div-float v18, v18, v42
+
+    const/high16 v42, 0x447a0000    # 1000.0f
+
+    div-float v19, v19, v42
+
+    const/high16 v42, 0x447a0000    # 1000.0f
+
+    div-float v20, v20, v42
+
+    const/high16 v42, 0x447a0000    # 1000.0f
+
+    div-float v21, v21, v42
+
+    const/high16 v42, 0x447a0000    # 1000.0f
+
+    div-float v22, v22, v42
+
+    const/high16 v42, 0x447a0000    # 1000.0f
+
+    div-float v23, v23, v42
+
+    const/high16 v42, 0x447a0000    # 1000.0f
+
+    div-float v17, v17, v42
+
+    const/high16 v42, 0x447a0000    # 1000.0f
+
+    div-float v10, v10, v42
+
+    const/high16 v42, 0x447a0000    # 1000.0f
+
+    div-float v11, v11, v42
+
+    const/high16 v42, 0x447a0000    # 1000.0f
+
+    div-float v12, v12, v42
+
+    const/high16 v42, 0x447a0000    # 1000.0f
+
+    div-float v13, v13, v42
+
+    const/high16 v42, 0x447a0000    # 1000.0f
+
+    div-float v14, v14, v42
+
+    const/high16 v42, 0x447a0000    # 1000.0f
+
+    div-float v32, v32, v42
+
+    const/high16 v42, 0x447a0000    # 1000.0f
+
+    div-float v33, v33, v42
+
+    const/high16 v42, 0x447a0000    # 1000.0f
+
+    div-float v34, v34, v42
+
+    const/high16 v42, 0x447a0000    # 1000.0f
+
+    div-float v35, v35, v42
+
+    const/high16 v42, 0x447a0000    # 1000.0f
+
+    div-float v36, v36, v42
+
+    const/high16 v42, 0x447a0000    # 1000.0f
+
+    div-float v3, v3, v42
+
+    const/high16 v42, 0x447a0000    # 1000.0f
+
+    div-float v4, v4, v42
+
+    const/high16 v42, 0x447a0000    # 1000.0f
+
+    div-float v5, v5, v42
+
+    const/high16 v42, 0x447a0000    # 1000.0f
+
+    div-float v6, v6, v42
+
+    const/high16 v42, 0x447a0000    # 1000.0f
+
+    div-float v7, v7, v42
+
+    const/high16 v42, 0x447a0000    # 1000.0f
+
+    div-float v25, v25, v42
+
+    const/high16 v42, 0x447a0000    # 1000.0f
+
+    div-float v26, v26, v42
+
+    const/high16 v42, 0x447a0000    # 1000.0f
+
+    div-float v27, v27, v42
+
+    const/high16 v42, 0x447a0000    # 1000.0f
+
+    div-float v28, v28, v42
+
+    const/high16 v42, 0x447a0000    # 1000.0f
+
+    div-float v29, v29, v42
+
+    const/high16 v42, 0x447a0000    # 1000.0f
+
+    div-float v24, v24, v42
+
+    const/high16 v42, 0x447a0000    # 1000.0f
+
+    div-float v2, v2, v42
+
+    const/high16 v42, 0x447a0000    # 1000.0f
+
+    div-float v16, v16, v42
+
+    const/high16 v42, 0x447a0000    # 1000.0f
+
+    div-float v15, v15, v42
+
+    const/high16 v42, 0x447a0000    # 1000.0f
+
+    div-float v38, v38, v42
+
+    const/high16 v42, 0x447a0000    # 1000.0f
+
+    div-float v37, v37, v42
+
+    const/high16 v42, 0x447a0000    # 1000.0f
+
+    div-float v9, v9, v42
+
+    const/high16 v42, 0x447a0000    # 1000.0f
+
+    div-float v8, v8, v42
+
+    const/high16 v42, 0x447a0000    # 1000.0f
+
+    div-float v31, v31, v42
+
+    const/high16 v42, 0x447a0000    # 1000.0f
+
+    div-float v30, v30, v42
+
+    :cond_202
+    move-object/from16 v0, p0
+
+    iget-boolean v0, v0, LSmali;->conditionB:Z
+
+    move/from16 v42, v0
+
+    if-eqz v42, :cond_29e
+
+    const/high16 v42, 0x42c80000    # 100.0f
+
+    div-float v18, v18, v42
+
+    const/high16 v42, 0x42c80000    # 100.0f
+
+    div-float v19, v19, v42
+
+    const/high16 v42, 0x42c80000    # 100.0f
+
+    div-float v20, v20, v42
+
+    const/high16 v42, 0x42c80000    # 100.0f
+
+    div-float v21, v21, v42
+
+    const/high16 v42, 0x42c80000    # 100.0f
+
+    div-float v22, v22, v42
+
+    const/high16 v42, 0x42c80000    # 100.0f
+
+    div-float v23, v23, v42
+
+    const/high16 v42, 0x42c80000    # 100.0f
+
+    div-float v17, v17, v42
+
+    const/high16 v42, 0x42c80000    # 100.0f
+
+    div-float v10, v10, v42
+
+    const/high16 v42, 0x42c80000    # 100.0f
+
+    div-float v11, v11, v42
+
+    const/high16 v42, 0x42c80000    # 100.0f
+
+    div-float v12, v12, v42
+
+    const/high16 v42, 0x42c80000    # 100.0f
+
+    div-float v13, v13, v42
+
+    const/high16 v42, 0x42c80000    # 100.0f
+
+    div-float v14, v14, v42
+
+    const/high16 v42, 0x42c80000    # 100.0f
+
+    div-float v32, v32, v42
+
+    const/high16 v42, 0x42c80000    # 100.0f
+
+    div-float v33, v33, v42
+
+    const/high16 v42, 0x42c80000    # 100.0f
+
+    div-float v34, v34, v42
+
+    const/high16 v42, 0x42c80000    # 100.0f
+
+    div-float v35, v35, v42
+
+    const/high16 v42, 0x42c80000    # 100.0f
+
+    div-float v36, v36, v42
+
+    const/high16 v42, 0x42c80000    # 100.0f
+
+    div-float v3, v3, v42
+
+    const/high16 v42, 0x42c80000    # 100.0f
+
+    div-float v4, v4, v42
+
+    const/high16 v42, 0x42c80000    # 100.0f
+
+    div-float v5, v5, v42
+
+    const/high16 v42, 0x42c80000    # 100.0f
+
+    div-float v6, v6, v42
+
+    const/high16 v42, 0x42c80000    # 100.0f
+
+    div-float v7, v7, v42
+
+    const/high16 v42, 0x42c80000    # 100.0f
+
+    div-float v25, v25, v42
+
+    const/high16 v42, 0x42c80000    # 100.0f
+
+    div-float v26, v26, v42
+
+    const/high16 v42, 0x42c80000    # 100.0f
+
+    div-float v27, v27, v42
+
+    const/high16 v42, 0x42c80000    # 100.0f
+
+    div-float v28, v28, v42
+
+    const/high16 v42, 0x42c80000    # 100.0f
+
+    div-float v29, v29, v42
+
+    const/high16 v42, 0x42c80000    # 100.0f
+
+    div-float v24, v24, v42
+
+    const/high16 v42, 0x42c80000    # 100.0f
+
+    div-float v2, v2, v42
+
+    const/high16 v42, 0x42c80000    # 100.0f
+
+    div-float v16, v16, v42
+
+    const/high16 v42, 0x42c80000    # 100.0f
+
+    div-float v15, v15, v42
+
+    const/high16 v42, 0x42c80000    # 100.0f
+
+    div-float v38, v38, v42
+
+    const/high16 v42, 0x42c80000    # 100.0f
+
+    div-float v37, v37, v42
+
+    const/high16 v42, 0x42c80000    # 100.0f
+
+    div-float v9, v9, v42
+
+    const/high16 v42, 0x42c80000    # 100.0f
+
+    div-float v8, v8, v42
+
+    const/high16 v42, 0x42c80000    # 100.0f
+
+    div-float v31, v31, v42
+
+    const/high16 v42, 0x42c80000    # 100.0f
+
+    div-float v30, v30, v42
+
+    :cond_29e
+    move-object/from16 v0, p0
+
+    iget-boolean v0, v0, LSmali;->conditionC:Z
+
+    move/from16 v42, v0
+
+    if-eqz v42, :cond_33a
+
+    const/high16 v42, 0x41400000    # 12.0f
+
+    div-float v18, v18, v42
+
+    const/high16 v42, 0x41400000    # 12.0f
+
+    div-float v19, v19, v42
+
+    const/high16 v42, 0x41400000    # 12.0f
+
+    div-float v20, v20, v42
+
+    const/high16 v42, 0x41400000    # 12.0f
+
+    div-float v21, v21, v42
+
+    const/high16 v42, 0x41400000    # 12.0f
+
+    div-float v22, v22, v42
+
+    const/high16 v42, 0x41400000    # 12.0f
+
+    div-float v23, v23, v42
+
+    const/high16 v42, 0x41400000    # 12.0f
+
+    div-float v17, v17, v42
+
+    const/high16 v42, 0x41400000    # 12.0f
+
+    div-float v10, v10, v42
+
+    const/high16 v42, 0x41400000    # 12.0f
+
+    div-float v11, v11, v42
+
+    const/high16 v42, 0x41400000    # 12.0f
+
+    div-float v12, v12, v42
+
+    const/high16 v42, 0x41400000    # 12.0f
+
+    div-float v13, v13, v42
+
+    const/high16 v42, 0x41400000    # 12.0f
+
+    div-float v14, v14, v42
+
+    const/high16 v42, 0x41400000    # 12.0f
+
+    div-float v32, v32, v42
+
+    const/high16 v42, 0x41400000    # 12.0f
+
+    div-float v33, v33, v42
+
+    const/high16 v42, 0x41400000    # 12.0f
+
+    div-float v34, v34, v42
+
+    const/high16 v42, 0x41400000    # 12.0f
+
+    div-float v35, v35, v42
+
+    const/high16 v42, 0x41400000    # 12.0f
+
+    div-float v36, v36, v42
+
+    const/high16 v42, 0x41400000    # 12.0f
+
+    div-float v3, v3, v42
+
+    const/high16 v42, 0x41400000    # 12.0f
+
+    div-float v4, v4, v42
+
+    const/high16 v42, 0x41400000    # 12.0f
+
+    div-float v5, v5, v42
+
+    const/high16 v42, 0x41400000    # 12.0f
+
+    div-float v6, v6, v42
+
+    const/high16 v42, 0x41400000    # 12.0f
+
+    div-float v7, v7, v42
+
+    const/high16 v42, 0x41400000    # 12.0f
+
+    div-float v25, v25, v42
+
+    const/high16 v42, 0x41400000    # 12.0f
+
+    div-float v26, v26, v42
+
+    const/high16 v42, 0x41400000    # 12.0f
+
+    div-float v27, v27, v42
+
+    const/high16 v42, 0x41400000    # 12.0f
+
+    div-float v28, v28, v42
+
+    const/high16 v42, 0x41400000    # 12.0f
+
+    div-float v29, v29, v42
+
+    const/high16 v42, 0x41400000    # 12.0f
+
+    div-float v24, v24, v42
+
+    const/high16 v42, 0x41400000    # 12.0f
+
+    div-float v2, v2, v42
+
+    const/high16 v42, 0x41400000    # 12.0f
+
+    div-float v16, v16, v42
+
+    const/high16 v42, 0x41400000    # 12.0f
+
+    div-float v15, v15, v42
+
+    const/high16 v42, 0x41400000    # 12.0f
+
+    div-float v38, v38, v42
+
+    const/high16 v42, 0x41400000    # 12.0f
+
+    div-float v37, v37, v42
+
+    const/high16 v42, 0x41400000    # 12.0f
+
+    div-float v9, v9, v42
+
+    const/high16 v42, 0x41400000    # 12.0f
+
+    div-float v8, v8, v42
+
+    const/high16 v42, 0x41400000    # 12.0f
+
+    div-float v31, v31, v42
+
+    const/high16 v42, 0x41400000    # 12.0f
+
+    div-float v30, v30, v42
+
+    :cond_33a
+    const/16 v41, 0x0
+
+    const/high16 v42, 0x42c80000    # 100.0f
+
+    mul-float v42, v42, v41
+
+    invoke-static/range {v42 .. v42}, Ljava/lang/Math;->round(F)I
+
+    move-result v42
+
+    move/from16 v0, v42
+
+    int-to-float v0, v0
+
+    move/from16 v42, v0
+
+    const/high16 v43, 0x42c80000    # 100.0f
+
+    div-float v41, v42, v43
+
+    new-instance v42, Ljava/lang/StringBuilder;
+
+    invoke-direct/range {v42 .. v42}, Ljava/lang/StringBuilder;-><init>()V
+
+    move-object/from16 v0, v42
+
+    move/from16 v1, v41
+
+    invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(F)Ljava/lang/StringBuilder;
+
+    move-result-object v42
+
+    move-object/from16 v0, v42
+
+    move-object/from16 v1, v39
+
+    invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
+
+    move-result-object v42
+
+    invoke-virtual/range {v42 .. v42}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
+
+    move-result-object v40
+
+    return-void
+
+    :cond_367
+    const/high16 v19, 0x3f800000    # 1.0f
+
+    goto/16 :goto_c
+
+    :cond_36b
+    const/high16 v18, 0x3f800000    # 1.0f
+
+    goto/16 :goto_16
+
+    :cond_36f
+    const/high16 v20, 0x3f800000    # 1.0f
+
+    goto/16 :goto_20
+
+    :cond_373
+    const/high16 v21, 0x3f800000    # 1.0f
+
+    goto/16 :goto_2a
+
+    :cond_377
+    const/high16 v22, 0x3f800000    # 1.0f
+
+    goto/16 :goto_34
+
+    :cond_37b
+    const/high16 v23, 0x3f800000    # 1.0f
+
+    goto/16 :goto_3e
+
+    :cond_37f
+    const/high16 v17, 0x3f800000    # 1.0f
+
+    goto/16 :goto_48
+
+    :cond_383
+    const/high16 v2, 0x3f800000    # 1.0f
+
+    goto/16 :goto_51
+
+    :cond_387
+    const/high16 v24, 0x3f800000    # 1.0f
+
+    goto/16 :goto_5b
+
+    :cond_38b
+    const/high16 v25, 0x3f800000    # 1.0f
+
+    goto/16 :goto_65
+
+    :cond_38f
+    const/high16 v26, 0x3f800000    # 1.0f
+
+    goto/16 :goto_6f
+
+    :cond_393
+    const/high16 v27, 0x3f800000    # 1.0f
+
+    goto/16 :goto_79
+
+    :cond_397
+    const/high16 v28, 0x3f800000    # 1.0f
+
+    goto/16 :goto_83
+
+    :cond_39b
+    const/high16 v29, 0x3f800000    # 1.0f
+
+    goto/16 :goto_8d
+
+    :cond_39f
+    const/high16 v31, 0x3f800000    # 1.0f
+
+    goto/16 :goto_97
+
+    :cond_3a3
+    const/high16 v30, 0x3f800000    # 1.0f
+
+    goto/16 :goto_a1
+
+    :cond_3a7
+    const/high16 v3, 0x3f800000    # 1.0f
+
+    goto/16 :goto_aa
+
+    :cond_3ab
+    const/high16 v4, 0x3f800000    # 1.0f
+
+    goto/16 :goto_b3
+
+    :cond_3af
+    const/high16 v5, 0x3f800000    # 1.0f
+
+    goto/16 :goto_bc
+
+    :cond_3b3
+    const/high16 v6, 0x3f800000    # 1.0f
+
+    goto/16 :goto_c5
+
+    :cond_3b7
+    const/high16 v7, 0x3f800000    # 1.0f
+
+    goto/16 :goto_ce
+
+    :cond_3bb
+    const/high16 v9, 0x3f800000    # 1.0f
+
+    goto/16 :goto_d7
+
+    :cond_3bf
+    const/high16 v8, 0x3f800000    # 1.0f
+
+    goto/16 :goto_e0
+
+    :cond_3c3
+    const/high16 v32, 0x3f800000    # 1.0f
+
+    goto/16 :goto_ea
+
+    :cond_3c7
+    const/high16 v33, 0x3f800000    # 1.0f
+
+    goto/16 :goto_f4
+
+    :cond_3cb
+    const/high16 v34, 0x3f800000    # 1.0f
+
+    goto/16 :goto_fe
+
+    :cond_3cf
+    const/high16 v35, 0x3f800000    # 1.0f
+
+    goto/16 :goto_108
+
+    :cond_3d3
+    const/high16 v36, 0x3f800000    # 1.0f
+
+    goto/16 :goto_112
+
+    :cond_3d7
+    const/high16 v38, 0x3f800000    # 1.0f
+
+    goto/16 :goto_11c
+
+    :cond_3db
+    const/high16 v37, 0x3f800000    # 1.0f
+
+    goto/16 :goto_126
+
+    :cond_3df
+    const/high16 v10, 0x3f800000    # 1.0f
+
+    goto/16 :goto_12f
+
+    :cond_3e3
+    const/high16 v11, 0x3f800000    # 1.0f
+
+    goto/16 :goto_138
+
+    :cond_3e7
+    const/high16 v12, 0x3f800000    # 1.0f
+
+    goto/16 :goto_141
+
+    :cond_3eb
+    const/high16 v13, 0x3f800000    # 1.0f
+
+    goto/16 :goto_14a
+
+    :cond_3ef
+    const/high16 v14, 0x3f800000    # 1.0f
+
+    goto/16 :goto_153
+
+    :cond_3f3
+    const/high16 v16, 0x3f800000    # 1.0f
+
+    goto/16 :goto_15d
+
+    :cond_3f7
+    const/high16 v15, 0x3f800000    # 1.0f
+
+    goto/16 :goto_166
+.end method
+
+##  CHECK-START-ARM64: void Smali.testD8() register (after)
+##  CHECK: begin_block
+##  CHECK:   name "B0"
+##  CHECK:       <<This:l\d+>>  ParameterValue
+##  CHECK: end_block
+
+##  CHECK: begin_block
+##  CHECK:  successors "<<ThenBlockA:B\d+>>" "<<ElseBlockA:B\d+>>"
+##  CHECK:       <<CondA:z\d+>>  InstanceFieldGet [<<This>>] field_name:Smali.conditionA
+##  CHECK:                       If [<<CondA>>]
+##  CHECK: end_block
+
+##  CHECK: begin_block
+##  CHECK:   name "<<ThenBlockA>>"
+##  CHECK: end_block
+##  CHECK: begin_block
+##  CHECK:   name "<<ElseBlockA>>"
+##  CHECK:                       ParallelMove moves:[d2->d0,40(sp)->d17,d20->d26,d19->d27,d27->d1,d26->d2,d14->d20,d13->d19,d17->d14,d0->d13]
+##  CHECK: end_block
+
+##  CHECK: begin_block
+##  CHECK:  successors "<<ThenBlockB:B\d+>>" "<<ElseBlockB:B\d+>>"
+##  CHECK:       <<CondB:z\d+>>  InstanceFieldGet [<<This>>] field_name:Smali.conditionB
+##  CHECK:                       If [<<CondB>>]
+##  CHECK: end_block
+
+##  CHECK: begin_block
+##  CHECK:   name "<<ThenBlockB>>"
+##  CHECK: end_block
+##  CHECK: begin_block
+##  CHECK:   name "<<ElseBlockB>>"
+##  CHECK:                       ParallelMove moves:[#100->d13,16(sp)->d1,20(sp)->d2,28(sp)->d19,24(sp)->d20,36(sp)->d14,32(sp)->16(sp),d1->20(sp),d2->24(sp),d20->28(sp),d19->32(sp),d14->36(sp),d13->40(sp)]
+##  CHECK: end_block
+
+##  CHECK-START-ARM64: void Smali.testD8() disassembly (after)
+##  CHECK: begin_block
+##  CHECK:   name "B0"
+##  CHECK:       <<This:l\d+>>  ParameterValue
+##  CHECK: end_block
+
+##  CHECK: begin_block
+##  CHECK:  successors "<<ThenBlockA:B\d+>>" "<<ElseBlockA:B\d+>>"
+##  CHECK:       <<CondA:z\d+>>  InstanceFieldGet [<<This>>] field_name:Smali.conditionA
+##  CHECK:                       If [<<CondA>>]
+##  CHECK: end_block
+
+##  CHECK: begin_block
+##  CHECK:   name "<<ThenBlockA>>"
+##  CHECK: end_block
+##  CHECK: begin_block
+##  CHECK:   name "<<ElseBlockA>>"
+##  CHECK: end_block
+
+##  CHECK: begin_block
+##  CHECK:  successors "<<ThenBlockB:B\d+>>" "<<ElseBlockB:B\d+>>"
+##  CHECK:       <<CondB:z\d+>>  InstanceFieldGet [<<This>>] field_name:Smali.conditionB
+##  CHECK:                       If [<<CondB>>]
+##  CHECK: end_block
+
+##  CHECK: begin_block
+##  CHECK:   name "<<ThenBlockB>>"
+##  CHECK: end_block
+##  CHECK: begin_block
+##  CHECK:   name "<<ElseBlockB>>"
+##  CHECK:                       ParallelMove moves:[invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid]
+##  CHECK:                         ldr w16, [sp, #32]
+##  CHECK:                         str s19, [sp, #32]
+##  CHECK:                         ldr s19, [sp, #28]
+##  CHECK:                         str s20, [sp, #28]
+##  CHECK:                         ldr s20, [sp, #24]
+##  CHECK:                         str s2, [sp, #24]
+##  CHECK:                         ldr s2, [sp, #20]
+##  CHECK:                         str s1, [sp, #20]
+##  CHECK:                         ldr s1, [sp, #16]
+##  CHECK:                         str w16, [sp, #16]
+##  CHECK:                         fmov d31, d14
+##  CHECK:                         ldr s14, [sp, #36]
+##  CHECK:                         str s31, [sp, #36]
+##  CHECK:                         str s13, [sp, #40]
+##  CHECK:                         ldr s13, pc+580 (addr 0x61c) (100)
+##  CHECK: end_block
+.method public testD8()V
+    .registers 47
+
+    move-object/from16 v0, p0
+
+    const-string v1, ""
+
+    iget-boolean v2, v0, LSmali;->b17:Z
+
+    if-eqz v2, :cond_a
+
+    const/4 v2, 0x0
+
+    goto :goto_c
+
+    :cond_a
+    const/high16 v2, 0x3f800000    # 1.0f
+
+    :goto_c
+    iget-boolean v5, v0, LSmali;->b16:Z
+
+    if-eqz v5, :cond_12
+
+    const/4 v5, 0x0
+
+    goto :goto_14
+
+    :cond_12
+    const/high16 v5, 0x3f800000    # 1.0f
+
+    :goto_14
+    iget-boolean v6, v0, LSmali;->b18:Z
+
+    if-eqz v6, :cond_1a
+
+    const/4 v6, 0x0
+
+    goto :goto_1c
+
+    :cond_1a
+    const/high16 v6, 0x3f800000    # 1.0f
+
+    :goto_1c
+    iget-boolean v7, v0, LSmali;->b19:Z
+
+    if-eqz v7, :cond_22
+
+    const/4 v7, 0x0
+
+    goto :goto_24
+
+    :cond_22
+    const/high16 v7, 0x3f800000    # 1.0f
+
+    :goto_24
+    iget-boolean v8, v0, LSmali;->b20:Z
+
+    if-eqz v8, :cond_2a
+
+    const/4 v8, 0x0
+
+    goto :goto_2c
+
+    :cond_2a
+    const/high16 v8, 0x3f800000    # 1.0f
+
+    :goto_2c
+    iget-boolean v9, v0, LSmali;->b21:Z
+
+    if-eqz v9, :cond_32
+
+    const/4 v9, 0x0
+
+    goto :goto_34
+
+    :cond_32
+    const/high16 v9, 0x3f800000    # 1.0f
+
+    :goto_34
+    iget-boolean v10, v0, LSmali;->b15:Z
+
+    if-eqz v10, :cond_3a
+
+    const/4 v10, 0x0
+
+    goto :goto_3c
+
+    :cond_3a
+    const/high16 v10, 0x3f800000    # 1.0f
+
+    :goto_3c
+    iget-boolean v11, v0, LSmali;->b00:Z
+
+    if-eqz v11, :cond_42
+
+    const/4 v11, 0x0
+
+    goto :goto_44
+
+    :cond_42
+    const/high16 v11, 0x3f800000    # 1.0f
+
+    :goto_44
+    iget-boolean v12, v0, LSmali;->b22:Z
+
+    if-eqz v12, :cond_4a
+
+    const/4 v12, 0x0
+
+    goto :goto_4c
+
+    :cond_4a
+    const/high16 v12, 0x3f800000    # 1.0f
+
+    :goto_4c
+    iget-boolean v13, v0, LSmali;->b23:Z
+
+    if-eqz v13, :cond_52
+
+    const/4 v13, 0x0
+
+    goto :goto_54
+
+    :cond_52
+    const/high16 v13, 0x3f800000    # 1.0f
+
+    :goto_54
+    iget-boolean v14, v0, LSmali;->b24:Z
+
+    if-eqz v14, :cond_5a
+
+    const/4 v14, 0x0
+
+    goto :goto_5c
+
+    :cond_5a
+    const/high16 v14, 0x3f800000    # 1.0f
+
+    :goto_5c
+    iget-boolean v15, v0, LSmali;->b25:Z
+
+    if-eqz v15, :cond_62
+
+    const/4 v15, 0x0
+
+    goto :goto_64
+
+    :cond_62
+    const/high16 v15, 0x3f800000    # 1.0f
+
+    :goto_64
+    iget-boolean v3, v0, LSmali;->b26:Z
+
+    if-eqz v3, :cond_6a
+
+    const/4 v3, 0x0
+
+    goto :goto_6c
+
+    :cond_6a
+    const/high16 v3, 0x3f800000    # 1.0f
+
+    :goto_6c
+    iget-boolean v4, v0, LSmali;->b27:Z
+
+    if-eqz v4, :cond_72
+
+    const/4 v4, 0x0
+
+    goto :goto_74
+
+    :cond_72
+    const/high16 v4, 0x3f800000    # 1.0f
+
+    :goto_74
+    move-object/from16 v18, v1
+
+    iget-boolean v1, v0, LSmali;->b29:Z
+
+    if-eqz v1, :cond_7c
+
+    const/4 v1, 0x0
+
+    goto :goto_7e
+
+    :cond_7c
+    const/high16 v1, 0x3f800000    # 1.0f
+
+    :goto_7e
+    move/from16 v19, v1
+
+    iget-boolean v1, v0, LSmali;->b28:Z
+
+    if-eqz v1, :cond_86
+
+    const/4 v1, 0x0
+
+    goto :goto_88
+
+    :cond_86
+    const/high16 v1, 0x3f800000    # 1.0f
+
+    :goto_88
+    move/from16 v20, v1
+
+    iget-boolean v1, v0, LSmali;->b01:Z
+
+    if-eqz v1, :cond_90
+
+    const/4 v1, 0x0
+
+    goto :goto_92
+
+    :cond_90
+    const/high16 v1, 0x3f800000    # 1.0f
+
+    :goto_92
+    move/from16 v21, v11
+
+    iget-boolean v11, v0, LSmali;->b02:Z
+
+    if-eqz v11, :cond_9a
+
+    const/4 v11, 0x0
+
+    goto :goto_9c
+
+    :cond_9a
+    const/high16 v11, 0x3f800000    # 1.0f
+
+    :goto_9c
+    move/from16 v22, v12
+
+    iget-boolean v12, v0, LSmali;->b03:Z
+
+    if-eqz v12, :cond_a4
+
+    const/4 v12, 0x0
+
+    goto :goto_a6
+
+    :cond_a4
+    const/high16 v12, 0x3f800000    # 1.0f
+
+    :goto_a6
+    move/from16 v23, v4
+
+    iget-boolean v4, v0, LSmali;->b04:Z
+
+    if-eqz v4, :cond_ae
+
+    const/4 v4, 0x0
+
+    goto :goto_b0
+
+    :cond_ae
+    const/high16 v4, 0x3f800000    # 1.0f
+
+    :goto_b0
+    move/from16 v24, v3
+
+    iget-boolean v3, v0, LSmali;->b05:Z
+
+    if-eqz v3, :cond_b8
+
+    const/4 v3, 0x0
+
+    goto :goto_ba
+
+    :cond_b8
+    const/high16 v3, 0x3f800000    # 1.0f
+
+    :goto_ba
+    move/from16 v25, v15
+
+    iget-boolean v15, v0, LSmali;->b07:Z
+
+    if-eqz v15, :cond_c2
+
+    const/4 v15, 0x0
+
+    goto :goto_c4
+
+    :cond_c2
+    const/high16 v15, 0x3f800000    # 1.0f
+
+    :goto_c4
+    move/from16 v26, v15
+
+    iget-boolean v15, v0, LSmali;->b06:Z
+
+    if-eqz v15, :cond_cc
+
+    const/4 v15, 0x0
+
+    goto :goto_ce
+
+    :cond_cc
+    const/high16 v15, 0x3f800000    # 1.0f
+
+    :goto_ce
+    move/from16 v27, v15
+
+    iget-boolean v15, v0, LSmali;->b30:Z
+
+    if-eqz v15, :cond_d6
+
+    const/4 v15, 0x0
+
+    goto :goto_d8
+
+    :cond_d6
+    const/high16 v15, 0x3f800000    # 1.0f
+
+    :goto_d8
+    move/from16 v28, v14
+
+    iget-boolean v14, v0, LSmali;->b31:Z
+
+    if-eqz v14, :cond_e0
+
+    const/4 v14, 0x0
+
+    goto :goto_e2
+
+    :cond_e0
+    const/high16 v14, 0x3f800000    # 1.0f
+
+    :goto_e2
+    move/from16 v29, v13
+
+    iget-boolean v13, v0, LSmali;->b32:Z
+
+    if-eqz v13, :cond_ea
+
+    const/4 v13, 0x0
+
+    goto :goto_ec
+
+    :cond_ea
+    const/high16 v13, 0x3f800000    # 1.0f
+
+    :goto_ec
+    move/from16 v30, v3
+
+    iget-boolean v3, v0, LSmali;->b33:Z
+
+    if-eqz v3, :cond_f4
+
+    const/4 v3, 0x0
+
+    goto :goto_f6
+
+    :cond_f4
+    const/high16 v3, 0x3f800000    # 1.0f
+
+    :goto_f6
+    move/from16 v31, v4
+
+    iget-boolean v4, v0, LSmali;->b34:Z
+
+    if-eqz v4, :cond_fe
+
+    const/4 v4, 0x0
+
+    goto :goto_100
+
+    :cond_fe
+    const/high16 v4, 0x3f800000    # 1.0f
+
+    :goto_100
+    move/from16 v32, v12
+
+    iget-boolean v12, v0, LSmali;->b36:Z
+
+    if-eqz v12, :cond_108
+
+    const/4 v12, 0x0
+
+    goto :goto_10a
+
+    :cond_108
+    const/high16 v12, 0x3f800000    # 1.0f
+
+    :goto_10a
+    move/from16 v33, v12
+
+    iget-boolean v12, v0, LSmali;->b35:Z
+
+    if-eqz v12, :cond_112
+
+    const/4 v12, 0x0
+
+    goto :goto_114
+
+    :cond_112
+    const/high16 v12, 0x3f800000    # 1.0f
+
+    :goto_114
+    move/from16 v34, v12
+
+    iget-boolean v12, v0, LSmali;->b08:Z
+
+    if-eqz v12, :cond_11c
+
+    const/4 v12, 0x0
+
+    goto :goto_11e
+
+    :cond_11c
+    const/high16 v12, 0x3f800000    # 1.0f
+
+    :goto_11e
+    move/from16 v35, v11
+
+    iget-boolean v11, v0, LSmali;->b09:Z
+
+    if-eqz v11, :cond_126
+
+    const/4 v11, 0x0
+
+    goto :goto_128
+
+    :cond_126
+    const/high16 v11, 0x3f800000    # 1.0f
+
+    :goto_128
+    move/from16 v36, v1
+
+    iget-boolean v1, v0, LSmali;->b10:Z
+
+    if-eqz v1, :cond_130
+
+    const/4 v1, 0x0
+
+    goto :goto_132
+
+    :cond_130
+    const/high16 v1, 0x3f800000    # 1.0f
+
+    :goto_132
+    move/from16 v37, v4
+
+    iget-boolean v4, v0, LSmali;->b11:Z
+
+    if-eqz v4, :cond_13a
+
+    const/4 v4, 0x0
+
+    goto :goto_13c
+
+    :cond_13a
+    const/high16 v4, 0x3f800000    # 1.0f
+
+    :goto_13c
+    move/from16 v38, v3
+
+    iget-boolean v3, v0, LSmali;->b12:Z
+
+    if-eqz v3, :cond_144
+
+    const/4 v3, 0x0
+
+    goto :goto_146
+
+    :cond_144
+    const/high16 v3, 0x3f800000    # 1.0f
+
+    :goto_146
+    move/from16 v39, v13
+
+    iget-boolean v13, v0, LSmali;->b14:Z
+
+    if-eqz v13, :cond_14e
+
+    const/4 v13, 0x0
+
+    goto :goto_150
+
+    :cond_14e
+    const/high16 v13, 0x3f800000    # 1.0f
+
+    :goto_150
+    move/from16 v40, v13
+
+    iget-boolean v13, v0, LSmali;->b13:Z
+
+    if-eqz v13, :cond_159
+
+    const/16 v16, 0x0
+
+    goto :goto_15b
+
+    :cond_159
+    const/high16 v16, 0x3f800000    # 1.0f
+
+    :goto_15b
+    move/from16 v13, v16
+
+    move/from16 v41, v13
+
+    iget-boolean v13, v0, LSmali;->conditionA:Z
+
+    if-eqz v13, :cond_1a2
+
+    const/high16 v13, 0x447a0000    # 1000.0f
+
+    div-float/2addr v5, v13
+
+    div-float/2addr v2, v13
+
+    div-float/2addr v6, v13
+
+    div-float/2addr v7, v13
+
+    div-float/2addr v8, v13
+
+    div-float/2addr v9, v13
+
+    div-float/2addr v10, v13
+
+    div-float/2addr v12, v13
+
+    div-float/2addr v11, v13
+
+    div-float/2addr v1, v13
+
+    div-float/2addr v4, v13
+
+    div-float/2addr v3, v13
+
+    div-float/2addr v15, v13
+
+    div-float/2addr v14, v13
+
+    div-float v16, v39, v13
+
+    div-float v38, v38, v13
+
+    div-float v37, v37, v13
+
+    div-float v36, v36, v13
+
+    div-float v35, v35, v13
+
+    div-float v32, v32, v13
+
+    div-float v31, v31, v13
+
+    div-float v30, v30, v13
+
+    div-float v29, v29, v13
+
+    div-float v28, v28, v13
+
+    div-float v25, v25, v13
+
+    div-float v24, v24, v13
+
+    div-float v23, v23, v13
+
+    div-float v22, v22, v13
+
+    div-float v21, v21, v13
+
+    div-float v39, v40, v13
+
+    div-float v40, v41, v13
+
+    div-float v33, v33, v13
+
+    div-float v34, v34, v13
+
+    div-float v26, v26, v13
+
+    div-float v27, v27, v13
+
+    div-float v19, v19, v13
+
+    div-float v13, v20, v13
+
+    goto :goto_1aa
+
+    :cond_1a2
+    move/from16 v13, v20
+
+    move/from16 v16, v39
+
+    move/from16 v39, v40
+
+    move/from16 v40, v41
+
+    :goto_1aa
+    move/from16 v42, v13
+
+    iget-boolean v13, v0, LSmali;->conditionB:Z
+
+    const/high16 v20, 0x42c80000    # 100.0f
+
+    if-eqz v13, :cond_1fd
+
+    div-float v5, v5, v20
+
+    div-float v2, v2, v20
+
+    div-float v6, v6, v20
+
+    div-float v7, v7, v20
+
+    div-float v8, v8, v20
+
+    div-float v9, v9, v20
+
+    div-float v10, v10, v20
+
+    div-float v12, v12, v20
+
+    div-float v11, v11, v20
+
+    div-float v1, v1, v20
+
+    div-float v4, v4, v20
+
+    div-float v3, v3, v20
+
+    div-float v15, v15, v20
+
+    div-float v14, v14, v20
+
+    div-float v16, v16, v20
+
+    div-float v38, v38, v20
+
+    div-float v37, v37, v20
+
+    div-float v36, v36, v20
+
+    div-float v35, v35, v20
+
+    div-float v32, v32, v20
+
+    div-float v31, v31, v20
+
+    div-float v30, v30, v20
+
+    div-float v29, v29, v20
+
+    div-float v28, v28, v20
+
+    div-float v25, v25, v20
+
+    div-float v24, v24, v20
+
+    div-float v23, v23, v20
+
+    div-float v22, v22, v20
+
+    div-float v21, v21, v20
+
+    div-float v39, v39, v20
+
+    div-float v40, v40, v20
+
+    div-float v33, v33, v20
+
+    div-float v34, v34, v20
+
+    div-float v26, v26, v20
+
+    div-float v27, v27, v20
+
+    div-float v19, v19, v20
+
+    div-float v13, v42, v20
+
+    goto :goto_1ff
+
+    :cond_1fd
+    move/from16 v13, v42
+
+    :goto_1ff
+    move/from16 v43, v13
+
+    iget-boolean v13, v0, LSmali;->conditionC:Z
+
+    if-eqz v13, :cond_244
+
+    const/high16 v13, 0x41400000    # 12.0f
+
+    div-float/2addr v5, v13
+
+    div-float/2addr v2, v13
+
+    div-float/2addr v6, v13
+
+    div-float/2addr v7, v13
+
+    div-float/2addr v8, v13
+
+    div-float/2addr v9, v13
+
+    div-float/2addr v10, v13
+
+    div-float/2addr v12, v13
+
+    div-float/2addr v11, v13
+
+    div-float/2addr v1, v13
+
+    div-float/2addr v4, v13
+
+    div-float/2addr v3, v13
+
+    div-float/2addr v15, v13
+
+    div-float/2addr v14, v13
+
+    div-float v16, v16, v13
+
+    div-float v38, v38, v13
+
+    div-float v37, v37, v13
+
+    div-float v36, v36, v13
+
+    div-float v35, v35, v13
+
+    div-float v32, v32, v13
+
+    div-float v31, v31, v13
+
+    div-float v30, v30, v13
+
+    div-float v29, v29, v13
+
+    div-float v28, v28, v13
+
+    div-float v25, v25, v13
+
+    div-float v24, v24, v13
+
+    div-float v23, v23, v13
+
+    div-float v22, v22, v13
+
+    div-float v21, v21, v13
+
+    div-float v39, v39, v13
+
+    div-float v40, v40, v13
+
+    div-float v33, v33, v13
+
+    div-float v34, v34, v13
+
+    div-float v26, v26, v13
+
+    div-float v27, v27, v13
+
+    div-float v19, v19, v13
+
+    div-float v13, v43, v13
+
+    goto :goto_246
+
+    :cond_244
+    move/from16 v13, v43
+
+    :goto_246
+    const/16 v17, 0x0
+
+    mul-float v0, v20, v17
+
+    invoke-static {v0}, Ljava/lang/Math;->round(F)I
+
+    move-result v0
+
+    int-to-float v0, v0
+
+    div-float v0, v0, v20
+
+    move/from16 v44, v1
+
+    new-instance v1, Ljava/lang/StringBuilder;
+
+    invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
+
+    invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(F)Ljava/lang/StringBuilder;
+
+    move/from16 v45, v0
+
+    move-object/from16 v0, v18
+
+    invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
+
+    invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
+
+    move-result-object v1
+
+    return-void
+.end method
diff --git a/test/626-checker-arm64-scratch-register/src/Main.java b/test/626-checker-arm64-scratch-register/src/Main.java
index 1394917..cf94b87 100644
--- a/test/626-checker-arm64-scratch-register/src/Main.java
+++ b/test/626-checker-arm64-scratch-register/src/Main.java
@@ -13,6 +13,8 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+import java.lang.reflect.Constructor;
+import java.lang.reflect.Method;
 
 public class Main {
 
@@ -63,14 +65,17 @@
   /// CHECK:   name "B0"
   /// CHECK:       <<This:l\d+>>  ParameterValue
   /// CHECK: end_block
+
   /// CHECK: begin_block
-  /// CHECK:   successors "<<ThenBlock:B\d+>>" "<<ElseBlock:B\d+>>"
+  /// CHECK:  successors "<<ThenBlockA:B\d+>>" "<<ElseBlockA:B\d+>>"
+  /// CHECK:       <<CondA:z\d+>>  InstanceFieldGet [<<This>>] field_name:Main.conditionA
+  /// CHECK:                       If [<<CondA>>]
+  /// CHECK: end_block
+
+  /// CHECK: begin_block
+  /// CHECK:  successors "<<ThenBlockB:B\d+>>" "<<ElseBlockB:B\d+>>"
   /// CHECK:       <<CondB:z\d+>>  InstanceFieldGet [<<This>>] field_name:Main.conditionB
   /// CHECK:                       If [<<CondB>>]
-  /// CHECK:  end_block
-  /// CHECK: begin_block
-  /// CHECK:   name "<<ElseBlock>>"
-  /// CHECK:                      ParallelMove moves:[40(sp)->d0,24(sp)->32(sp),28(sp)->36(sp),d0->d3,d3->d4,d2->d5,d4->d6,d5->d7,d6->d18,d7->d19,d18->d20,d19->d21,d20->d22,d21->d23,d22->d10,d23->d11,16(sp)->24(sp),20(sp)->28(sp),d10->d14,d11->d12,d12->d13,d13->d1,d14->d2,32(sp)->16(sp),36(sp)->20(sp)]
   /// CHECK: end_block
 
   /// CHECK-START-ARM64: void Main.test() disassembly (after)
@@ -82,39 +87,6 @@
   /// CHECK:   successors "<<ThenBlock:B\d+>>" "<<ElseBlock:B\d+>>"
   /// CHECK:       <<CondB:z\d+>>  InstanceFieldGet [<<This>>] field_name:Main.conditionB
   /// CHECK:                       If [<<CondB>>]
-  /// CHECK:  end_block
-  /// CHECK: begin_block
-  /// CHECK:   name "<<ElseBlock>>"
-  /// CHECK:                      ParallelMove moves:[invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid,invalid->invalid]
-  /// CHECK:                        fmov d31, d2
-  /// CHECK:                        ldr s2, [sp, #36]
-  /// CHECK:                        ldr w16, [sp, #16]
-  /// CHECK:                        str w16, [sp, #36]
-  /// CHECK:                        str s14, [sp, #16]
-  /// CHECK:                        ldr s14, [sp, #28]
-  /// CHECK:                        str s1, [sp, #28]
-  /// CHECK:                        ldr s1, [sp, #32]
-  /// CHECK:                        str s31, [sp, #32]
-  /// CHECK:                        ldr s31, [sp, #20]
-  /// CHECK:                        str s31, [sp, #40]
-  /// CHECK:                        str s12, [sp, #20]
-  /// CHECK:                        fmov d12, d11
-  /// CHECK:                        fmov d11, d10
-  /// CHECK:                        fmov d10, d23
-  /// CHECK:                        fmov d23, d22
-  /// CHECK:                        fmov d22, d21
-  /// CHECK:                        fmov d21, d20
-  /// CHECK:                        fmov d20, d19
-  /// CHECK:                        fmov d19, d18
-  /// CHECK:                        fmov d18, d7
-  /// CHECK:                        fmov d7, d6
-  /// CHECK:                        fmov d6, d5
-  /// CHECK:                        fmov d5, d4
-  /// CHECK:                        fmov d4, d3
-  /// CHECK:                        fmov d3, d13
-  /// CHECK:                        ldr s13, [sp, #24]
-  /// CHECK:                        str s3, [sp, #24]
-  /// CHECK:                        ldr s3, pc+{{\d+}} (addr {{0x[0-9a-f]+}}) (100)
   /// CHECK: end_block
 
   public void test() {
@@ -289,9 +261,20 @@
     String res = s + r;
   }
 
-  public static void main(String[] args) {
+  public static void main(String[] args) throws Exception {
     Main main = new Main();
     main.test();
+
+    Class<?> cl = Class.forName("Smali");
+    Constructor<?> cons = cl.getConstructor();
+    Object o = cons.newInstance();
+
+    Method test = cl.getMethod("test");
+    test.invoke(o);
+
+    Method testD8 = cl.getMethod("testD8");
+    testD8.invoke(o);
+
     System.out.println("passed");
   }
 }