FastBlur.smali

.class public Lhurriyet/mobil/android/hurriyet/utils/blur/FastBlur;
.super Ljava/lang/Object;
.source "FastBlur.java"


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

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

    return-void
.end method

.method public static blur(Landroid/graphics/Bitmap;IZ)Landroid/graphics/Bitmap;
    .registers 39

    move/from16 v0, p1

    const/4 v1, 0x1

    if-eqz p2, :cond_8

    move-object/from16 v2, p0

    goto :goto_12

    .line 41
    :cond_8
    invoke-virtual/range {p0 .. p0}, Landroid/graphics/Bitmap;->getConfig()Landroid/graphics/Bitmap$Config;

    move-result-object v2

    move-object/from16 v3, p0

    invoke-virtual {v3, v2, v1}, Landroid/graphics/Bitmap;->copy(Landroid/graphics/Bitmap$Config;Z)Landroid/graphics/Bitmap;

    move-result-object v2

    :goto_12
    if-ge v0, v1, :cond_16

    const/4 v0, 0x0

    return-object v0

    .line 48
    :cond_16
    invoke-virtual {v2}, Landroid/graphics/Bitmap;->getWidth()I

    move-result v11

    .line 49
    invoke-virtual {v2}, Landroid/graphics/Bitmap;->getHeight()I

    move-result v12

    mul-int v13, v11, v12

    .line 51
    new-array v14, v13, [I

    const/4 v5, 0x0

    const/4 v7, 0x0

    const/4 v8, 0x0

    move-object v3, v2

    move-object v4, v14

    move v6, v11

    move v9, v11

    move v10, v12

    .line 52
    invoke-virtual/range {v3 .. v10}, Landroid/graphics/Bitmap;->getPixels([IIIIIII)V

    add-int/lit8 v3, v11, -0x1

    add-int/lit8 v4, v12, -0x1

    add-int v5, v0, v0

    add-int/2addr v5, v1

    .line 59
    new-array v6, v13, [I

    .line 60
    new-array v7, v13, [I

    .line 61
    new-array v8, v13, [I

    .line 63
    invoke-static {v11, v12}, Ljava/lang/Math;->max(II)I

    move-result v9

    new-array v9, v9, [I

    add-int/lit8 v10, v5, 0x1

    shr-int/2addr v10, v1

    mul-int v10, v10, v10

    mul-int/lit16 v13, v10, 0x100

    .line 67
    new-array v15, v13, [I

    const/4 v1, 0x0

    :goto_4a
    if-ge v1, v13, :cond_53

    .line 69
    div-int v17, v1, v10

    aput v17, v15, v1

    add-int/lit8 v1, v1, 0x1

    goto :goto_4a

    :cond_53
    const/4 v1, 0x3

    const/4 v10, 0x2

    new-array v13, v10, [I

    const/16 v16, 0x1

    aput v1, v13, v16

    const/4 v1, 0x0

    aput v5, v13, v1

    .line 74
    const-class v1, I

    invoke-static {v1, v13}, Ljava/lang/reflect/Array;->newInstance(Ljava/lang/Class;[I)Ljava/lang/Object;

    move-result-object v1

    check-cast v1, [[I

    add-int/lit8 v13, v0, 0x1

    const/4 v10, 0x0

    const/16 v17, 0x0

    const/16 v18, 0x0

    :goto_6d
    if-ge v10, v12, :cond_19e

    move-object/from16 v19, v2

    neg-int v2, v0

    move/from16 v28, v12

    const/16 v20, 0x0

    const/16 v21, 0x0

    const/16 v22, 0x0

    const/16 v23, 0x0

    const/16 v24, 0x0

    const/16 v25, 0x0

    const/16 v26, 0x0

    const/16 v27, 0x0

    move v12, v2

    const/4 v2, 0x0

    :goto_86
    const v29, 0xff00

    const/high16 v30, 0xff0000

    if-gt v12, v0, :cond_f0

    move/from16 v31, v4

    move-object/from16 v32, v9

    const/4 v4, 0x0

    .line 86
    invoke-static {v12, v4}, Ljava/lang/Math;->max(II)I

    move-result v9

    invoke-static {v3, v9}, Ljava/lang/Math;->min(II)I

    move-result v9

    add-int v9, v17, v9

    aget v9, v14, v9

    add-int v33, v12, v0

    .line 87
    aget-object v33, v1, v33

    and-int v30, v9, v30

    shr-int/lit8 v30, v30, 0x10

    .line 88
    aput v30, v33, v4

    and-int v29, v9, v29

    shr-int/lit8 v29, v29, 0x8

    const/16 v16, 0x1

    .line 89
    aput v29, v33, v16

    and-int/lit16 v9, v9, 0xff

    const/16 v29, 0x2

    .line 90
    aput v9, v33, v29

    .line 91
    invoke-static {v12}, Ljava/lang/Math;->abs(I)I

    move-result v9

    sub-int v9, v13, v9

    .line 92
    aget v30, v33, v4

    mul-int v30, v30, v9

    add-int v2, v2, v30

    .line 93
    aget v30, v33, v16

    mul-int v30, v30, v9

    add-int v20, v20, v30

    .line 94
    aget v30, v33, v29

    mul-int v30, v30, v9

    add-int v21, v21, v30

    if-lez v12, :cond_dd

    .line 96
    aget v9, v33, v4

    add-int v25, v25, v9

    .line 97
    aget v9, v33, v16

    add-int v26, v26, v9

    .line 98
    aget v9, v33, v29

    add-int v27, v27, v9

    goto :goto_e9

    .line 100
    :cond_dd
    aget v9, v33, v4

    add-int v22, v22, v9

    .line 101
    aget v4, v33, v16

    add-int v23, v23, v4

    .line 102
    aget v4, v33, v29

    add-int v24, v24, v4

    :goto_e9
    add-int/lit8 v12, v12, 0x1

    move/from16 v4, v31

    move-object/from16 v9, v32

    goto :goto_86

    :cond_f0
    move/from16 v31, v4

    move-object/from16 v32, v9

    move v9, v0

    move v4, v2

    const/4 v2, 0x0

    :goto_f7
    if-ge v2, v11, :cond_18e

    .line 109
    aget v12, v15, v4

    aput v12, v6, v17

    .line 110
    aget v12, v15, v20

    aput v12, v7, v17

    .line 111
    aget v12, v15, v21

    aput v12, v8, v17

    sub-int v4, v4, v22

    sub-int v20, v20, v23

    sub-int v21, v21, v24

    sub-int v12, v9, v0

    add-int/2addr v12, v5

    .line 118
    rem-int/2addr v12, v5

    aget-object v12, v1, v12

    const/16 v33, 0x0

    .line 120
    aget v34, v12, v33

    sub-int v22, v22, v34

    const/16 v16, 0x1

    .line 121
    aget v33, v12, v16

    sub-int v23, v23, v33

    const/16 v33, 0x2

    .line 122
    aget v34, v12, v33

    sub-int v24, v24, v34

    if-nez v10, :cond_132

    add-int v33, v2, v0

    move-object/from16 v34, v15

    add-int/lit8 v15, v33, 0x1

    .line 125
    invoke-static {v15, v3}, Ljava/lang/Math;->min(II)I

    move-result v15

    aput v15, v32, v2

    goto :goto_134

    :cond_132
    move-object/from16 v34, v15

    .line 127
    :goto_134
    aget v15, v32, v2

    add-int v15, v18, v15

    aget v15, v14, v15

    and-int v33, v15, v30

    shr-int/lit8 v33, v33, 0x10

    const/16 v35, 0x0

    .line 129
    aput v33, v12, v35

    and-int v33, v15, v29

    shr-int/lit8 v33, v33, 0x8

    const/16 v16, 0x1

    .line 130
    aput v33, v12, v16

    and-int/lit16 v15, v15, 0xff

    const/16 v33, 0x2

    .line 131
    aput v15, v12, v33

    .line 133
    aget v15, v12, v35

    add-int v25, v25, v15

    .line 134
    aget v15, v12, v16

    add-int v26, v26, v15

    .line 135
    aget v12, v12, v33

    add-int v27, v27, v12

    add-int v4, v4, v25

    add-int v20, v20, v26

    add-int v21, v21, v27

    add-int/lit8 v9, v9, 0x1

    .line 141
    rem-int/2addr v9, v5

    .line 142
    rem-int v12, v9, v5

    aget-object v12, v1, v12

    const/4 v15, 0x0

    .line 144
    aget v33, v12, v15

    add-int v22, v22, v33

    const/16 v16, 0x1

    .line 145
    aget v33, v12, v16

    add-int v23, v23, v33

    const/16 v33, 0x2

    .line 146
    aget v35, v12, v33

    add-int v24, v24, v35

    .line 148
    aget v35, v12, v15

    sub-int v25, v25, v35

    .line 149
    aget v15, v12, v16

    sub-int v26, v26, v15

    .line 150
    aget v12, v12, v33

    sub-int v27, v27, v12

    add-int/lit8 v17, v17, 0x1

    add-int/lit8 v2, v2, 0x1

    move-object/from16 v15, v34

    goto/16 :goto_f7

    :cond_18e
    move-object/from16 v34, v15

    add-int v18, v18, v11

    add-int/lit8 v10, v10, 0x1

    move-object/from16 v2, v19

    move/from16 v12, v28

    move/from16 v4, v31

    move-object/from16 v9, v32

    goto/16 :goto_6d

    :cond_19e
    move-object/from16 v19, v2

    move/from16 v31, v4

    move-object/from16 v32, v9

    move/from16 v28, v12

    move-object/from16 v34, v15

    const/4 v2, 0x0

    :goto_1a9
    if-ge v2, v11, :cond_2e0

    neg-int v3, v0

    mul-int v4, v3, v11

    move/from16 v21, v5

    move-object/from16 v22, v14

    const/4 v9, 0x0

    const/4 v10, 0x0

    const/4 v12, 0x0

    const/4 v15, 0x0

    const/16 v17, 0x0

    const/16 v18, 0x0

    const/16 v20, 0x0

    move v5, v3

    move v14, v4

    const/4 v3, 0x0

    const/4 v4, 0x0

    :goto_1c0
    if-gt v5, v0, :cond_227

    move/from16 v23, v11

    const/4 v11, 0x0

    .line 160
    invoke-static {v11, v14}, Ljava/lang/Math;->max(II)I

    move-result v24

    add-int v24, v24, v2

    add-int v25, v5, v0

    .line 162
    aget-object v25, v1, v25

    .line 164
    aget v26, v6, v24

    aput v26, v25, v11

    .line 165
    aget v11, v7, v24

    const/16 v16, 0x1

    aput v11, v25, v16

    .line 166
    aget v11, v8, v24

    const/16 v26, 0x2

    aput v11, v25, v26

    .line 168
    invoke-static {v5}, Ljava/lang/Math;->abs(I)I

    move-result v11

    sub-int v11, v13, v11

    .line 170
    aget v26, v6, v24

    mul-int v26, v26, v11

    add-int v3, v3, v26

    .line 171
    aget v26, v7, v24

    mul-int v26, v26, v11

    add-int v4, v4, v26

    .line 172
    aget v24, v8, v24

    mul-int v24, v24, v11

    add-int v9, v9, v24

    if-lez v5, :cond_20b

    const/4 v11, 0x0

    .line 175
    aget v24, v25, v11

    add-int v17, v17, v24

    const/16 v16, 0x1

    .line 176
    aget v24, v25, v16

    add-int v18, v18, v24

    const/16 v24, 0x2

    .line 177
    aget v25, v25, v24

    add-int v20, v20, v25

    goto :goto_21a

    :cond_20b
    const/4 v11, 0x0

    const/16 v16, 0x1

    const/16 v24, 0x2

    .line 179
    aget v26, v25, v11

    add-int v10, v10, v26

    .line 180
    aget v11, v25, v16

    add-int/2addr v12, v11

    .line 181
    aget v11, v25, v24

    add-int/2addr v15, v11

    :goto_21a
    move/from16 v11, v31

    if-ge v5, v11, :cond_220

    add-int v14, v14, v23

    :cond_220
    add-int/lit8 v5, v5, 0x1

    move/from16 v31, v11

    move/from16 v11, v23

    goto :goto_1c0

    :cond_227
    move/from16 v23, v11

    move/from16 v11, v31

    move/from16 v25, v0

    move/from16 v24, v2

    move v5, v4

    move/from16 v14, v28

    move v4, v3

    const/4 v3, 0x0

    :goto_234
    if-ge v3, v14, :cond_2ca

    const/high16 v26, -0x1000000

    .line 192
    aget v27, v22, v24

    and-int v26, v27, v26

    aget v27, v34, v4

    shl-int/lit8 v27, v27, 0x10

    or-int v26, v26, v27

    aget v27, v34, v5

    shl-int/lit8 v27, v27, 0x8

    or-int v26, v26, v27

    aget v27, v34, v9

    or-int v26, v26, v27

    aput v26, v22, v24

    sub-int/2addr v4, v10

    sub-int/2addr v5, v12

    sub-int/2addr v9, v15

    sub-int v26, v25, v0

    add-int v26, v26, v21

    .line 199
    rem-int v26, v26, v21

    aget-object v26, v1, v26

    const/16 v27, 0x0

    .line 201
    aget v28, v26, v27

    sub-int v10, v10, v28

    const/16 v16, 0x1

    .line 202
    aget v27, v26, v16

    sub-int v12, v12, v27

    const/16 v27, 0x2

    .line 203
    aget v28, v26, v27

    sub-int v15, v15, v28

    if-nez v2, :cond_277

    add-int v0, v3, v13

    .line 206
    invoke-static {v0, v11}, Ljava/lang/Math;->min(II)I

    move-result v0

    mul-int v0, v0, v23

    aput v0, v32, v3

    .line 208
    :cond_277
    aget v0, v32, v3

    add-int/2addr v0, v2

    .line 210
    aget v27, v6, v0

    const/16 v28, 0x0

    aput v27, v26, v28

    .line 211
    aget v27, v7, v0

    const/16 v16, 0x1

    aput v27, v26, v16

    .line 212
    aget v0, v8, v0

    const/16 v27, 0x2

    aput v0, v26, v27

    .line 214
    aget v0, v26, v28

    add-int v17, v17, v0

    .line 215
    aget v0, v26, v16

    add-int v18, v18, v0

    .line 216
    aget v0, v26, v27

    add-int v20, v20, v0

    add-int v4, v4, v17

    add-int v5, v5, v18

    add-int v9, v9, v20

    add-int/lit8 v25, v25, 0x1

    .line 222
    rem-int v25, v25, v21

    .line 223
    aget-object v0, v1, v25

    const/16 v26, 0x0

    .line 225
    aget v27, v0, v26

    add-int v10, v10, v27

    const/16 v16, 0x1

    .line 226
    aget v27, v0, v16

    add-int v12, v12, v27

    const/16 v27, 0x2

    .line 227
    aget v28, v0, v27

    add-int v15, v15, v28

    .line 229
    aget v28, v0, v26

    sub-int v17, v17, v28

    .line 230
    aget v28, v0, v16

    sub-int v18, v18, v28

    .line 231
    aget v0, v0, v27

    sub-int v20, v20, v0

    add-int v24, v24, v23

    add-int/lit8 v3, v3, 0x1

    move/from16 v0, p1

    goto/16 :goto_234

    :cond_2ca
    const/16 v16, 0x1

    const/16 v26, 0x0

    const/16 v27, 0x2

    add-int/lit8 v2, v2, 0x1

    move/from16 v0, p1

    move/from16 v31, v11

    move/from16 v28, v14

    move/from16 v5, v21

    move-object/from16 v14, v22

    move/from16 v11, v23

    goto/16 :goto_1a9

    :cond_2e0
    move/from16 v23, v11

    move-object/from16 v22, v14

    move/from16 v14, v28

    const/4 v5, 0x0

    const/4 v7, 0x0

    const/4 v8, 0x0

    move-object/from16 v3, v19

    move-object/from16 v4, v22

    move/from16 v6, v23

    move/from16 v9, v23

    move v10, v14

    .line 237
    invoke-virtual/range {v3 .. v10}, Landroid/graphics/Bitmap;->setPixels([IIIIIII)V

    return-object v19
.end method