PathParser.smali

.class public Lcom/horcrux/svg/PathParser;
.super Ljava/lang/Object;
.source "PathParser.java"


# static fields
.field public static elements:Ljava/util/ArrayList;
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "Ljava/util/ArrayList<",
            "Lcom/horcrux/svg/PathElement;",
            ">;"
        }
    .end annotation
.end field

.field public static i:I

.field public static l:I

.field public static mPath:Landroid/graphics/Path;

.field public static mPenDown:Z

.field public static mPenDownX:F

.field public static mPenDownY:F

.field public static mPenX:F

.field public static mPenY:F

.field public static mPivotX:F

.field public static mPivotY:F

.field public static mScale:F

.field public static s:Ljava/lang/String;


# direct methods
.method static constructor <clinit>()V
    .registers 1

    return-void
.end method

.method public constructor <init>()V
    .registers 1

    invoke-direct {p0}, Ljava/lang/Object;-><init>()V

    return-void
.end method

.method public static arc(FFFZZFF)V
    .registers 15

    sget v0, Lcom/horcrux/svg/PathParser;->mPenX:F

    add-float v6, p5, v0

    sget p5, Lcom/horcrux/svg/PathParser;->mPenY:F

    add-float v7, p6, p5

    move v1, p0

    move v2, p1

    move v3, p2

    move v4, p3

    move v5, p4

    invoke-static/range {v1 .. v7}, Lcom/horcrux/svg/PathParser;->arcTo(FFFZZFF)V

    return-void
.end method

