| # Copyright (c) 2016, 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. |
| |
| .class public final LTestObject; |
| .super Ljava/lang/Object; |
| |
| .field private static final l:[I |
| |
| .field public a:I |
| .field public b:I |
| .field public c:[I |
| .field public d:[D |
| .field public e:I |
| .field public f:I |
| .field public g:[D |
| .field public h:[D |
| .field public i:[D |
| .field public j:I |
| .field private k:[D |
| |
| .method public constructor <init>()V |
| .registers 1 |
| invoke-direct {p0}, Ljava/lang/Object;-><init>()V |
| return-void |
| .end method |
| |
| .method public final b()V |
| .registers 29 |
| move-object/from16 v0, p0 |
| iget v2, v0, LTestObject;->a:I |
| const/4 v3, 0x1 |
| if-ne v2, v3, :cond_8 |
| :cond_7 |
| return-void |
| :cond_8 |
| move-object/from16 v0, p0 |
| iget v2, v0, LTestObject;->a:I |
| mul-int/lit8 v12, v2, 0x2 |
| const/4 v5, 0x0 |
| move-object/from16 v0, p0 |
| iget v2, v0, LTestObject;->a:I |
| const/4 v3, 0x0 |
| const/4 v4, 0x0 |
| :goto_15 |
| add-int/lit8 v6, v4, 0x1 |
| const/4 v4, 0x4 |
| if-gt v6, v4, :cond_55 |
| sget-object v4, LTestObject;->l:[I |
| add-int/lit8 v5, v6, -0x1 |
| aget v4, v4, v5 |
| move v5, v4 |
| move v4, v3 |
| :goto_22 |
| div-int v3, v2, v5 |
| mul-int v7, v5, v3 |
| sub-int v7, v2, v7 |
| if-nez v7, :cond_f9 |
| add-int/lit8 v2, v4, 0x1 |
| move-object/from16 v0, p0 |
| iget-object v4, v0, LTestObject;->g:[D |
| add-int/lit8 v7, v2, 0x1 |
| add-int/2addr v7, v12 |
| int-to-double v8, v5 |
| aput-wide v8, v4, v7 |
| const/4 v4, 0x2 |
| if-ne v5, v4, :cond_64 |
| const/4 v4, 0x1 |
| if-eq v2, v4, :cond_64 |
| const/4 v4, 0x2 |
| :goto_3d |
| if-gt v4, v2, :cond_5a |
| sub-int v7, v2, v4 |
| add-int/lit8 v7, v7, 0x2 |
| add-int/2addr v7, v12 |
| move-object/from16 v0, p0 |
| iget-object v8, v0, LTestObject;->g:[D |
| add-int/lit8 v9, v7, 0x1 |
| move-object/from16 v0, p0 |
| iget-object v10, v0, LTestObject;->g:[D |
| aget-wide v10, v10, v7 |
| aput-wide v10, v8, v9 |
| add-int/lit8 v4, v4, 0x1 |
| goto :goto_3d |
| :cond_55 |
| add-int/lit8 v4, v5, 0x2 |
| move v5, v4 |
| move v4, v3 |
| goto :goto_22 |
| :cond_5a |
| move-object/from16 v0, p0 |
| iget-object v4, v0, LTestObject;->g:[D |
| add-int/lit8 v7, v12, 0x2 |
| const-wide/high16 v8, 0x4000000000000000L |
| aput-wide v8, v4, v7 |
| :cond_64 |
| const/4 v4, 0x1 |
| if-ne v3, v4, :cond_f5 |
| move-object/from16 v0, p0 |
| iget-object v3, v0, LTestObject;->g:[D |
| move-object/from16 v0, p0 |
| iget v4, v0, LTestObject;->a:I |
| int-to-double v4, v4 |
| aput-wide v4, v3, v12 |
| move-object/from16 v0, p0 |
| iget-object v3, v0, LTestObject;->g:[D |
| add-int/lit8 v4, v12, 0x1 |
| int-to-double v6, v2 |
| aput-wide v6, v3, v4 |
| const-wide v4, 0x401921fb54442d18L |
| move-object/from16 v0, p0 |
| iget v3, v0, LTestObject;->a:I |
| int-to-double v6, v3 |
| div-double v14, v4, v6 |
| const/4 v6, 0x0 |
| add-int/lit8 v13, v2, -0x1 |
| const/4 v2, 0x1 |
| if-eqz v13, :cond_7 |
| const/4 v3, 0x1 |
| move v9, v2 |
| move v11, v3 |
| :goto_90 |
| if-gt v11, v13, :cond_7 |
| move-object/from16 v0, p0 |
| iget-object v2, v0, LTestObject;->g:[D |
| add-int/lit8 v3, v11, 0x1 |
| add-int/2addr v3, v12 |
| aget-wide v2, v2, v3 |
| double-to-int v3, v2 |
| const/4 v2, 0x0 |
| mul-int v10, v9, v3 |
| move-object/from16 v0, p0 |
| iget v4, v0, LTestObject;->a:I |
| div-int v16, v4, v10 |
| add-int/lit8 v17, v3, -0x1 |
| const/4 v3, 0x1 |
| move v8, v3 |
| :goto_a9 |
| move/from16 v0, v17 |
| if-gt v8, v0, :cond_f0 |
| add-int v7, v2, v9 |
| int-to-double v2, v7 |
| mul-double v18, v2, v14 |
| const-wide/16 v4, 0x0 |
| const/4 v2, 0x3 |
| move v3, v6 |
| :goto_b6 |
| move/from16 v0, v16 |
| if-gt v2, v0, :cond_e9 |
| add-int/lit8 v3, v3, 0x2 |
| const-wide/high16 v20, 0x3ff0000000000000L |
| add-double v4, v4, v20 |
| mul-double v20, v4, v18 |
| move-object/from16 v0, p0 |
| iget v0, v0, LTestObject;->a:I |
| move/from16 v22, v0 |
| add-int v22, v22, v3 |
| move-object/from16 v0, p0 |
| iget-object v0, v0, LTestObject;->g:[D |
| move-object/from16 v23, v0 |
| add-int/lit8 v24, v22, -0x2 |
| invoke-static/range {v20 .. v21}, Ljava/lang/Math;->cos(D)D |
| move-result-wide v26 |
| aput-wide v26, v23, v24 |
| move-object/from16 v0, p0 |
| iget-object v0, v0, LTestObject;->g:[D |
| move-object/from16 v23, v0 |
| add-int/lit8 v22, v22, -0x1 |
| invoke-static/range {v20 .. v21}, Ljava/lang/Math;->sin(D)D |
| move-result-wide v20 |
| aput-wide v20, v23, v22 |
| add-int/lit8 v2, v2, 0x2 |
| goto :goto_b6 |
| :cond_e9 |
| add-int v6, v6, v16 |
| add-int/lit8 v2, v8, 0x1 |
| move v8, v2 |
| move v2, v7 |
| goto :goto_a9 |
| :cond_f0 |
| add-int/lit8 v2, v11, 0x1 |
| move v9, v10 |
| move v11, v2 |
| goto :goto_90 |
| :cond_f5 |
| move v4, v2 |
| move v2, v3 |
| goto/16 :goto_22 |
| :cond_f9 |
| move v3, v4 |
| move v4, v6 |
| goto/16 :goto_15 |
| .end method |