.method public static arcTo(FFFZZFF)V
    .registers 29

    move/from16 v0, p3

    move/from16 v6, p4

    sget v1, Lcom/horcrux/svg/PathParser;->mPenX:F

    sget v2, Lcom/horcrux/svg/PathParser;->mPenY:F

    const/4 v3, 0x0

    cmpl-float v4, p1, v3

    if-nez v4, :cond_17

    cmpl-float v4, p0, v3

    if-nez v4, :cond_14

    sub-float v4, p6, v2

    goto :goto_19

    :cond_14
    move/from16 v4, p0

    goto :goto_19

    :cond_17
    move/from16 v4, p1

    :goto_19
    invoke-static {v4}, Ljava/lang/Math;->abs(F)F

    move-result v4

    cmpl-float v5, p0, v3

    if-nez v5, :cond_24

    sub-float v5, p5, v1

    goto :goto_26

    :cond_24
    move/from16 v5, p0

    :goto_26
    invoke-static {v5}, Ljava/lang/Math;->abs(F)F

    move-result v5

    cmpl-float v7, v5, v3

    if-eqz v7, :cond_183

    cmpl-float v7, v4, v3

    if-eqz v7, :cond_183

    cmpl-float v7, p5, v1

    if-nez v7, :cond_3c

    cmpl-float v7, p6, v2

    if-nez v7, :cond_3c

    goto/16 :goto_183

    :cond_3c
    move/from16 v7, p2

    float-to-double v7, v7

    invoke-static {v7, v8}, Ljava/lang/Math;->toRadians(D)D

    move-result-wide v7

    double-to-float v7, v7

    float-to-double v8, v7

    invoke-static {v8, v9}, Ljava/lang/Math;->cos(D)D

    move-result-wide v10

    double-to-float v10, v10

    invoke-static {v8, v9}, Ljava/lang/Math;->sin(D)D

    move-result-wide v8

    double-to-float v8, v8

    sub-float v9, p5, v1

    sub-float v11, p6, v2

    mul-float v12, v10, v9

    const/high16 v13, 0x40000000    # 2.0f

    div-float/2addr v12, v13

    mul-float v14, v8, v11

    div-float/2addr v14, v13

    add-float/2addr v12, v14

    neg-float v14, v8

    mul-float v15, v14, v9

    div-float/2addr v15, v13

    mul-float v16, v10, v11

    div-float v16, v16, v13

    add-float v15, v15, v16

    mul-float v16, v5, v5

    mul-float v17, v16, v4

    mul-float v17, v17, v4

    mul-float v18, v4, v4

    mul-float v18, v18, v12

    mul-float v18, v18, v12

    mul-float v16, v16, v15

    mul-float v16, v16, v15

    sub-float v19, v17, v16

    sub-float v19, v19, v18

    cmpg-float v20, v19, v3

    if-gez v20, :cond_97

    const/high16 v12, 0x3f800000    # 1.0f

    div-float v19, v19, v17

    sub-float v12, v12, v19

    move/from16 v17, v14

    float-to-double v13, v12

    invoke-static {v13, v14}, Ljava/lang/Math;->sqrt(D)D

    move-result-wide v12

    double-to-float v12, v12

    mul-float v5, v5, v12

    mul-float v4, v4, v12

    const/high16 v12, 0x40000000    # 2.0f

    div-float v13, v9, v12

    div-float v12, v11, v12

    goto :goto_c9

    :cond_97
    move/from16 v17, v14

    add-float v16, v16, v18

    div-float v13, v19, v16

    float-to-double v13, v13

    invoke-static {v13, v14}, Ljava/lang/Math;->sqrt(D)D

    move-result-wide v13

    double-to-float v13, v13

    if-ne v0, v6, :cond_a6

    neg-float v13, v13

    :cond_a6
    neg-float v14, v13

    mul-float v14, v14, v15

    mul-float v14, v14, v5

    div-float/2addr v14, v4

    mul-float v13, v13, v12

    mul-float v13, v13, v4

    div-float/2addr v13, v5

    mul-float v12, v10, v14

    mul-float v15, v8, v13

    sub-float/2addr v12, v15

    const/high16 v15, 0x40000000    # 2.0f

    div-float v16, v9, v15

    add-float v12, v12, v16

    mul-float v14, v14, v8

    mul-float v13, v13, v10

    add-float/2addr v14, v13

    div-float v13, v11, v15

    add-float/2addr v13, v14

    move/from16 v21, v13

    move v13, v12

    move/from16 v12, v21

    :goto_c9
    div-float v14, v10, v5

    div-float/2addr v8, v5

    div-float v15, v17, v4

    div-float/2addr v10, v4

    neg-float v3, v13

    mul-float v17, v15, v3

    neg-float v6, v12

    mul-float v18, v10, v6

    add-float v0, v17, v18

    move/from16 p1, v4

    move/from16 p0, v5

    float-to-double v4, v0

    mul-float v3, v3, v14

    mul-float v6, v6, v8

    add-float/2addr v3, v6

    move/from16 v17, v7

    float-to-double v6, v3

    invoke-static {v4, v5, v6, v7}, Ljava/lang/Math;->atan2(DD)D

    move-result-wide v3

    double-to-float v4, v3

    sub-float v0, v9, v13

    mul-float v15, v15, v0

    sub-float v3, v11, v12

    mul-float v10, v10, v3

    add-float/2addr v15, v10

    float-to-double v5, v15

    mul-float v14, v14, v0

    mul-float v8, v8, v3

    add-float/2addr v14, v8

    float-to-double v7, v14

    invoke-static {v5, v6, v7, v8}, Ljava/lang/Math;->atan2(DD)D

    move-result-wide v5

    double-to-float v5, v5

    add-float v0, v13, v1

    add-float v3, v12, v2

    add-float/2addr v9, v1

    add-float/2addr v11, v2

    invoke-static {}, Lcom/horcrux/svg/PathParser;->setPenDown()V

    sput v9, Lcom/horcrux/svg/PathParser;->mPivotX:F

    sput v9, Lcom/horcrux/svg/PathParser;->mPenX:F

    sput v11, Lcom/horcrux/svg/PathParser;->mPivotY:F

    sput v11, Lcom/horcrux/svg/PathParser;->mPenY:F

    cmpl-float v1, p0, p1

    if-nez v1, :cond_176

    const/4 v1, 0x0

    cmpl-float v1, v17, v1

    if-eqz v1, :cond_119

    goto :goto_176

    :cond_119
    float-to-double v1, v4

    invoke-static {v1, v2}, Ljava/lang/Math;->toDegrees(D)D

    move-result-wide v1

    double-to-float v1, v1

    float-to-double v4, v5

    invoke-static {v4, v5}, Ljava/lang/Math;->toDegrees(D)D

    move-result-wide v4

    double-to-float v2, v4

    sub-float v2, v1, v2

    const/high16 v4, 0x43b40000    # 360.0f

    rem-float/2addr v2, v4

    invoke-static {v2}, Ljava/lang/Math;->abs(F)F

    move-result v2

    const/high16 v5, 0x43340000    # 180.0f

    if-eqz p3, :cond_137

    cmpg-float v5, v2, v5

    if-gez v5, :cond_13d

    goto :goto_13b

    :cond_137
    cmpl-float v5, v2, v5

    if-lez v5, :cond_13d

    :goto_13b
    sub-float v2, v4, v2

    :cond_13d
    if-nez p4, :cond_140

    neg-float v2, v2

    :cond_140
    new-instance v4, Landroid/graphics/RectF;

    sub-float v5, v0, p0

    sget v6, Lcom/horcrux/svg/PathParser;->mScale:F

    mul-float v5, v5, v6

    sub-float v7, v3, p0

    mul-float v7, v7, v6

    add-float v0, v0, p0

    mul-float v0, v0, v6

    add-float v3, v3, p0

    mul-float v3, v3, v6

    invoke-direct {v4, v5, v7, v0, v3}, Landroid/graphics/RectF;-><init>(FFFF)V

    sget-object v0, Lcom/horcrux/svg/PathParser;->mPath:Landroid/graphics/Path;

    invoke-virtual {v0, v4, v1, v2}, Landroid/graphics/Path;->arcTo(Landroid/graphics/RectF;FF)V

    sget-object v0, Lcom/horcrux/svg/PathParser;->elements:Ljava/util/ArrayList;

    new-instance v1, Lcom/horcrux/svg/PathElement;

    sget-object v2, Lcom/horcrux/svg/ElementType;->kCGPathElementAddCurveToPoint:Lcom/horcrux/svg/ElementType;

    const/4 v3, 0x1

    new-array v3, v3, [Lcom/horcrux/svg/Point;

    const/4 v4, 0x0

    new-instance v5, Lcom/horcrux/svg/Point;

    float-to-double v6, v9

    float-to-double v8, v11

    invoke-direct {v5, v6, v7, v8, v9}, Lcom/horcrux/svg/Point;-><init>(DD)V

    aput-object v5, v3, v4

    invoke-direct {v1, v2, v3}, Lcom/horcrux/svg/PathElement;-><init>(Lcom/horcrux/svg/ElementType;[Lcom/horcrux/svg/Point;)V

    invoke-virtual {v0, v1}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z

    goto :goto_182

    :cond_176
    :goto_176
    move v1, v3

    move/from16 v2, p0

    move/from16 v3, p1

    move/from16 v6, p4

    move/from16 v7, v17

    invoke-static/range {v0 .. v7}, Lcom/horcrux/svg/PathParser;->arcToBezier(FFFFFFZF)V

    :goto_182
    return-void

    :cond_183
    :goto_183
    invoke-static/range {p5 .. p6}, Lcom/horcrux/svg/PathParser;->lineTo(FF)V

    return-void
.end method

.method public static arcToBezier(FFFFFFZF)V
    .registers 32

    move/from16 v0, p4

    move/from16 v1, p7

    float-to-double v1, v1

    invoke-static {v1, v2}, Ljava/lang/Math;->cos(D)D

    move-result-wide v3

    double-to-float v3, v3

    invoke-static {v1, v2}, Ljava/lang/Math;->sin(D)D

    move-result-wide v1

    double-to-float v1, v1

    mul-float v2, v3, p2

    neg-float v4, v1

    mul-float v4, v4, p3

    mul-float v1, v1, p2

    mul-float v3, v3, p3

    sub-float v5, p5, v0

    const-wide v6, 0x401921fb54442d18L    # 6.283185307179586

    const/4 v8, 0x0

    cmpg-float v9, v5, v8

    if-gez v9, :cond_2d

    if-eqz p6, :cond_2d

    float-to-double v8, v5

    invoke-static {v8, v9}, Ljava/lang/Double;->isNaN(D)Z

    add-double/2addr v8, v6

    :goto_2b
    double-to-float v5, v8

    goto :goto_39

    :cond_2d
    cmpl-float v8, v5, v8

    if-lez v8, :cond_39

    if-nez p6, :cond_39

    float-to-double v8, v5

    invoke-static {v8, v9}, Ljava/lang/Double;->isNaN(D)Z

    sub-double/2addr v8, v6

    goto :goto_2b

    :cond_39
    :goto_39
    float-to-double v6, v5

    const-wide v8, 0x3ff921fb54442d18L    # 1.5707963267948966

    invoke-static {v6, v7}, Ljava/lang/Double;->isNaN(D)Z

    div-double/2addr v6, v8

    invoke-static {v6, v7}, Lcom/horcrux/svg/PathParser;->round(D)D

    move-result-wide v6

    invoke-static {v6, v7}, Ljava/lang/Math;->abs(D)D

    move-result-wide v6

    invoke-static {v6, v7}, Ljava/lang/Math;->ceil(D)D

    move-result-wide v6

    double-to-int v6, v6

    int-to-float v7, v6

    div-float/2addr v5, v7

    const-wide v7, 0x3ff5555555555555L    # 1.3333333333333333

    const/high16 v9, 0x40800000    # 4.0f

    div-float v9, v5, v9

    float-to-double v9, v9

    invoke-static {v9, v10}, Ljava/lang/Math;->tan(D)D

    move-result-wide v9

    mul-double v9, v9, v7

    double-to-float v7, v9

    float-to-double v8, v0

    invoke-static {v8, v9}, Ljava/lang/Math;->cos(D)D

    move-result-wide v10

    double-to-float v10, v10

    invoke-static {v8, v9}, Ljava/lang/Math;->sin(D)D

    move-result-wide v8

    double-to-float v8, v8

    const/4 v11, 0x0

    :goto_6f
    if-ge v11, v6, :cond_12f

    mul-float v12, v7, v8

    sub-float v12, v10, v12

    mul-float v10, v10, v7

    add-float/2addr v8, v10

    add-float/2addr v0, v5

    float-to-double v13, v0

    invoke-static {v13, v14}, Ljava/lang/Math;->cos(D)D

    move-result-wide v9

    double-to-float v10, v9

    invoke-static {v13, v14}, Ljava/lang/Math;->sin(D)D

    move-result-wide v13

    double-to-float v9, v13

    mul-float v13, v7, v9

    add-float/2addr v13, v10

    mul-float v14, v7, v10

    sub-float v14, v9, v14

    mul-float v15, v2, v12

    add-float v15, p0, v15

    mul-float v16, v4, v8

    add-float v15, v15, v16

    mul-float v12, v12, v1

    add-float v12, p1, v12

    mul-float v8, v8, v3

    add-float/2addr v12, v8

    mul-float v8, v2, v13

    add-float v8, p0, v8

    mul-float v16, v4, v14

    add-float v8, v8, v16

    mul-float v13, v13, v1

    add-float v13, p1, v13

    mul-float v14, v14, v3

    add-float/2addr v13, v14

    mul-float v14, v2, v10

    add-float v14, p0, v14

    mul-float v16, v4, v9

    add-float v14, v14, v16

    mul-float v16, v1, v10

    add-float v16, p1, v16

    mul-float v17, v3, v9

    move/from16 p3, v0

    add-float v0, v16, v17

    sget-object v16, Lcom/horcrux/svg/PathParser;->mPath:Landroid/graphics/Path;

    sget v17, Lcom/horcrux/svg/PathParser;->mScale:F

    mul-float v18, v15, v17

    mul-float v19, v12, v17

    mul-float v20, v8, v17

    mul-float v21, v13, v17

    mul-float v22, v14, v17

    mul-float v23, v0, v17

    move/from16 v17, v18

    move/from16 v18, v19

    move/from16 v19, v20

    move/from16 v20, v21

    move/from16 v21, v22

    move/from16 v22, v23

    invoke-virtual/range {v16 .. v22}, Landroid/graphics/Path;->cubicTo(FFFFFF)V

    move/from16 p7, v1

    sget-object v1, Lcom/horcrux/svg/PathParser;->elements:Ljava/util/ArrayList;

    move/from16 v16, v2

    new-instance v2, Lcom/horcrux/svg/PathElement;

    move/from16 v17, v3

    sget-object v3, Lcom/horcrux/svg/ElementType;->kCGPathElementAddCurveToPoint:Lcom/horcrux/svg/ElementType;

    move/from16 v18, v4

    const/4 v4, 0x3

    new-array v4, v4, [Lcom/horcrux/svg/Point;

    move/from16 p5, v5

    new-instance v5, Lcom/horcrux/svg/Point;

    move/from16 v19, v6

    move/from16 v20, v7

    float-to-double v6, v15

    move/from16 v21, v9

    move v15, v10

    float-to-double v9, v12

    invoke-direct {v5, v6, v7, v9, v10}, Lcom/horcrux/svg/Point;-><init>(DD)V

    const/4 v6, 0x0

    aput-object v5, v4, v6

    new-instance v5, Lcom/horcrux/svg/Point;

    float-to-double v7, v8

    float-to-double v9, v13

    invoke-direct {v5, v7, v8, v9, v10}, Lcom/horcrux/svg/Point;-><init>(DD)V

    const/4 v7, 0x1

    aput-object v5, v4, v7

    const/4 v5, 0x2

    new-instance v7, Lcom/horcrux/svg/Point;

    float-to-double v8, v14

    float-to-double v12, v0

    invoke-direct {v7, v8, v9, v12, v13}, Lcom/horcrux/svg/Point;-><init>(DD)V

    aput-object v7, v4, v5

    invoke-direct {v2, v3, v4}, Lcom/horcrux/svg/PathElement;-><init>(Lcom/horcrux/svg/ElementType;[Lcom/horcrux/svg/Point;)V

    invoke-virtual {v1, v2}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z

    add-int/lit8 v11, v11, 0x1

    move/from16 v0, p3

    move/from16 v5, p5

    move/from16 v1, p7

    move v10, v15

    move/from16 v2, v16

    move/from16 v3, v17

    move/from16 v4, v18

    move/from16 v6, v19

    move/from16 v7, v20

    move/from16 v8, v21

    goto/16 :goto_6f

    :cond_12f
    return-void
.end method

.method public static close()V
    .registers 10

    sget-boolean v0, Lcom/horcrux/svg/PathParser;->mPenDown:Z

    if-eqz v0, :cond_30

    sget v0, Lcom/horcrux/svg/PathParser;->mPenDownX:F

    sput v0, Lcom/horcrux/svg/PathParser;->mPenX:F

    sget v0, Lcom/horcrux/svg/PathParser;->mPenDownY:F

    sput v0, Lcom/horcrux/svg/PathParser;->mPenY:F

    const/4 v0, 0x0

    sput-boolean v0, Lcom/horcrux/svg/PathParser;->mPenDown:Z

    sget-object v1, Lcom/horcrux/svg/PathParser;->mPath:Landroid/graphics/Path;

    invoke-virtual {v1}, Landroid/graphics/Path;->close()V

    sget-object v1, Lcom/horcrux/svg/PathParser;->elements:Ljava/util/ArrayList;

    new-instance v2, Lcom/horcrux/svg/PathElement;

    sget-object v3, Lcom/horcrux/svg/ElementType;->kCGPathElementCloseSubpath:Lcom/horcrux/svg/ElementType;

    const/4 v4, 0x1

    new-array v4, v4, [Lcom/horcrux/svg/Point;

    new-instance v5, Lcom/horcrux/svg/Point;

    sget v6, Lcom/horcrux/svg/PathParser;->mPenX:F

    float-to-double v6, v6

    sget v8, Lcom/horcrux/svg/PathParser;->mPenY:F

    float-to-double v8, v8

    invoke-direct {v5, v6, v7, v8, v9}, Lcom/horcrux/svg/Point;-><init>(DD)V

    aput-object v5, v4, v0

    invoke-direct {v2, v3, v4}, Lcom/horcrux/svg/PathElement;-><init>(Lcom/horcrux/svg/ElementType;[Lcom/horcrux/svg/Point;)V

    invoke-virtual {v1, v2}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z

    :cond_30
    return-void
.end method

.method public static cubicTo(FFFFFF)V
    .registers 14

    invoke-static {}, Lcom/horcrux/svg/PathParser;->setPenDown()V

    sput p4, Lcom/horcrux/svg/PathParser;->mPenX:F

    sput p5, Lcom/horcrux/svg/PathParser;->mPenY:F

    sget-object v0, Lcom/horcrux/svg/PathParser;->mPath:Landroid/graphics/Path;

    sget v1, Lcom/horcrux/svg/PathParser;->mScale:F

    mul-float v2, p0, v1

    mul-float v3, p1, v1

    mul-float v4, p2, v1

    mul-float v5, p3, v1

    mul-float v6, p4, v1

    mul-float v7, p5, v1

    move v1, v2

    move v2, v3

    move v3, v4

    move v4, v5

    move v5, v6

    move v6, v7

    invoke-virtual/range {v0 .. v6}, Landroid/graphics/Path;->cubicTo(FFFFFF)V

    sget-object v0, Lcom/horcrux/svg/PathParser;->elements:Ljava/util/ArrayList;

    new-instance v1, Lcom/horcrux/svg/PathElement;

    sget-object v2, Lcom/horcrux/svg/ElementType;->kCGPathElementAddCurveToPoint:Lcom/horcrux/svg/ElementType;

    const/4 v3, 0x3

    new-array v3, v3, [Lcom/horcrux/svg/Point;

    new-instance v4, Lcom/horcrux/svg/Point;

    float-to-double v5, p0

    float-to-double p0, p1

    invoke-direct {v4, v5, v6, p0, p1}, Lcom/horcrux/svg/Point;-><init>(DD)V

    const/4 p0, 0x0

    aput-object v4, v3, p0

    new-instance p0, Lcom/horcrux/svg/Point;

    float-to-double p1, p2

    float-to-double v4, p3

    invoke-direct {p0, p1, p2, v4, v5}, Lcom/horcrux/svg/Point;-><init>(DD)V

    const/4 p1, 0x1

    aput-object p0, v3, p1

    new-instance p0, Lcom/horcrux/svg/Point;

    float-to-double p1, p4

    float-to-double p3, p5

    invoke-direct {p0, p1, p2, p3, p4}, Lcom/horcrux/svg/Point;-><init>(DD)V

    const/4 p1, 0x2

    aput-object p0, v3, p1

    invoke-direct {v1, v2, v3}, Lcom/horcrux/svg/PathElement;-><init>(Lcom/horcrux/svg/ElementType;[Lcom/horcrux/svg/Point;)V

    invoke-virtual {v0, v1}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z

    return-void
.end method

.method public static curve(FFFFFF)V
    .registers 8

    sget v0, Lcom/horcrux/svg/PathParser;->mPenX:F

    add-float/2addr p0, v0

    sget v1, Lcom/horcrux/svg/PathParser;->mPenY:F

    add-float/2addr p1, v1

    add-float/2addr p2, v0

    add-float/2addr p3, v1

    add-float/2addr p4, v0

    add-float/2addr p5, v1

    invoke-static/range {p0 .. p5}, Lcom/horcrux/svg/PathParser;->curveTo(FFFFFF)V

    return-void
.end method

.method public static curveTo(FFFFFF)V
    .registers 6

    sput p2, Lcom/horcrux/svg/PathParser;->mPivotX:F

    sput p3, Lcom/horcrux/svg/PathParser;->mPivotY:F

    invoke-static/range {p0 .. p5}, Lcom/horcrux/svg/PathParser;->cubicTo(FFFFFF)V

    return-void
.end method

.method public static is_absolute(C)Z
    .registers 1

    invoke-static {p0}, Ljava/lang/Character;->isUpperCase(C)Z

    move-result p0

    return p0
.end method

.method public static is_cmd(C)Z
    .registers 1

    sparse-switch p0, :sswitch_data_8

    const/4 p0, 0x0

    return p0

    :sswitch_5
    const/4 p0, 0x1

    return p0

    nop

    :sswitch_data_8
    .sparse-switch
        0x41 -> :sswitch_5
        0x43 -> :sswitch_5
        0x48 -> :sswitch_5
        0x4c -> :sswitch_5
        0x4d -> :sswitch_5
        0x51 -> :sswitch_5
        0x53 -> :sswitch_5
        0x54 -> :sswitch_5
        0x56 -> :sswitch_5
        0x5a -> :sswitch_5
        0x61 -> :sswitch_5
        0x63 -> :sswitch_5
        0x68 -> :sswitch_5
        0x6c -> :sswitch_5
        0x6d -> :sswitch_5
        0x71 -> :sswitch_5
        0x73 -> :sswitch_5
        0x74 -> :sswitch_5
        0x76 -> :sswitch_5
        0x7a -> :sswitch_5
    .end sparse-switch
.end method

.method public static is_number_start(C)Z
    .registers 2

    const/16 v0, 0x30

    if-lt p0, v0, :cond_8

    const/16 v0, 0x39

    if-le p0, v0, :cond_17

    :cond_8
    const/16 v0, 0x2e

    if-eq p0, v0, :cond_17

    const/16 v0, 0x2d

    if-eq p0, v0, :cond_17

    const/16 v0, 0x2b

    if-ne p0, v0, :cond_15

    goto :goto_17

    :cond_15
    const/4 p0, 0x0

    goto :goto_18

    :cond_17
    :goto_17
    const/4 p0, 0x1

    :goto_18
    return p0
.end method

.method public static line(FF)V
    .registers 3

    sget v0, Lcom/horcrux/svg/PathParser;->mPenX:F

    add-float/2addr p0, v0

    sget v0, Lcom/horcrux/svg/PathParser;->mPenY:F

    add-float/2addr p1, v0

    invoke-static {p0, p1}, Lcom/horcrux/svg/PathParser;->lineTo(FF)V

    return-void
.end method

.method public static lineTo(FF)V
    .registers 9

    invoke-static {}, Lcom/horcrux/svg/PathParser;->setPenDown()V

    sput p0, Lcom/horcrux/svg/PathParser;->mPenX:F

    sput p0, Lcom/horcrux/svg/PathParser;->mPivotX:F

    sput p1, Lcom/horcrux/svg/PathParser;->mPenY:F

    sput p1, Lcom/horcrux/svg/PathParser;->mPivotY:F

    sget-object v0, Lcom/horcrux/svg/PathParser;->mPath:Landroid/graphics/Path;

    sget v1, Lcom/horcrux/svg/PathParser;->mScale:F

    mul-float v2, p0, v1

    mul-float v1, v1, p1

    invoke-virtual {v0, v2, v1}, Landroid/graphics/Path;->lineTo(FF)V

    sget-object v0, Lcom/horcrux/svg/PathParser;->elements:Ljava/util/ArrayList;

    new-instance v1, Lcom/horcrux/svg/PathElement;

    sget-object v2, Lcom/horcrux/svg/ElementType;->kCGPathElementAddLineToPoint:Lcom/horcrux/svg/ElementType;

    const/4 v3, 0x1

    new-array v3, v3, [Lcom/horcrux/svg/Point;

    new-instance v4, Lcom/horcrux/svg/Point;

    float-to-double v5, p0

    float-to-double p0, p1

    invoke-direct {v4, v5, v6, p0, p1}, Lcom/horcrux/svg/Point;-><init>(DD)V

    const/4 p0, 0x0

    aput-object v4, v3, p0

    invoke-direct {v1, v2, v3}, Lcom/horcrux/svg/PathElement;-><init>(Lcom/horcrux/svg/ElementType;[Lcom/horcrux/svg/Point;)V

    invoke-virtual {v0, v1}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z

    return-void
.end method

.method public static move(FF)V
    .registers 3

    sget v0, Lcom/horcrux/svg/PathParser;->mPenX:F

    add-float/2addr p0, v0

    sget v0, Lcom/horcrux/svg/PathParser;->mPenY:F

    add-float/2addr p1, v0

    invoke-static {p0, p1}, Lcom/horcrux/svg/PathParser;->moveTo(FF)V

    return-void
.end method

.method public static moveTo(FF)V
    .registers 9

    sput p0, Lcom/horcrux/svg/PathParser;->mPenX:F

    sput p0, Lcom/horcrux/svg/PathParser;->mPivotX:F

    sput p0, Lcom/horcrux/svg/PathParser;->mPenDownX:F

    sput p1, Lcom/horcrux/svg/PathParser;->mPenY:F

    sput p1, Lcom/horcrux/svg/PathParser;->mPivotY:F

    sput p1, Lcom/horcrux/svg/PathParser;->mPenDownY:F

    sget-object v0, Lcom/horcrux/svg/PathParser;->mPath:Landroid/graphics/Path;

    sget v1, Lcom/horcrux/svg/PathParser;->mScale:F

    mul-float v2, p0, v1

    mul-float v1, v1, p1

    invoke-virtual {v0, v2, v1}, Landroid/graphics/Path;->moveTo(FF)V

    sget-object v0, Lcom/horcrux/svg/PathParser;->elements:Ljava/util/ArrayList;

    new-instance v1, Lcom/horcrux/svg/PathElement;

    sget-object v2, Lcom/horcrux/svg/ElementType;->kCGPathElementMoveToPoint:Lcom/horcrux/svg/ElementType;

    const/4 v3, 0x1

    new-array v3, v3, [Lcom/horcrux/svg/Point;

    new-instance v4, Lcom/horcrux/svg/Point;

    float-to-double v5, p0

    float-to-double p0, p1

    invoke-direct {v4, v5, v6, p0, p1}, Lcom/horcrux/svg/Point;-><init>(DD)V

    const/4 p0, 0x0

    aput-object v4, v3, p0

    invoke-direct {v1, v2, v3}, Lcom/horcrux/svg/PathElement;-><init>(Lcom/horcrux/svg/ElementType;[Lcom/horcrux/svg/Point;)V

    invoke-virtual {v0, v1}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z

    return-void
.end method

.method public static parse(Ljava/lang/String;)Landroid/graphics/Path;
    .registers 24

    new-instance v0, Ljava/util/ArrayList;

    invoke-direct {v0}, Ljava/util/ArrayList;-><init>()V

    sput-object v0, Lcom/horcrux/svg/PathParser;->elements:Ljava/util/ArrayList;

    new-instance v0, Landroid/graphics/Path;

    invoke-direct {v0}, Landroid/graphics/Path;-><init>()V

    sput-object v0, Lcom/horcrux/svg/PathParser;->mPath:Landroid/graphics/Path;

    invoke-virtual/range {p0 .. p0}, Ljava/lang/String;->length()I

    move-result v0

    sput v0, Lcom/horcrux/svg/PathParser;->l:I

    sput-object p0, Lcom/horcrux/svg/PathParser;->s:Ljava/lang/String;

    const/4 v0, 0x0

    sput v0, Lcom/horcrux/svg/PathParser;->i:I

    const/4 v1, 0x0

    sput v1, Lcom/horcrux/svg/PathParser;->mPenX:F

    sput v1, Lcom/horcrux/svg/PathParser;->mPenY:F

    sput v1, Lcom/horcrux/svg/PathParser;->mPivotX:F

    sput v1, Lcom/horcrux/svg/PathParser;->mPivotY:F

    sput v1, Lcom/horcrux/svg/PathParser;->mPenDownX:F

    sput v1, Lcom/horcrux/svg/PathParser;->mPenDownY:F

    sput-boolean v0, Lcom/horcrux/svg/PathParser;->mPenDown:Z

    const/16 v2, 0x20

    const/16 v3, 0x20

    :cond_2c
    :goto_2c
    sget v4, Lcom/horcrux/svg/PathParser;->i:I

    sget v5, Lcom/horcrux/svg/PathParser;->l:I

    if-ge v4, v5, :cond_1f3

    invoke-static {}, Lcom/horcrux/svg/PathParser;->skip_spaces()V

    sget v4, Lcom/horcrux/svg/PathParser;->i:I

    sget v5, Lcom/horcrux/svg/PathParser;->l:I

    if-lt v4, v5, :cond_3d

    goto/16 :goto_1f3

    :cond_3d
    const/4 v4, 0x1

    if-eq v3, v2, :cond_42

    const/4 v5, 0x1

    goto :goto_43

    :cond_42
    const/4 v5, 0x0

    :goto_43
    sget-object v6, Lcom/horcrux/svg/PathParser;->s:Ljava/lang/String;

    sget v7, Lcom/horcrux/svg/PathParser;->i:I

    invoke-virtual {v6, v7}, Ljava/lang/String;->charAt(I)C

    move-result v6

    const/16 v7, 0x6d

    const/16 v8, 0x4d

    const-string v9, "UnexpectedData"

    if-nez v5, :cond_5e

    if-eq v6, v8, :cond_5e

    if-ne v6, v7, :cond_58

    goto :goto_5e

    :cond_58
    new-instance v0, Ljava/lang/Error;

    invoke-direct {v0, v9}, Ljava/lang/Error;-><init>(Ljava/lang/String;)V

    throw v0

    :cond_5e
    :goto_5e
    invoke-static {v6}, Lcom/horcrux/svg/PathParser;->is_cmd(C)Z

    move-result v10

    if-eqz v10, :cond_6c

    sget v3, Lcom/horcrux/svg/PathParser;->i:I

    add-int/2addr v3, v4

    sput v3, Lcom/horcrux/svg/PathParser;->i:I

    move v3, v6

    :cond_6a
    const/4 v4, 0x0

    goto :goto_8b

    :cond_6c
    invoke-static {v6}, Lcom/horcrux/svg/PathParser;->is_number_start(C)Z

    move-result v6

    if-eqz v6, :cond_1ed

    if-eqz v5, :cond_1ed

    const/16 v5, 0x5a

    if-eq v3, v5, :cond_1e7

    const/16 v5, 0x7a

    if-eq v3, v5, :cond_1e7

    if-eq v3, v8, :cond_80

    if-ne v3, v7, :cond_6a

    :cond_80
    invoke-static {v3}, Lcom/horcrux/svg/PathParser;->is_absolute(C)Z

    move-result v3

    if-eqz v3, :cond_89

    const/16 v3, 0x4c

    goto :goto_8b

    :cond_89
    const/16 v3, 0x6c

    :goto_8b
    invoke-static {v3}, Lcom/horcrux/svg/PathParser;->is_absolute(C)Z

    move-result v5

    sparse-switch v3, :sswitch_data_1f6

    new-instance v0, Ljava/lang/Error;

    invoke-direct {v0, v9}, Ljava/lang/Error;-><init>(Ljava/lang/String;)V

    throw v0

    :sswitch_98
    invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F

    move-result v6

    invoke-static {v1, v6}, Lcom/horcrux/svg/PathParser;->line(FF)V

    goto/16 :goto_1db

    :sswitch_a1
    invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F

    move-result v6

    invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F

    move-result v9

    invoke-static {v6, v9}, Lcom/horcrux/svg/PathParser;->smoothQuadraticBezierCurve(FF)V

    goto/16 :goto_1db

    :sswitch_ae
    invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F

    move-result v6

    invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F

    move-result v9

    invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F

    move-result v10

    invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F

    move-result v11

    invoke-static {v6, v9, v10, v11}, Lcom/horcrux/svg/PathParser;->smoothCurve(FFFF)V

    goto/16 :goto_1db

    :sswitch_c3
    invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F

    move-result v6

    invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F

    move-result v9

    invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F

    move-result v10

    invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F

    move-result v11

    invoke-static {v6, v9, v10, v11}, Lcom/horcrux/svg/PathParser;->quadraticBezierCurve(FFFF)V

    goto/16 :goto_1db

    :sswitch_d8
    invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F

    move-result v6

    invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F

    move-result v9

    invoke-static {v6, v9}, Lcom/horcrux/svg/PathParser;->move(FF)V

    goto/16 :goto_1db

    :sswitch_e5
    invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F

    move-result v6

    invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F

    move-result v9

    invoke-static {v6, v9}, Lcom/horcrux/svg/PathParser;->line(FF)V

    goto/16 :goto_1db

    :sswitch_f2
    invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F

    move-result v6

    invoke-static {v6, v1}, Lcom/horcrux/svg/PathParser;->line(FF)V

    goto/16 :goto_1db

    :sswitch_fb
    invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F

    move-result v9

    invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F

    move-result v10

    invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F

    move-result v11

    invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F

    move-result v12

    invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F

    move-result v13

    invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F

    move-result v14

    invoke-static/range {v9 .. v14}, Lcom/horcrux/svg/PathParser;->curve(FFFFFF)V

    goto/16 :goto_1db

    :sswitch_118
    invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F

    move-result v15

    invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F

    move-result v16

    invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F

    move-result v17

    invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_flag()Z

    move-result v18

    invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_flag()Z

    move-result v19

    invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F

    move-result v20

    invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F

    move-result v21

    invoke-static/range {v15 .. v21}, Lcom/horcrux/svg/PathParser;->arc(FFFZZFF)V

    goto/16 :goto_1db

    :sswitch_139
    invoke-static {}, Lcom/horcrux/svg/PathParser;->close()V

    goto/16 :goto_1db

    :sswitch_13e
    sget v6, Lcom/horcrux/svg/PathParser;->mPenX:F

    invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F

    move-result v9

    invoke-static {v6, v9}, Lcom/horcrux/svg/PathParser;->lineTo(FF)V

    goto/16 :goto_1db

    :sswitch_149
    invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F

    move-result v6

    invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F

    move-result v9

    invoke-static {v6, v9}, Lcom/horcrux/svg/PathParser;->smoothQuadraticBezierCurveTo(FF)V

    goto/16 :goto_1db

    :sswitch_156
    invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F

    move-result v6

    invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F

    move-result v9

    invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F

    move-result v10

    invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F

    move-result v11

    invoke-static {v6, v9, v10, v11}, Lcom/horcrux/svg/PathParser;->smoothCurveTo(FFFF)V

    goto :goto_1db

    :sswitch_16a
    invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F

    move-result v6

    invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F

    move-result v9

    invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F

    move-result v10

    invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F

    move-result v11

    invoke-static {v6, v9, v10, v11}, Lcom/horcrux/svg/PathParser;->quadraticBezierCurveTo(FFFF)V

    goto :goto_1db

    :sswitch_17e
    invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F

    move-result v6

    invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F

    move-result v9

    invoke-static {v6, v9}, Lcom/horcrux/svg/PathParser;->moveTo(FF)V

    goto :goto_1db

    :sswitch_18a
    invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F

    move-result v6

    invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F

    move-result v9

    invoke-static {v6, v9}, Lcom/horcrux/svg/PathParser;->lineTo(FF)V

    goto :goto_1db

    :sswitch_196
    invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F

    move-result v6

    sget v9, Lcom/horcrux/svg/PathParser;->mPenY:F

    invoke-static {v6, v9}, Lcom/horcrux/svg/PathParser;->lineTo(FF)V

    goto :goto_1db

    :sswitch_1a0
    invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F

    move-result v10

    invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F

    move-result v11

    invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F

    move-result v12

    invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F

    move-result v13

    invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F

    move-result v14

    invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F

    move-result v15

    invoke-static/range {v10 .. v15}, Lcom/horcrux/svg/PathParser;->curveTo(FFFFFF)V

    goto :goto_1db

    :sswitch_1bc
    invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F

    move-result v16

    invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F

    move-result v17

    invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F

    move-result v18

    invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_flag()Z

    move-result v19

    invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_flag()Z

    move-result v20

    invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F

    move-result v21

    invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_number()F

    move-result v22

    invoke-static/range {v16 .. v22}, Lcom/horcrux/svg/PathParser;->arcTo(FFFZZFF)V

    :goto_1db
    if-eqz v4, :cond_2c

    if-eqz v5, :cond_1e3

    const/16 v3, 0x4d

    goto/16 :goto_2c

    :cond_1e3
    const/16 v3, 0x6d

    goto/16 :goto_2c

    :cond_1e7
    new-instance v0, Ljava/lang/Error;

    invoke-direct {v0, v9}, Ljava/lang/Error;-><init>(Ljava/lang/String;)V

    throw v0

    :cond_1ed
    new-instance v0, Ljava/lang/Error;

    invoke-direct {v0, v9}, Ljava/lang/Error;-><init>(Ljava/lang/String;)V

    throw v0

    :cond_1f3
    :goto_1f3
    sget-object v0, Lcom/horcrux/svg/PathParser;->mPath:Landroid/graphics/Path;

    return-object v0

    :sswitch_data_1f6
    .sparse-switch
        0x41 -> :sswitch_1bc
        0x43 -> :sswitch_1a0
        0x48 -> :sswitch_196
        0x4c -> :sswitch_18a
        0x4d -> :sswitch_17e
        0x51 -> :sswitch_16a
        0x53 -> :sswitch_156
        0x54 -> :sswitch_149
        0x56 -> :sswitch_13e
        0x5a -> :sswitch_139
        0x61 -> :sswitch_118
        0x63 -> :sswitch_fb
        0x68 -> :sswitch_f2
        0x6c -> :sswitch_e5
        0x6d -> :sswitch_d8
        0x71 -> :sswitch_c3
        0x73 -> :sswitch_ae
        0x74 -> :sswitch_a1
        0x76 -> :sswitch_98
        0x7a -> :sswitch_139
    .end sparse-switch
.end method

.method public static parse_flag()Z
    .registers 5

    invoke-static {}, Lcom/horcrux/svg/PathParser;->skip_spaces()V

    sget-object v0, Lcom/horcrux/svg/PathParser;->s:Ljava/lang/String;

    sget v1, Lcom/horcrux/svg/PathParser;->i:I

    invoke-virtual {v0, v1}, Ljava/lang/String;->charAt(I)C

    move-result v0

    const/16 v1, 0x30

    const/16 v2, 0x31

    if-eq v0, v1, :cond_1c

    if-ne v0, v2, :cond_14

    goto :goto_1c

    :cond_14
    new-instance v0, Ljava/lang/Error;

    const-string v1, "UnexpectedData"

    invoke-direct {v0, v1}, Ljava/lang/Error;-><init>(Ljava/lang/String;)V

    throw v0

    :cond_1c
    :goto_1c
    sget v1, Lcom/horcrux/svg/PathParser;->i:I

    const/4 v3, 0x1

    add-int/2addr v1, v3

    sput v1, Lcom/horcrux/svg/PathParser;->i:I

    sget v4, Lcom/horcrux/svg/PathParser;->l:I

    if-ge v1, v4, :cond_35

    sget-object v4, Lcom/horcrux/svg/PathParser;->s:Ljava/lang/String;

    invoke-virtual {v4, v1}, Ljava/lang/String;->charAt(I)C

    move-result v1

    const/16 v4, 0x2c

    if-ne v1, v4, :cond_35

    sget v1, Lcom/horcrux/svg/PathParser;->i:I

    add-int/2addr v1, v3

    sput v1, Lcom/horcrux/svg/PathParser;->i:I

    :cond_35
    invoke-static {}, Lcom/horcrux/svg/PathParser;->skip_spaces()V

    if-ne v0, v2, :cond_3b

    goto :goto_3c

    :cond_3b
    const/4 v3, 0x0

    :goto_3c
    return v3
.end method

.method public static parse_list_number()F
    .registers 2

    sget v0, Lcom/horcrux/svg/PathParser;->i:I

    sget v1, Lcom/horcrux/svg/PathParser;->l:I

    if-eq v0, v1, :cond_11

    invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_number()F

    move-result v0

    invoke-static {}, Lcom/horcrux/svg/PathParser;->skip_spaces()V

    invoke-static {}, Lcom/horcrux/svg/PathParser;->parse_list_separator()V

    return v0

    :cond_11
    new-instance v0, Ljava/lang/Error;

    const-string v1, "UnexpectedEnd"

    invoke-direct {v0, v1}, Ljava/lang/Error;-><init>(Ljava/lang/String;)V

    throw v0
.end method

.method public static parse_list_separator()V
    .registers 2

    sget v0, Lcom/horcrux/svg/PathParser;->i:I

    sget v1, Lcom/horcrux/svg/PathParser;->l:I

    if-ge v0, v1, :cond_16

    sget-object v1, Lcom/horcrux/svg/PathParser;->s:Ljava/lang/String;

    invoke-virtual {v1, v0}, Ljava/lang/String;->charAt(I)C

    move-result v0

    const/16 v1, 0x2c

    if-ne v0, v1, :cond_16

    sget v0, Lcom/horcrux/svg/PathParser;->i:I

    add-int/lit8 v0, v0, 0x1

    sput v0, Lcom/horcrux/svg/PathParser;->i:I

    :cond_16
    return-void
.end method

.method public static parse_number()F
    .registers 10

    invoke-static {}, Lcom/horcrux/svg/PathParser;->skip_spaces()V

    sget v0, Lcom/horcrux/svg/PathParser;->i:I

    sget v1, Lcom/horcrux/svg/PathParser;->l:I

    const-string v2, "InvalidNumber"

    if-eq v0, v1, :cond_c5

    sget-object v1, Lcom/horcrux/svg/PathParser;->s:Ljava/lang/String;

    invoke-virtual {v1, v0}, Ljava/lang/String;->charAt(I)C

    move-result v1

    const/16 v3, 0x2b

    const/16 v4, 0x2d

    if-eq v1, v4, :cond_19

    if-ne v1, v3, :cond_25

    :cond_19
    sget v1, Lcom/horcrux/svg/PathParser;->i:I

    add-int/lit8 v1, v1, 0x1

    sput v1, Lcom/horcrux/svg/PathParser;->i:I

    sget-object v5, Lcom/horcrux/svg/PathParser;->s:Ljava/lang/String;

    invoke-virtual {v5, v1}, Ljava/lang/String;->charAt(I)C

    move-result v1

    :cond_25
    const/16 v5, 0x39

    const/16 v6, 0x2e

    const/16 v7, 0x30

    if-lt v1, v7, :cond_3f

    if-gt v1, v5, :cond_3f

    invoke-static {}, Lcom/horcrux/svg/PathParser;->skip_digits()V

    sget v8, Lcom/horcrux/svg/PathParser;->i:I

    sget v9, Lcom/horcrux/svg/PathParser;->l:I

    if-ge v8, v9, :cond_41

    sget-object v1, Lcom/horcrux/svg/PathParser;->s:Ljava/lang/String;

    invoke-virtual {v1, v8}, Ljava/lang/String;->charAt(I)C

    move-result v1

    goto :goto_41

    :cond_3f
    if-ne v1, v6, :cond_bf

    :cond_41
    :goto_41
    if-ne v1, v6, :cond_58

    sget v6, Lcom/horcrux/svg/PathParser;->i:I

    add-int/lit8 v6, v6, 0x1

    sput v6, Lcom/horcrux/svg/PathParser;->i:I

    invoke-static {}, Lcom/horcrux/svg/PathParser;->skip_digits()V

    sget v6, Lcom/horcrux/svg/PathParser;->i:I

    sget v8, Lcom/horcrux/svg/PathParser;->l:I

    if-ge v6, v8, :cond_58

    sget-object v1, Lcom/horcrux/svg/PathParser;->s:Ljava/lang/String;

    invoke-virtual {v1, v6}, Ljava/lang/String;->charAt(I)C

    move-result v1

    :cond_58
    const/16 v6, 0x65

    if-eq v1, v6, :cond_60

    const/16 v6, 0x45

    if-ne v1, v6, :cond_a0

    :cond_60
    sget v1, Lcom/horcrux/svg/PathParser;->i:I

    add-int/lit8 v6, v1, 0x1

    sget v8, Lcom/horcrux/svg/PathParser;->l:I

    if-ge v6, v8, :cond_a0

    sget-object v6, Lcom/horcrux/svg/PathParser;->s:Ljava/lang/String;

    add-int/lit8 v1, v1, 0x1

    invoke-virtual {v6, v1}, Ljava/lang/String;->charAt(I)C

    move-result v1

    const/16 v6, 0x6d

    if-eq v1, v6, :cond_a0

    const/16 v6, 0x78

    if-eq v1, v6, :cond_a0

    sget v1, Lcom/horcrux/svg/PathParser;->i:I

    add-int/lit8 v1, v1, 0x1

    sput v1, Lcom/horcrux/svg/PathParser;->i:I

    sget-object v6, Lcom/horcrux/svg/PathParser;->s:Ljava/lang/String;

    invoke-virtual {v6, v1}, Ljava/lang/String;->charAt(I)C

    move-result v1

    if-eq v1, v3, :cond_97

    if-ne v1, v4, :cond_89

    goto :goto_97

    :cond_89
    if-lt v1, v7, :cond_91

    if-gt v1, v5, :cond_91

    invoke-static {}, Lcom/horcrux/svg/PathParser;->skip_digits()V

    goto :goto_a0

    :cond_91
    new-instance v0, Ljava/lang/Error;

    invoke-direct {v0, v2}, Ljava/lang/Error;-><init>(Ljava/lang/String;)V

    throw v0

    :cond_97
    :goto_97
    sget v1, Lcom/horcrux/svg/PathParser;->i:I

    add-int/lit8 v1, v1, 0x1

    sput v1, Lcom/horcrux/svg/PathParser;->i:I

    invoke-static {}, Lcom/horcrux/svg/PathParser;->skip_digits()V

    :cond_a0
    :goto_a0
    sget-object v1, Lcom/horcrux/svg/PathParser;->s:Ljava/lang/String;

    sget v3, Lcom/horcrux/svg/PathParser;->i:I

    invoke-virtual {v1, v0, v3}, Ljava/lang/String;->substring(II)Ljava/lang/String;

    move-result-object v0

    invoke-static {v0}, Ljava/lang/Float;->parseFloat(Ljava/lang/String;)F

    move-result v0

    invoke-static {v0}, Ljava/lang/Float;->isInfinite(F)Z

    move-result v1

    if-nez v1, :cond_b9

    invoke-static {v0}, Ljava/lang/Float;->isNaN(F)Z

    move-result v1

    if-nez v1, :cond_b9

    return v0

    :cond_b9
    new-instance v0, Ljava/lang/Error;

    invoke-direct {v0, v2}, Ljava/lang/Error;-><init>(Ljava/lang/String;)V

    throw v0

    :cond_bf
    new-instance v0, Ljava/lang/Error;

    invoke-direct {v0, v2}, Ljava/lang/Error;-><init>(Ljava/lang/String;)V

    throw v0

    :cond_c5
    new-instance v0, Ljava/lang/Error;

    invoke-direct {v0, v2}, Ljava/lang/Error;-><init>(Ljava/lang/String;)V

    throw v0
.end method

.method public static quadraticBezierCurve(FFFF)V
    .registers 6

    sget v0, Lcom/horcrux/svg/PathParser;->mPenX:F

    add-float/2addr p0, v0

    sget v1, Lcom/horcrux/svg/PathParser;->mPenY:F

    add-float/2addr p1, v1

    add-float/2addr p2, v0

    add-float/2addr p3, v1

    invoke-static {p0, p1, p2, p3}, Lcom/horcrux/svg/PathParser;->quadraticBezierCurveTo(FFFF)V

    return-void
.end method

.method public static quadraticBezierCurveTo(FFFF)V
    .registers 13

    sput p0, Lcom/horcrux/svg/PathParser;->mPivotX:F

    sput p1, Lcom/horcrux/svg/PathParser;->mPivotY:F

    const/high16 v0, 0x40000000    # 2.0f

    mul-float p0, p0, v0

    add-float v1, p2, p0

    const/high16 v2, 0x40400000    # 3.0f

    div-float v5, v1, v2

    mul-float p1, p1, v0

    add-float v0, p3, p1

    div-float v6, v0, v2

    sget v0, Lcom/horcrux/svg/PathParser;->mPenX:F

    add-float/2addr v0, p0

    div-float v3, v0, v2

    sget p0, Lcom/horcrux/svg/PathParser;->mPenY:F

    add-float/2addr p0, p1

    div-float v4, p0, v2

    move v7, p2

    move v8, p3

    invoke-static/range {v3 .. v8}, Lcom/horcrux/svg/PathParser;->cubicTo(FFFFFF)V

    return-void
.end method

.method public static round(D)D
    .registers 6

    const-wide/high16 v0, 0x4024000000000000L    # 10.0

    const-wide/high16 v2, 0x4010000000000000L    # 4.0

    invoke-static {v0, v1, v2, v3}, Ljava/lang/Math;->pow(DD)D

    move-result-wide v0

    mul-double p0, p0, v0

    invoke-static {p0, p1}, Ljava/lang/Math;->round(D)J

    move-result-wide p0

    long-to-double p0, p0

    invoke-static {p0, p1}, Ljava/lang/Double;->isNaN(D)Z

    div-double/2addr p0, v0

    return-wide p0
.end method

.method public static setPenDown()V
    .registers 1

    sget-boolean v0, Lcom/horcrux/svg/PathParser;->mPenDown:Z

    if-nez v0, :cond_f

    sget v0, Lcom/horcrux/svg/PathParser;->mPenX:F

    sput v0, Lcom/horcrux/svg/PathParser;->mPenDownX:F

    sget v0, Lcom/horcrux/svg/PathParser;->mPenY:F

    sput v0, Lcom/horcrux/svg/PathParser;->mPenDownY:F

    const/4 v0, 0x1

    sput-boolean v0, Lcom/horcrux/svg/PathParser;->mPenDown:Z

    :cond_f
    return-void
.end method

.method public static skip_digits()V
    .registers 2

    :goto_0
    sget v0, Lcom/horcrux/svg/PathParser;->i:I

    sget v1, Lcom/horcrux/svg/PathParser;->l:I

    if-ge v0, v1, :cond_19

    sget-object v1, Lcom/horcrux/svg/PathParser;->s:Ljava/lang/String;

    invoke-virtual {v1, v0}, Ljava/lang/String;->charAt(I)C

    move-result v0

    invoke-static {v0}, Ljava/lang/Character;->isDigit(C)Z

    move-result v0

    if-eqz v0, :cond_19

    sget v0, Lcom/horcrux/svg/PathParser;->i:I

    add-int/lit8 v0, v0, 0x1

    sput v0, Lcom/horcrux/svg/PathParser;->i:I

    goto :goto_0

    :cond_19
    return-void
.end method

.method public static skip_spaces()V
    .registers 2

    :goto_0
    sget v0, Lcom/horcrux/svg/PathParser;->i:I

    sget v1, Lcom/horcrux/svg/PathParser;->l:I

    if-ge v0, v1, :cond_19

    sget-object v1, Lcom/horcrux/svg/PathParser;->s:Ljava/lang/String;

    invoke-virtual {v1, v0}, Ljava/lang/String;->charAt(I)C

    move-result v0

    invoke-static {v0}, Ljava/lang/Character;->isWhitespace(C)Z

    move-result v0

    if-eqz v0, :cond_19

    sget v0, Lcom/horcrux/svg/PathParser;->i:I

    add-int/lit8 v0, v0, 0x1

    sput v0, Lcom/horcrux/svg/PathParser;->i:I

    goto :goto_0

    :cond_19
    return-void
.end method

.method public static smoothCurve(FFFF)V
    .registers 6

    sget v0, Lcom/horcrux/svg/PathParser;->mPenX:F

    add-float/2addr p0, v0

    sget v1, Lcom/horcrux/svg/PathParser;->mPenY:F

    add-float/2addr p1, v1

    add-float/2addr p2, v0

    add-float/2addr p3, v1

    invoke-static {p0, p1, p2, p3}, Lcom/horcrux/svg/PathParser;->smoothCurveTo(FFFF)V

    return-void
.end method

.method public static smoothCurveTo(FFFF)V
    .registers 13

    sget v0, Lcom/horcrux/svg/PathParser;->mPenX:F

    const/high16 v1, 0x40000000    # 2.0f

    mul-float v0, v0, v1

    sget v2, Lcom/horcrux/svg/PathParser;->mPivotX:F

    sub-float v3, v0, v2

    sget v0, Lcom/horcrux/svg/PathParser;->mPenY:F

    mul-float v0, v0, v1

    sget v1, Lcom/horcrux/svg/PathParser;->mPivotY:F

    sub-float v4, v0, v1

    sput p0, Lcom/horcrux/svg/PathParser;->mPivotX:F

    sput p1, Lcom/horcrux/svg/PathParser;->mPivotY:F

    move v5, p0

    move v6, p1

    move v7, p2

    move v8, p3

    invoke-static/range {v3 .. v8}, Lcom/horcrux/svg/PathParser;->cubicTo(FFFFFF)V

    return-void
.end method

.method public static smoothQuadraticBezierCurve(FF)V
    .registers 3

    sget v0, Lcom/horcrux/svg/PathParser;->mPenX:F

    add-float/2addr p0, v0

    sget v0, Lcom/horcrux/svg/PathParser;->mPenY:F

    add-float/2addr p1, v0

    invoke-static {p0, p1}, Lcom/horcrux/svg/PathParser;->smoothQuadraticBezierCurveTo(FF)V

    return-void
.end method

.method public static smoothQuadraticBezierCurveTo(FF)V
    .registers 5

    sget v0, Lcom/horcrux/svg/PathParser;->mPenX:F

    const/high16 v1, 0x40000000    # 2.0f

    mul-float v0, v0, v1

    sget v2, Lcom/horcrux/svg/PathParser;->mPivotX:F

    sub-float/2addr v0, v2

    sget v2, Lcom/horcrux/svg/PathParser;->mPenY:F

    mul-float v2, v2, v1

    sget v1, Lcom/horcrux/svg/PathParser;->mPivotY:F

    sub-float/2addr v2, v1

    invoke-static {v0, v2, p0, p1}, Lcom/horcrux/svg/PathParser;->quadraticBezierCurveTo(FFFF)V

    return-void
.end method