Rover12421's Blog

The End.

逆向一个DES算法(smali)

pediy看到有人求分析class,于是下载下来,对于class,我首先想到就是转成smali,看汇编代码,不喜欢jad或jd-gui的源码结果,还不如直接看汇编来的直接.

        把class转成smali的方法很简单,先用dx把class转成dex,再用smali转成smali.这个步骤就不说了.[发布者,后来直接上传了个apk,直接用apktool就能转成smali了].
        代码其实并不复杂,但是要非常细心,一个小的错误就能导致最后调试好几小时.我就因为把"add-int/2addr v1, v4"写成了"v4+=v1",直接导致我浪费5个小时调试,才找到这个笔误啊.
        贴下带smali的代码,如果想学习smali转java,我觉得还是可以作为一个样本的:)...(代码太长了,需要的同学自己复制到eclipse里格式化吧,太不好编辑了...)

package org.rscis.test;

/*
* 从Smali转成java的DES算法
* 可以作为smali学习样本
* @author rover12421
*
/

class DESPlus {

//.class public Lcom/sinovatech/gxmobile/util/DESPlus;
//.super Ljava/lang/Object;
//
//
//# static fields
//.field static final _iip_tab_p:[I = null
static final int[] _iip_tab_p;
//
//.field static final ccom_SSS_p:[[[I = null
static final int[][][] ccom_SSS_p;
//
//.field static final e_r_p:[I = null
static final int[] e_r_p;
//
//.field static final iip_tab_p:[I = null
static final int[] iip_tab_p;
//
//.field static final local_PP:[I = null
static final int[] local_PP;
//
//.field static final ls_countp:[I = null
static final int[] ls_countp;
//
//.field static final pc_1_cp:[I = null
static final int[] pc_1_cp;
//
//.field static final pc_1_dp:[I = null
static final int[] pc_1_dp;
//
//.field static final pc_2p:[I = null
static final int[] pc_2p;
//
//.field private static final strDefaultKey:Ljava/lang/String; = “y1h2z3z4”
private static final String strDefaultKey = “y1h2z3z4”;
//
//
//# instance fields
//.field C:[[B
byte[][] C;
//
//.field D:[[B
byte[][] D;
//
//.field K:[[B
byte[][] K;
//
//.field public digestHexStr:Ljava/lang/String;
public String digestHexStr;
//
//.field private strKey:Ljava/lang/String;
private String strKey;
//
//
//# direct methods
static {
//.method static constructor ()V
// .locals 10
//
// const/4 v9, 0x5
//
// const/4 v8, 0x3
//
// const/4 v7, 0x2
//
// const/4 v6, 0x1
//
// const/4 v5, 0x4
//
// const/16 v0, 0x1c
//
// new-array v0, v0, [I
//
// fill-array-data v0, :array_0
//
// sput-object v0, Lcom/sinovatech/gxmobile/util/DESPlus;->pc_1_cp:[I
pc_1_cp = new int[]{0x39, 0x31, 0x29, 0x21, 0x19, 0x11, 0x9, 0x1, 0x3a, 0x32, 0x2a, 0x22, 0x1a, 0x12, 0xa, 0x2, 0x3b, 0x33, 0x2b, 0x23, 0x1b, 0x13, 0xb, 0x3, 0x3c, 0x34, 0x2c, 0x24};
//
// const/16 v0, 0x1c
//
// new-array v0, v0, [I
//
// fill-array-data v0, :array_1
//
// sput-object v0, Lcom/sinovatech/gxmobile/util/DESPlus;->pc_1_dp:[I
pc_1_dp = new int[]{0x3f, 0x37, 0x2f, 0x27, 0x1f, 0x17, 0xf, 0x7, 0x3e, 0x36, 0x2e, 0x26, 0x1e, 0x16, 0xe, 0x6, 0x3d, 0x35, 0x2d, 0x25, 0x1d, 0x15, 0xd, 0x5, 0x1c, 0x14, 0xc, 0x4};
//
// const/16 v0, 0x30
//
// new-array v0, v0, [I
//
// fill-array-data v0, :array_2
//
// sput-object v0, Lcom/sinovatech/gxmobile/util/DESPlus;->pc_2p:[I
pc_2p = new int[]{0xe, 0x11, 0xb, 0x18, 0x1, 0x5, 0x3, 0x1c, 0xf, 0x6, 0x15, 0xa, 0x17, 0x13, 0xc, 0x4, 0x1a, 0x8, 0x10, 0x7, 0x1b, 0x14, 0xd, 0x2, 0x29, 0x34, 0x1f, 0x25, 0x2f, 0x37, 0x1e, 0x28, 0x33, 0x2d, 0x21, 0x30, 0x2c, 0x31, 0x27, 0x38, 0x22, 0x35, 0x2e, 0x2a, 0x32, 0x24, 0x1d, 0x20};
//
// const/16 v0, 0x10
//
// new-array v0, v0, [I
//
// fill-array-data v0, :array_3
//
// sput-object v0, Lcom/sinovatech/gxmobile/util/DESPlus;->ls_countp:[I
ls_countp = new int[]{0x1, 0x1, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x1, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x1};
//
// const/16 v0, 0x40
//
// new-array v0, v0, [I
//
// fill-array-data v0, :array_4
//
// sput-object v0, Lcom/sinovatech/gxmobile/util/DESPlus;->iip_tab_p:[I
iip_tab_p = new int[]{0x3a, 0x32, 0x2a, 0x22, 0x1a, 0x12, 0xa, 0x2, 0x3c, 0x34, 0x2c, 0x24, 0x1c, 0x14, 0xc, 0x4, 0x3e, 0x36, 0x2e, 0x26, 0x1e, 0x16, 0xe, 0x6, 0x40, 0x38, 0x30, 0x28, 0x20, 0x18, 0x10, 0x8, 0x39, 0x31, 0x29, 0x21, 0x19, 0x11, 0x9, 0x1, 0x3b, 0x33, 0x2b, 0x23, 0x1b, 0x13, 0xb, 0x3, 0x3d, 0x35, 0x2d, 0x25, 0x1d, 0x15, 0xd, 0x5, 0x3f, 0x37, 0x2f, 0x27, 0x1f, 0x17, 0xf, 0x7};
//
// const/16 v0, 0x40
//
// new-array v0, v0, [I
//
// fill-array-data v0, :array_5
//
// sput-object v0, Lcom/sinovatech/gxmobile/util/DESPlus;->_iip_tab_p:[I
_iip_tab_p = new int[]{0x28, 0x8, 0x30, 0x10, 0x38, 0x18, 0x40, 0x20, 0x27, 0x7, 0x2f, 0xf, 0x37, 0x17, 0x3f, 0x1f, 0x26, 0x6, 0x2e, 0xe, 0x36, 0x16, 0x3e, 0x1e, 0x25, 0x5, 0x2d, 0xd, 0x35, 0x15, 0x3d, 0x1d, 0x24, 0x4, 0x2c, 0xc, 0x34, 0x14, 0x3c, 0x1c, 0x23, 0x3, 0x2b, 0xb, 0x33, 0x13, 0x3b, 0x1b, 0x22, 0x2, 0x2a, 0xa, 0x32, 0x12, 0x3a, 0x1a, 0x21, 0x1, 0x29, 0x9, 0x31, 0x11, 0x39, 0x19};
//
// const/16 v0, 0x30
//
// new-array v0, v0, [I
//
// fill-array-data v0, :array_6
//
// sput-object v0, Lcom/sinovatech/gxmobile/util/DESPlus;->e_r_p:[I
e_r_p = new int[]{0x20, 0x1, 0x2, 0x3, 0x4, 0x5, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0x8, 0x9, 0xa, 0xb, 0xc, 0xd, 0xc, 0xd, 0xe, 0xf, 0x10, 0x11, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x1};
//
// const/16 v0, 0x20
//
// new-array v0, v0, [I
//
// fill-array-data v0, :array_7
//
// sput-object v0, Lcom/sinovatech/gxmobile/util/DESPlus;->local_PP:[I
local_PP = new int[]{0x10, 0x7, 0x14, 0x15, 0x1d, 0xc, 0x1c, 0x11, 0x1, 0xf, 0x17, 0x1a, 0x5, 0x12, 0x1f, 0xa, 0x2, 0x8, 0x18, 0xe, 0x20, 0x1b, 0x3, 0x9, 0x13, 0xd, 0x1e, 0x6, 0x16, 0xb, 0x4, 0x19};
//
// const/16 v0, 0x8
//
// new-array v0, v0, [[[I
//
// new-array v1, v5, [[I
//
// const/16 v2, 0x10
//
// new-array v2, v2, [I
//
// const/4 v3, 0x0
//
// const/16 v4, 0xe
//
// aput v4, v2, v3
//
// aput v5, v2, v6
//
// const/16 v3, 0xd
//
// aput v3, v2, v7
//
// aput v6, v2, v8
//
// aput v7, v2, v5
//
// const/16 v3, 0xf
//
// aput v3, v2, v9
//
// const/4 v3, 0x6
//
// const/16 v4, 0xb
//
// aput v4, v2, v3
//
// const/4 v3, 0x7
//
// const/16 v4, 0x8
//
// aput v4, v2, v3
//
// const/16 v3, 0x8
//
// aput v8, v2, v3
//
// const/16 v3, 0x9
//
// const/16 v4, 0xa
//
// aput v4, v2, v3
//
// const/16 v3, 0xa
//
// const/4 v4, 0x6
//
// aput v4, v2, v3
//
// const/16 v3, 0xb
//
// const/16 v4, 0xc
//
// aput v4, v2, v3
//
// const/16 v3, 0xc
//
// aput v9, v2, v3
//
// const/16 v3, 0xd
//
// const/16 v4, 0x9
//
// aput v4, v2, v3
//
// const/16 v3, 0xf
//
// const/4 v4, 0x7
//
// aput v4, v2, v3
//
// const/4 v3, 0x0
//
// aput-object v2, v1, v3
//
// const/16 v2, 0x10
//
// new-array v2, v2, [I
//
// const/16 v3, 0xf
//
// aput v3, v2, v6
//
// const/4 v3, 0x7
//
// aput v3, v2, v7
//
// aput v5, v2, v8
//
// const/16 v3, 0xe
//
// aput v3, v2, v5
//
// aput v7, v2, v9
//
// const/4 v3, 0x6
//
// const/16 v4, 0xd
//
// aput v4, v2, v3
//
// const/4 v3, 0x7
//
// aput v6, v2, v3
//
// const/16 v3, 0x8
//
// const/16 v4, 0xa
//
// aput v4, v2, v3
//
// const/16 v3, 0x9
//
// const/4 v4, 0x6
//
// aput v4, v2, v3
//
// const/16 v3, 0xa
//
// const/16 v4, 0xc
//
// aput v4, v2, v3
//
// const/16 v3, 0xb
//
// const/16 v4, 0xb
//
// aput v4, v2, v3
//
// const/16 v3, 0xc
//
// const/16 v4, 0x9
//
// aput v4, v2, v3
//
// const/16 v3, 0xd
//
// aput v9, v2, v3
//
// const/16 v3, 0xe
//
// aput v8, v2, v3
//
// const/16 v3, 0xf
//
// const/16 v4, 0x8
//
// aput v4, v2, v3
//
// aput-object v2, v1, v6
//
// const/16 v2, 0x10
//
// new-array v2, v2, [I
//
// const/4 v3, 0x0
//
// aput v5, v2, v3
//
// aput v6, v2, v6
//
// const/16 v3, 0xe
//
// aput v3, v2, v7
//
// const/16 v3, 0x8
//
// aput v3, v2, v8
//
// const/16 v3, 0xd
//
// aput v3, v2, v5
//
// const/4 v3, 0x6
//
// aput v3, v2, v9
//
// const/4 v3, 0x6
//
// aput v7, v2, v3
//
// const/4 v3, 0x7
//
// const/16 v4, 0xb
//
// aput v4, v2, v3
//
// const/16 v3, 0x8
//
// const/16 v4, 0xf
//
// aput v4, v2, v3
//
// const/16 v3, 0x9
//
// const/16 v4, 0xc
//
// aput v4, v2, v3
//
// const/16 v3, 0xa
//
// const/16 v4, 0x9
//
// aput v4, v2, v3
//
// const/16 v3, 0xb
//
// const/4 v4, 0x7
//
// aput v4, v2, v3
//
// const/16 v3, 0xc
//
// aput v8, v2, v3
//
// const/16 v3, 0xd
//
// const/16 v4, 0xa
//
// aput v4, v2, v3
//
// const/16 v3, 0xe
//
// aput v9, v2, v3
//
// aput-object v2, v1, v7
//
// const/16 v2, 0x10
//
// new-array v2, v2, [I
//
// const/4 v3, 0x0
//
// const/16 v4, 0xf
//
// aput v4, v2, v3
//
// const/16 v3, 0xc
//
// aput v3, v2, v6
//
// const/16 v3, 0x8
//
// aput v3, v2, v7
//
// aput v7, v2, v8
//
// aput v5, v2, v5
//
// const/16 v3, 0x9
//
// aput v3, v2, v9
//
// const/4 v3, 0x6
//
// aput v6, v2, v3
//
// const/4 v3, 0x7
//
// const/4 v4, 0x7
//
// aput v4, v2, v3
//
// const/16 v3, 0x8
//
// aput v9, v2, v3
//
// const/16 v3, 0x9
//
// const/16 v4, 0xb
//
// aput v4, v2, v3
//
// const/16 v3, 0xa
//
// aput v8, v2, v3
//
// const/16 v3, 0xb
//
// const/16 v4, 0xe
//
// aput v4, v2, v3
//
// const/16 v3, 0xc
//
// const/16 v4, 0xa
//
// aput v4, v2, v3
//
// const/16 v3, 0xe
//
// const/4 v4, 0x6
//
// aput v4, v2, v3
//
// const/16 v3, 0xf
//
// const/16 v4, 0xd
//
// aput v4, v2, v3
//
// aput-object v2, v1, v8
//
// const/4 v2, 0x0
//
// aput-object v1, v0, v2
//
// new-array v1, v5, [[I
//
// const/16 v2, 0x10
//
// new-array v2, v2, [I
//
// const/4 v3, 0x0
//
// const/16 v4, 0xf
//
// aput v4, v2, v3
//
// aput v6, v2, v6
//
// const/16 v3, 0x8
//
// aput v3, v2, v7
//
// const/16 v3, 0xe
//
// aput v3, v2, v8
//
// const/4 v3, 0x6
//
// aput v3, v2, v5
//
// const/16 v3, 0xb
//
// aput v3, v2, v9
//
// const/4 v3, 0x6
//
// aput v8, v2, v3
//
// const/4 v3, 0x7
//
// aput v5, v2, v3
//
// const/16 v3, 0x8
//
// const/16 v4, 0x9
//
// aput v4, v2, v3
//
// const/16 v3, 0x9
//
// const/4 v4, 0x7
//
// aput v4, v2, v3
//
// const/16 v3, 0xa
//
// aput v7, v2, v3
//
// const/16 v3, 0xb
//
// const/16 v4, 0xd
//
// aput v4, v2, v3
//
// const/16 v3, 0xc
//
// const/16 v4, 0xc
//
// aput v4, v2, v3
//
// const/16 v3, 0xe
//
// aput v9, v2, v3
//
// const/16 v3, 0xf
//
// const/16 v4, 0xa
//
// aput v4, v2, v3
//
// const/4 v3, 0x0
//
// aput-object v2, v1, v3
//
// const/16 v2, 0x10
//
// new-array v2, v2, [I
//
// const/4 v3, 0x0
//
// aput v8, v2, v3
//
// const/16 v3, 0xd
//
// aput v3, v2, v6
//
// aput v5, v2, v7
//
// const/4 v3, 0x7
//
// aput v3, v2, v8
//
// const/16 v3, 0xf
//
// aput v3, v2, v5
//
// aput v7, v2, v9
//
// const/4 v3, 0x6
//
// const/16 v4, 0x8
//
// aput v4, v2, v3
//
// const/4 v3, 0x7
//
// const/16 v4, 0xe
//
// aput v4, v2, v3
//
// const/16 v3, 0x8
//
// const/16 v4, 0xc
//
// aput v4, v2, v3
//
// const/16 v3, 0xa
//
// aput v6, v2, v3
//
// const/16 v3, 0xb
//
// const/16 v4, 0xa
//
// aput v4, v2, v3
//
// const/16 v3, 0xc
//
// const/4 v4, 0x6
//
// aput v4, v2, v3
//
// const/16 v3, 0xd
//
// const/16 v4, 0x9
//
// aput v4, v2, v3
//
// const/16 v3, 0xe
//
// const/16 v4, 0xb
//
// aput v4, v2, v3
//
// const/16 v3, 0xf
//
// aput v9, v2, v3
//
// aput-object v2, v1, v6
//
// const/16 v2, 0x10
//
// new-array v2, v2, [I
//
// const/16 v3, 0xe
//
// aput v3, v2, v6
//
// const/4 v3, 0x7
//
// aput v3, v2, v7
//
// const/16 v3, 0xb
//
// aput v3, v2, v8
//
// const/16 v3, 0xa
//
// aput v3, v2, v5
//
// aput v5, v2, v9
//
// const/4 v3, 0x6
//
// const/16 v4, 0xd
//
// aput v4, v2, v3
//
// const/4 v3, 0x7
//
// aput v6, v2, v3
//
// const/16 v3, 0x8
//
// aput v9, v2, v3
//
// const/16 v3, 0x9
//
// const/16 v4, 0x8
//
// aput v4, v2, v3
//
// const/16 v3, 0xa
//
// const/16 v4, 0xc
//
// aput v4, v2, v3
//
// const/16 v3, 0xb
//
// const/4 v4, 0x6
//
// aput v4, v2, v3
//
// const/16 v3, 0xc
//
// const/16 v4, 0x9
//
// aput v4, v2, v3
//
// const/16 v3, 0xd
//
// aput v8, v2, v3
//
// const/16 v3, 0xe
//
// aput v7, v2, v3
//
// const/16 v3, 0xf
//
// const/16 v4, 0xf
//
// aput v4, v2, v3
//
// aput-object v2, v1, v7
//
// const/16 v2, 0x10
//
// new-array v2, v2, [I
//
// const/4 v3, 0x0
//
// const/16 v4, 0xd
//
// aput v4, v2, v3
//
// const/16 v3, 0x8
//
// aput v3, v2, v6
//
// const/16 v3, 0xa
//
// aput v3, v2, v7
//
// aput v6, v2, v8
//
// aput v8, v2, v5
//
// const/16 v3, 0xf
//
// aput v3, v2, v9
//
// const/4 v3, 0x6
//
// aput v5, v2, v3
//
// const/4 v3, 0x7
//
// aput v7, v2, v3
//
// const/16 v3, 0x8
//
// const/16 v4, 0xb
//
// aput v4, v2, v3
//
// const/16 v3, 0x9
//
// const/4 v4, 0x6
//
// aput v4, v2, v3
//
// const/16 v3, 0xa
//
// const/4 v4, 0x7
//
// aput v4, v2, v3
//
// const/16 v3, 0xb
//
// const/16 v4, 0xc
//
// aput v4, v2, v3
//
// const/16 v3, 0xd
//
// aput v9, v2, v3
//
// const/16 v3, 0xe
//
// const/16 v4, 0xe
//
// aput v4, v2, v3
//
// const/16 v3, 0xf
//
// const/16 v4, 0x9
//
// aput v4, v2, v3
//
// aput-object v2, v1, v8
//
// aput-object v1, v0, v6
//
// new-array v1, v5, [[I
//
// const/16 v2, 0x10
//
// new-array v2, v2, [I
//
// const/4 v3, 0x0
//
// const/16 v4, 0xa
//
// aput v4, v2, v3
//
// const/16 v3, 0x9
//
// aput v3, v2, v7
//
// const/16 v3, 0xe
//
// aput v3, v2, v8
//
// const/4 v3, 0x6
//
// aput v3, v2, v5
//
// aput v8, v2, v9
//
// const/4 v3, 0x6
//
// const/16 v4, 0xf
//
// aput v4, v2, v3
//
// const/4 v3, 0x7
//
// aput v9, v2, v3
//
// const/16 v3, 0x8
//
// aput v6, v2, v3
//
// const/16 v3, 0x9
//
// const/16 v4, 0xd
//
// aput v4, v2, v3
//
// const/16 v3, 0xa
//
// const/16 v4, 0xc
//
// aput v4, v2, v3
//
// const/16 v3, 0xb
//
// const/4 v4, 0x7
//
// aput v4, v2, v3
//
// const/16 v3, 0xc
//
// const/16 v4, 0xb
//
// aput v4, v2, v3
//
// const/16 v3, 0xd
//
// aput v5, v2, v3
//
// const/16 v3, 0xe
//
// aput v7, v2, v3
//
// const/16 v3, 0xf
//
// const/16 v4, 0x8
//
// aput v4, v2, v3
//
// const/4 v3, 0x0
//
// aput-object v2, v1, v3
//
// const/16 v2, 0x10
//
// new-array v2, v2, [I
//
// const/4 v3, 0x0
//
// const/16 v4, 0xd
//
// aput v4, v2, v3
//
// const/4 v3, 0x7
//
// aput v3, v2, v6
//
// const/16 v3, 0x9
//
// aput v3, v2, v8
//
// aput v8, v2, v5
//
// aput v5, v2, v9
//
// const/4 v3, 0x6
//
// const/4 v4, 0x6
//
// aput v4, v2, v3
//
// const/4 v3, 0x7
//
// const/16 v4, 0xa
//
// aput v4, v2, v3
//
// const/16 v3, 0x8
//
// aput v7, v2, v3
//
// const/16 v3, 0x9
//
// const/16 v4, 0x8
//
// aput v4, v2, v3
//
// const/16 v3, 0xa
//
// aput v9, v2, v3
//
// const/16 v3, 0xb
//
// const/16 v4, 0xe
//
// aput v4, v2, v3
//
// const/16 v3, 0xc
//
// const/16 v4, 0xc
//
// aput v4, v2, v3
//
// const/16 v3, 0xd
//
// const/16 v4, 0xb
//
// aput v4, v2, v3
//
// const/16 v3, 0xe
//
// const/16 v4, 0xf
//
// aput v4, v2, v3
//
// const/16 v3, 0xf
//
// aput v6, v2, v3
//
// aput-object v2, v1, v6
//
// const/16 v2, 0x10
//
// new-array v2, v2, [I
//
// const/4 v3, 0x0
//
// const/16 v4, 0xd
//
// aput v4, v2, v3
//
// const/4 v3, 0x6
//
// aput v3, v2, v6
//
// aput v5, v2, v7
//
// const/16 v3, 0x9
//
// aput v3, v2, v8
//
// const/16 v3, 0x8
//
// aput v3, v2, v5
//
// const/16 v3, 0xf
//
// aput v3, v2, v9
//
// const/4 v3, 0x6
//
// aput v8, v2, v3
//
// const/16 v3, 0x8
//
// const/16 v4, 0xb
//
// aput v4, v2, v3
//
// const/16 v3, 0x9
//
// aput v6, v2, v3
//
// const/16 v3, 0xa
//
// aput v7, v2, v3
//
// const/16 v3, 0xb
//
// const/16 v4, 0xc
//
// aput v4, v2, v3
//
// const/16 v3, 0xc
//
// aput v9, v2, v3
//
// const/16 v3, 0xd
//
// const/16 v4, 0xa
//
// aput v4, v2, v3
//
// const/16 v3, 0xe
//
// const/16 v4, 0xe
//
// aput v4, v2, v3
//
// const/16 v3, 0xf
//
// const/4 v4, 0x7
//
// aput v4, v2, v3
//
// aput-object v2, v1, v7
//
// const/16 v2, 0x10
//
// new-array v2, v2, [I
//
// const/4 v3, 0x0
//
// aput v6, v2, v3
//
// const/16 v3, 0xa
//
// aput v3, v2, v6
//
// const/16 v3, 0xd
//
// aput v3, v2, v7
//
// const/4 v3, 0x6
//
// aput v3, v2, v5
//
// const/16 v3, 0x9
//
// aput v3, v2, v9
//
// const/4 v3, 0x6
//
// const/16 v4, 0x8
//
// aput v4, v2, v3
//
// const/4 v3, 0x7
//
// const/4 v4, 0x7
//
// aput v4, v2, v3
//
// const/16 v3, 0x8
//
// aput v5, v2, v3
//
// const/16 v3, 0x9
//
// const/16 v4, 0xf
//
// aput v4, v2, v3
//
// const/16 v3, 0xa
//
// const/16 v4, 0xe
//
// aput v4, v2, v3
//
// const/16 v3, 0xb
//
// aput v8, v2, v3
//
// const/16 v3, 0xc
//
// const/16 v4, 0xb
//
// aput v4, v2, v3
//
// const/16 v3, 0xd
//
// aput v9, v2, v3
//
// const/16 v3, 0xe
//
// aput v7, v2, v3
//
// const/16 v3, 0xf
//
// const/16 v4, 0xc
//
// aput v4, v2, v3
//
// aput-object v2, v1, v8
//
// aput-object v1, v0, v7
//
// new-array v1, v5, [[I
//
// const/16 v2, 0x10
//
// new-array v2, v2, [I
//
// const/4 v3, 0x0
//
// const/4 v4, 0x7
//
// aput v4, v2, v3
//
// const/16 v3, 0xd
//
// aput v3, v2, v6
//
// const/16 v3, 0xe
//
// aput v3, v2, v7
//
// aput v8, v2, v8
//
// const/4 v3, 0x6
//
// aput v3, v2, v9
//
// const/4 v3, 0x6
//
// const/16 v4, 0x9
//
// aput v4, v2, v3
//
// const/4 v3, 0x7
//
// const/16 v4, 0xa
//
// aput v4, v2, v3
//
// const/16 v3, 0x8
//
// aput v6, v2, v3
//
// const/16 v3, 0x9
//
// aput v7, v2, v3
//
// const/16 v3, 0xa
//
// const/16 v4, 0x8
//
// aput v4, v2, v3
//
// const/16 v3, 0xb
//
// aput v9, v2, v3
//
// const/16 v3, 0xc
//
// const/16 v4, 0xb
//
// aput v4, v2, v3
//
// const/16 v3, 0xd
//
// const/16 v4, 0xc
//
// aput v4, v2, v3
//
// const/16 v3, 0xe
//
// aput v5, v2, v3
//
// const/16 v3, 0xf
//
// const/16 v4, 0xf
//
// aput v4, v2, v3
//
// const/4 v3, 0x0
//
// aput-object v2, v1, v3
//
// const/16 v2, 0x10
//
// new-array v2, v2, [I
//
// const/4 v3, 0x0
//
// const/16 v4, 0xd
//
// aput v4, v2, v3
//
// const/16 v3, 0x8
//
// aput v3, v2, v6
//
// const/16 v3, 0xb
//
// aput v3, v2, v7
//
// aput v9, v2, v8
//
// const/4 v3, 0x6
//
// aput v3, v2, v5
//
// const/16 v3, 0xf
//
// aput v3, v2, v9
//
// const/4 v3, 0x7
//
// aput v8, v2, v3
//
// const/16 v3, 0x8
//
// aput v5, v2, v3
//
// const/16 v3, 0x9
//
// const/4 v4, 0x7
//
// aput v4, v2, v3
//
// const/16 v3, 0xa
//
// aput v7, v2, v3
//
// const/16 v3, 0xb
//
// const/16 v4, 0xc
//
// aput v4, v2, v3
//
// const/16 v3, 0xc
//
// aput v6, v2, v3
//
// const/16 v3, 0xd
//
// const/16 v4, 0xa
//
// aput v4, v2, v3
//
// const/16 v3, 0xe
//
// const/16 v4, 0xe
//
// aput v4, v2, v3
//
// const/16 v3, 0xf
//
// const/16 v4, 0x9
//
// aput v4, v2, v3
//
// aput-object v2, v1, v6
//
// const/16 v2, 0x10
//
// new-array v2, v2, [I
//
// const/4 v3, 0x0
//
// const/16 v4, 0xa
//
// aput v4, v2, v3
//
// const/4 v3, 0x6
//
// aput v3, v2, v6
//
// const/16 v3, 0x9
//
// aput v3, v2, v7
//
// const/16 v3, 0xc
//
// aput v3, v2, v5
//
// const/16 v3, 0xb
//
// aput v3, v2, v9
//
// const/4 v3, 0x6
//
// const/4 v4, 0x7
//
// aput v4, v2, v3
//
// const/4 v3, 0x7
//
// const/16 v4, 0xd
//
// aput v4, v2, v3
//
// const/16 v3, 0x8
//
// const/16 v4, 0xf
//
// aput v4, v2, v3
//
// const/16 v3, 0x9
//
// aput v6, v2, v3
//
// const/16 v3, 0xa
//
// aput v8, v2, v3
//
// const/16 v3, 0xb
//
// const/16 v4, 0xe
//
// aput v4, v2, v3
//
// const/16 v3, 0xc
//
// aput v9, v2, v3
//
// const/16 v3, 0xd
//
// aput v7, v2, v3
//
// const/16 v3, 0xe
//
// const/16 v4, 0x8
//
// aput v4, v2, v3
//
// const/16 v3, 0xf
//
// aput v5, v2, v3
//
// aput-object v2, v1, v7
//
// const/16 v2, 0x10
//
// new-array v2, v2, [I
//
// const/4 v3, 0x0
//
// aput v8, v2, v3
//
// const/16 v3, 0xf
//
// aput v3, v2, v6
//
// const/4 v3, 0x6
//
// aput v3, v2, v8
//
// const/16 v3, 0xa
//
// aput v3, v2, v5
//
// aput v6, v2, v9
//
// const/4 v3, 0x6
//
// const/16 v4, 0xd
//
// aput v4, v2, v3
//
// const/4 v3, 0x7
//
// const/16 v4, 0x8
//
// aput v4, v2, v3
//
// const/16 v3, 0x8
//
// const/16 v4, 0x9
//
// aput v4, v2, v3
//
// const/16 v3, 0x9
//
// aput v5, v2, v3
//
// const/16 v3, 0xa
//
// aput v9, v2, v3
//
// const/16 v3, 0xb
//
// const/16 v4, 0xb
//
// aput v4, v2, v3
//
// const/16 v3, 0xc
//
// const/16 v4, 0xc
//
// aput v4, v2, v3
//
// const/16 v3, 0xd
//
// const/4 v4, 0x7
//
// aput v4, v2, v3
//
// const/16 v3, 0xe
//
// aput v7, v2, v3
//
// const/16 v3, 0xf
//
// const/16 v4, 0xe
//
// aput v4, v2, v3
//
// aput-object v2, v1, v8
//
// aput-object v1, v0, v8
//
// new-array v1, v5, [[I
//
// const/16 v2, 0x10
//
// new-array v2, v2, [I
//
// const/4 v3, 0x0
//
// aput v7, v2, v3
//
// const/16 v3, 0xc
//
// aput v3, v2, v6
//
// aput v5, v2, v7
//
// aput v6, v2, v8
//
// const/4 v3, 0x7
//
// aput v3, v2, v5
//
// const/16 v3, 0xa
//
// aput v3, v2, v9
//
// const/4 v3, 0x6
//
// const/16 v4, 0xb
//
// aput v4, v2, v3
//
// const/4 v3, 0x7
//
// const/4 v4, 0x6
//
// aput v4, v2, v3
//
// const/16 v3, 0x8
//
// const/16 v4, 0x8
//
// aput v4, v2, v3
//
// const/16 v3, 0x9
//
// aput v9, v2, v3
//
// const/16 v3, 0xa
//
// aput v8, v2, v3
//
// const/16 v3, 0xb
//
// const/16 v4, 0xf
//
// aput v4, v2, v3
//
// const/16 v3, 0xc
//
// const/16 v4, 0xd
//
// aput v4, v2, v3
//
// const/16 v3, 0xe
//
// const/16 v4, 0xe
//
// aput v4, v2, v3
//
// const/16 v3, 0xf
//
// const/16 v4, 0x9
//
// aput v4, v2, v3
//
// const/4 v3, 0x0
//
// aput-object v2, v1, v3
//
// const/16 v2, 0x10
//
// new-array v2, v2, [I
//
// const/4 v3, 0x0
//
// const/16 v4, 0xe
//
// aput v4, v2, v3
//
// const/16 v3, 0xb
//
// aput v3, v2, v6
//
// aput v7, v2, v7
//
// const/16 v3, 0xc
//
// aput v3, v2, v8
//
// aput v5, v2, v5
//
// const/4 v3, 0x7
//
// aput v3, v2, v9
//
// const/4 v3, 0x6
//
// const/16 v4, 0xd
//
// aput v4, v2, v3
//
// const/4 v3, 0x7
//
// aput v6, v2, v3
//
// const/16 v3, 0x8
//
// aput v9, v2, v3
//
// const/16 v3, 0xa
//
// const/16 v4, 0xf
//
// aput v4, v2, v3
//
// const/16 v3, 0xb
//
// const/16 v4, 0xa
//
// aput v4, v2, v3
//
// const/16 v3, 0xc
//
// aput v8, v2, v3
//
// const/16 v3, 0xd
//
// const/16 v4, 0x9
//
// aput v4, v2, v3
//
// const/16 v3, 0xe
//
// const/16 v4, 0x8
//
// aput v4, v2, v3
//
// const/16 v3, 0xf
//
// const/4 v4, 0x6
//
// aput v4, v2, v3
//
// aput-object v2, v1, v6
//
// const/16 v2, 0x10
//
// new-array v2, v2, [I
//
// const/4 v3, 0x0
//
// aput v5, v2, v3
//
// aput v7, v2, v6
//
// aput v6, v2, v7
//
// const/16 v3, 0xb
//
// aput v3, v2, v8
//
// const/16 v3, 0xa
//
// aput v3, v2, v5
//
// const/16 v3, 0xd
//
// aput v3, v2, v9
//
// const/4 v3, 0x6
//
// const/4 v4, 0x7
//
// aput v4, v2, v3
//
// const/4 v3, 0x7
//
// const/16 v4, 0x8
//
// aput v4, v2, v3
//
// const/16 v3, 0x8
//
// const/16 v4, 0xf
//
// aput v4, v2, v3
//
// const/16 v3, 0x9
//
// const/16 v4, 0x9
//
// aput v4, v2, v3
//
// const/16 v3, 0xa
//
// const/16 v4, 0xc
//
// aput v4, v2, v3
//
// const/16 v3, 0xb
//
// aput v9, v2, v3
//
// const/16 v3, 0xc
//
// const/4 v4, 0x6
//
// aput v4, v2, v3
//
// const/16 v3, 0xd
//
// aput v8, v2, v3
//
// const/16 v3, 0xf
//
// const/16 v4, 0xe
//
// aput v4, v2, v3
//
// aput-object v2, v1, v7
//
// const/16 v2, 0x10
//
// new-array v2, v2, [I
//
// const/4 v3, 0x0
//
// const/16 v4, 0xb
//
// aput v4, v2, v3
//
// const/16 v3, 0x8
//
// aput v3, v2, v6
//
// const/16 v3, 0xc
//
// aput v3, v2, v7
//
// const/4 v3, 0x7
//
// aput v3, v2, v8
//
// aput v6, v2, v5
//
// const/16 v3, 0xe
//
// aput v3, v2, v9
//
// const/4 v3, 0x6
//
// aput v7, v2, v3
//
// const/4 v3, 0x7
//
// const/16 v4, 0xd
//
// aput v4, v2, v3
//
// const/16 v3, 0x8
//
// const/4 v4, 0x6
//
// aput v4, v2, v3
//
// const/16 v3, 0x9
//
// const/16 v4, 0xf
//
// aput v4, v2, v3
//
// const/16 v3, 0xb
//
// const/16 v4, 0x9
//
// aput v4, v2, v3
//
// const/16 v3, 0xc
//
// const/16 v4, 0xa
//
// aput v4, v2, v3
//
// const/16 v3, 0xd
//
// aput v5, v2, v3
//
// const/16 v3, 0xe
//
// aput v9, v2, v3
//
// const/16 v3, 0xf
//
// aput v8, v2, v3
//
// aput-object v2, v1, v8
//
// aput-object v1, v0, v5
//
// new-array v1, v5, [[I
//
// const/16 v2, 0x10
//
// new-array v2, v2, [I
//
// const/4 v3, 0x0
//
// const/16 v4, 0xc
//
// aput v4, v2, v3
//
// aput v6, v2, v6
//
// const/16 v3, 0xa
//
// aput v3, v2, v7
//
// const/16 v3, 0xf
//
// aput v3, v2, v8
//
// const/16 v3, 0x9
//
// aput v3, v2, v5
//
// aput v7, v2, v9
//
// const/4 v3, 0x6
//
// const/4 v4, 0x6
//
// aput v4, v2, v3
//
// const/4 v3, 0x7
//
// const/16 v4, 0x8
//
// aput v4, v2, v3
//
// const/16 v3, 0x9
//
// const/16 v4, 0xd
//
// aput v4, v2, v3
//
// const/16 v3, 0xa
//
// aput v8, v2, v3
//
// const/16 v3, 0xb
//
// aput v5, v2, v3
//
// const/16 v3, 0xc
//
// const/16 v4, 0xe
//
// aput v4, v2, v3
//
// const/16 v3, 0xd
//
// const/4 v4, 0x7
//
// aput v4, v2, v3
//
// const/16 v3, 0xe
//
// aput v9, v2, v3
//
// const/16 v3, 0xf
//
// const/16 v4, 0xb
//
// aput v4, v2, v3
//
// const/4 v3, 0x0
//
// aput-object v2, v1, v3
//
// const/16 v2, 0x10
//
// new-array v2, v2, [I
//
// const/4 v3, 0x0
//
// const/16 v4, 0xa
//
// aput v4, v2, v3
//
// const/16 v3, 0xf
//
// aput v3, v2, v6
//
// aput v5, v2, v7
//
// aput v7, v2, v8
//
// const/4 v3, 0x7
//
// aput v3, v2, v5
//
// const/16 v3, 0xc
//
// aput v3, v2, v9
//
// const/4 v3, 0x6
//
// const/16 v4, 0x9
//
// aput v4, v2, v3
//
// const/4 v3, 0x7
//
// aput v9, v2, v3
//
// const/16 v3, 0x8
//
// const/4 v4, 0x6
//
// aput v4, v2, v3
//
// const/16 v3, 0x9
//
// aput v6, v2, v3
//
// const/16 v3, 0xa
//
// const/16 v4, 0xd
//
// aput v4, v2, v3
//
// const/16 v3, 0xb
//
// const/16 v4, 0xe
//
// aput v4, v2, v3
//
// const/16 v3, 0xd
//
// const/16 v4, 0xb
//
// aput v4, v2, v3
//
// const/16 v3, 0xe
//
// aput v8, v2, v3
//
// const/16 v3, 0xf
//
// const/16 v4, 0x8
//
// aput v4, v2, v3
//
// aput-object v2, v1, v6
//
// const/16 v2, 0x10
//
// new-array v2, v2, [I
//
// const/4 v3, 0x0
//
// const/16 v4, 0x9
//
// aput v4, v2, v3
//
// const/16 v3, 0xe
//
// aput v3, v2, v6
//
// const/16 v3, 0xf
//
// aput v3, v2, v7
//
// aput v9, v2, v8
//
// aput v7, v2, v5
//
// const/16 v3, 0x8
//
// aput v3, v2, v9
//
// const/4 v3, 0x6
//
// const/16 v4, 0xc
//
// aput v4, v2, v3
//
// const/4 v3, 0x7
//
// aput v8, v2, v3
//
// const/16 v3, 0x8
//
// const/4 v4, 0x7
//
// aput v4, v2, v3
//
// const/16 v3, 0xa
//
// aput v5, v2, v3
//
// const/16 v3, 0xb
//
// const/16 v4, 0xa
//
// aput v4, v2, v3
//
// const/16 v3, 0xc
//
// aput v6, v2, v3
//
// const/16 v3, 0xd
//
// const/16 v4, 0xd
//
// aput v4, v2, v3
//
// const/16 v3, 0xe
//
// const/16 v4, 0xb
//
// aput v4, v2, v3
//
// const/16 v3, 0xf
//
// const/4 v4, 0x6
//
// aput v4, v2, v3
//
// aput-object v2, v1, v7
//
// const/16 v2, 0x10
//
// new-array v2, v2, [I
//
// const/4 v3, 0x0
//
// aput v5, v2, v3
//
// aput v8, v2, v6
//
// aput v7, v2, v7
//
// const/16 v3, 0xc
//
// aput v3, v2, v8
//
// const/16 v3, 0x9
//
// aput v3, v2, v5
//
// aput v9, v2, v9
//
// const/4 v3, 0x6
//
// const/16 v4, 0xf
//
// aput v4, v2, v3
//
// const/4 v3, 0x7
//
// const/16 v4, 0xa
//
// aput v4, v2, v3
//
// const/16 v3, 0x8
//
// const/16 v4, 0xb
//
// aput v4, v2, v3
//
// const/16 v3, 0x9
//
// const/16 v4, 0xe
//
// aput v4, v2, v3
//
// const/16 v3, 0xa
//
// aput v6, v2, v3
//
// const/16 v3, 0xb
//
// const/4 v4, 0x7
//
// aput v4, v2, v3
//
// const/16 v3, 0xc
//
// const/4 v4, 0x6
//
// aput v4, v2, v3
//
// const/16 v3, 0xe
//
// const/16 v4, 0x8
//
// aput v4, v2, v3
//
// const/16 v3, 0xf
//
// const/16 v4, 0xd
//
// aput v4, v2, v3
//
// aput-object v2, v1, v8
//
// aput-object v1, v0, v9
//
// new-array v1, v5, [[I
//
// const/16 v2, 0x10
//
// new-array v2, v2, [I
//
// const/4 v3, 0x0
//
// aput v5, v2, v3
//
// const/16 v3, 0xb
//
// aput v3, v2, v6
//
// aput v7, v2, v7
//
// const/16 v3, 0xe
//
// aput v3, v2, v8
//
// const/16 v3, 0xf
//
// aput v3, v2, v5
//
// const/4 v3, 0x6
//
// const/16 v4, 0x8
//
// aput v4, v2, v3
//
// const/4 v3, 0x7
//
// const/16 v4, 0xd
//
// aput v4, v2, v3
//
// const/16 v3, 0x8
//
// aput v8, v2, v3
//
// const/16 v3, 0x9
//
// const/16 v4, 0xc
//
// aput v4, v2, v3
//
// const/16 v3, 0xa
//
// const/16 v4, 0x9
//
// aput v4, v2, v3
//
// const/16 v3, 0xb
//
// const/4 v4, 0x7
//
// aput v4, v2, v3
//
// const/16 v3, 0xc
//
// aput v9, v2, v3
//
// const/16 v3, 0xd
//
// const/16 v4, 0xa
//
// aput v4, v2, v3
//
// const/16 v3, 0xe
//
// const/4 v4, 0x6
//
// aput v4, v2, v3
//
// const/16 v3, 0xf
//
// aput v6, v2, v3
//
// const/4 v3, 0x0
//
// aput-object v2, v1, v3
//
// const/16 v2, 0x10
//
// new-array v2, v2, [I
//
// const/4 v3, 0x0
//
// const/16 v4, 0xd
//
// aput v4, v2, v3
//
// const/16 v3, 0xb
//
// aput v3, v2, v7
//
// const/4 v3, 0x7
//
// aput v3, v2, v8
//
// aput v5, v2, v5
//
// const/16 v3, 0x9
//
// aput v3, v2, v9
//
// const/4 v3, 0x6
//
// aput v6, v2, v3
//
// const/4 v3, 0x7
//
// const/16 v4, 0xa
//
// aput v4, v2, v3
//
// const/16 v3, 0x8
//
// const/16 v4, 0xe
//
// aput v4, v2, v3
//
// const/16 v3, 0x9
//
// aput v8, v2, v3
//
// const/16 v3, 0xa
//
// aput v9, v2, v3
//
// const/16 v3, 0xb
//
// const/16 v4, 0xc
//
// aput v4, v2, v3
//
// const/16 v3, 0xc
//
// aput v7, v2, v3
//
// const/16 v3, 0xd
//
// const/16 v4, 0xf
//
// aput v4, v2, v3
//
// const/16 v3, 0xe
//
// const/16 v4, 0x8
//
// aput v4, v2, v3
//
// const/16 v3, 0xf
//
// const/4 v4, 0x6
//
// aput v4, v2, v3
//
// aput-object v2, v1, v6
//
// const/16 v2, 0x10
//
// new-array v2, v2, [I
//
// const/4 v3, 0x0
//
// aput v6, v2, v3
//
// aput v5, v2, v6
//
// const/16 v3, 0xb
//
// aput v3, v2, v7
//
// const/16 v3, 0xd
//
// aput v3, v2, v8
//
// const/16 v3, 0xc
//
// aput v3, v2, v5
//
// aput v8, v2, v9
//
// const/4 v3, 0x6
//
// const/4 v4, 0x7
//
// aput v4, v2, v3
//
// const/4 v3, 0x7
//
// const/16 v4, 0xe
//
// aput v4, v2, v3
//
// const/16 v3, 0x8
//
// const/16 v4, 0xa
//
// aput v4, v2, v3
//
// const/16 v3, 0x9
//
// const/16 v4, 0xf
//
// aput v4, v2, v3
//
// const/16 v3, 0xa
//
// const/4 v4, 0x6
//
// aput v4, v2, v3
//
// const/16 v3, 0xb
//
// const/16 v4, 0x8
//
// aput v4, v2, v3
//
// const/16 v3, 0xd
//
// aput v9, v2, v3
//
// const/16 v3, 0xe
//
// const/16 v4, 0x9
//
// aput v4, v2, v3
//
// const/16 v3, 0xf
//
// aput v7, v2, v3
//
// aput-object v2, v1, v7
//
// const/16 v2, 0x10
//
// new-array v2, v2, [I
//
// const/4 v3, 0x0
//
// const/4 v4, 0x6
//
// aput v4, v2, v3
//
// const/16 v3, 0xb
//
// aput v3, v2, v6
//
// const/16 v3, 0xd
//
// aput v3, v2, v7
//
// const/16 v3, 0x8
//
// aput v3, v2, v8
//
// aput v6, v2, v5
//
// aput v5, v2, v9
//
// const/4 v3, 0x6
//
// const/16 v4, 0xa
//
// aput v4, v2, v3
//
// const/4 v3, 0x7
//
// const/4 v4, 0x7
//
// aput v4, v2, v3
//
// const/16 v3, 0x8
//
// const/16 v4, 0x9
//
// aput v4, v2, v3
//
// const/16 v3, 0x9
//
// aput v9, v2, v3
//
// const/16 v3, 0xb
//
// const/16 v4, 0xf
//
// aput v4, v2, v3
//
// const/16 v3, 0xc
//
// const/16 v4, 0xe
//
// aput v4, v2, v3
//
// const/16 v3, 0xd
//
// aput v7, v2, v3
//
// const/16 v3, 0xe
//
// aput v8, v2, v3
//
// const/16 v3, 0xf
//
// const/16 v4, 0xc
//
// aput v4, v2, v3
//
// aput-object v2, v1, v8
//
// const/4 v2, 0x6
//
// aput-object v1, v0, v2
//
// new-array v1, v5, [[I
//
// const/16 v2, 0x10
//
// new-array v2, v2, [I
//
// const/4 v3, 0x0
//
// const/16 v4, 0xd
//
// aput v4, v2, v3
//
// aput v7, v2, v6
//
// const/16 v3, 0x8
//
// aput v3, v2, v7
//
// aput v5, v2, v8
//
// const/4 v3, 0x6
//
// aput v3, v2, v5
//
// const/16 v3, 0xf
//
// aput v3, v2, v9
//
// const/4 v3, 0x6
//
// const/16 v4, 0xb
//
// aput v4, v2, v3
//
// const/4 v3, 0x7
//
// aput v6, v2, v3
//
// const/16 v3, 0x8
//
// const/16 v4, 0xa
//
// aput v4, v2, v3
//
// const/16 v3, 0x9
//
// const/16 v4, 0x9
//
// aput v4, v2, v3
//
// const/16 v3, 0xa
//
// aput v8, v2, v3
//
// const/16 v3, 0xb
//
// const/16 v4, 0xe
//
// aput v4, v2, v3
//
// const/16 v3, 0xc
//
// aput v9, v2, v3
//
// const/16 v3, 0xe
//
// const/16 v4, 0xc
//
// aput v4, v2, v3
//
// const/16 v3, 0xf
//
// const/4 v4, 0x7
//
// aput v4, v2, v3
//
// const/4 v3, 0x0
//
// aput-object v2, v1, v3
//
// const/16 v2, 0x10
//
// new-array v2, v2, [I
//
// const/4 v3, 0x0
//
// aput v6, v2, v3
//
// const/16 v3, 0xf
//
// aput v3, v2, v6
//
// const/16 v3, 0xd
//
// aput v3, v2, v7
//
// const/16 v3, 0x8
//
// aput v3, v2, v8
//
// const/16 v3, 0xa
//
// aput v3, v2, v5
//
// aput v8, v2, v9
//
// const/4 v3, 0x6
//
// const/4 v4, 0x7
//
// aput v4, v2, v3
//
// const/4 v3, 0x7
//
// aput v5, v2, v3
//
// const/16 v3, 0x8
//
// const/16 v4, 0xc
//
// aput v4, v2, v3
//
// const/16 v3, 0x9
//
// aput v9, v2, v3
//
// const/16 v3, 0xa
//
// const/4 v4, 0x6
//
// aput v4, v2, v3
//
// const/16 v3, 0xb
//
// const/16 v4, 0xb
//
// aput v4, v2, v3
//
// const/16 v3, 0xd
//
// const/16 v4, 0xe
//
// aput v4, v2, v3
//
// const/16 v3, 0xe
//
// const/16 v4, 0x9
//
// aput v4, v2, v3
//
// const/16 v3, 0xf
//
// aput v7, v2, v3
//
// aput-object v2, v1, v6
//
// const/16 v2, 0x10
//
// new-array v2, v2, [I
//
// const/4 v3, 0x0
//
// const/4 v4, 0x7
//
// aput v4, v2, v3
//
// const/16 v3, 0xb
//
// aput v3, v2, v6
//
// aput v5, v2, v7
//
// aput v6, v2, v8
//
// const/16 v3, 0x9
//
// aput v3, v2, v5
//
// const/16 v3, 0xc
//
// aput v3, v2, v9
//
// const/4 v3, 0x6
//
// const/16 v4, 0xe
//
// aput v4, v2, v3
//
// const/4 v3, 0x7
//
// aput v7, v2, v3
//
// const/16 v3, 0x9
//
// const/4 v4, 0x6
//
// aput v4, v2, v3
//
// const/16 v3, 0xa
//
// const/16 v4, 0xa
//
// aput v4, v2, v3
//
// const/16 v3, 0xb
//
// const/16 v4, 0xd
//
// aput v4, v2, v3
//
// const/16 v3, 0xc
//
// const/16 v4, 0xf
//
// aput v4, v2, v3
//
// const/16 v3, 0xd
//
// aput v8, v2, v3
//
// const/16 v3, 0xe
//
// aput v9, v2, v3
//
// const/16 v3, 0xf
//
// const/16 v4, 0x8
//
// aput v4, v2, v3
//
// aput-object v2, v1, v7
//
// const/16 v2, 0x10
//
// new-array v2, v2, [I
//
// const/4 v3, 0x0
//
// aput v7, v2, v3
//
// aput v6, v2, v6
//
// const/16 v3, 0xe
//
// aput v3, v2, v7
//
// const/4 v3, 0x7
//
// aput v3, v2, v8
//
// aput v5, v2, v5
//
// const/16 v3, 0xa
//
// aput v3, v2, v9
//
// const/4 v3, 0x6
//
// const/16 v4, 0x8
//
// aput v4, v2, v3
//
// const/4 v3, 0x7
//
// const/16 v4, 0xd
//
// aput v4, v2, v3
//
// const/16 v3, 0x8
//
// const/16 v4, 0xf
//
// aput v4, v2, v3
//
// const/16 v3, 0x9
//
// const/16 v4, 0xc
//
// aput v4, v2, v3
//
// const/16 v3, 0xa
//
// const/16 v4, 0x9
//
// aput v4, v2, v3
//
// const/16 v3, 0xc
//
// aput v8, v2, v3
//
// const/16 v3, 0xd
//
// aput v9, v2, v3
//
// const/16 v3, 0xe
//
// const/4 v4, 0x6
//
// aput v4, v2, v3
//
// const/16 v3, 0xf
//
// const/16 v4, 0xb
//
// aput v4, v2, v3
//
// aput-object v2, v1, v8
//
// const/4 v2, 0x7
//
// aput-object v1, v0, v2
//
// sput-object v0, Lcom/sinovatech/gxmobile/util/DESPlus;->ccom_SSS_p:[[[I
ccom_SSS_p = new int[][][]{
{
{0xe, 0x4, 0xd, 0x1, 0x2, 0xf, 0xb, 0x8, 0x3, 0xa, 0x6, 0xc, 0x5, 0x9, 0x0, 0x7},
{0x0, 0xf, 0x7, 0x4, 0xe, 0x2, 0xd, 0x1, 0xa, 0x6, 0xc, 0xb, 0x9, 0x5, 0x3, 0x8},
{0x4, 0x1, 0xe, 0x8, 0xd, 0x6, 0x2, 0xb, 0xf, 0xc, 0x9, 0x7, 0x3, 0xa, 0x5, 0x0},
{0xf, 0xc, 0x8, 0x2, 0x4, 0x9, 0x1, 0x7, 0x5, 0xb, 0x3, 0xe, 0xa, 0x0, 0x6, 0xd}
},
{
{0xf, 0x1, 0x8, 0xe, 0x6, 0xb, 0x3, 0x4, 0x9, 0x7, 0x2, 0xd, 0xc, 0x0, 0x5, 0xa},
{0x3, 0xd, 0x4, 0x7, 0xf, 0x2, 0x8, 0xe, 0xc, 0x0, 0x1, 0xa, 0x6, 0x9, 0xb, 0x5},
{0x0, 0xe, 0x7, 0xb, 0xa, 0x4, 0xd, 0x1, 0x5, 0x8, 0xc, 0x6, 0x9, 0x3, 0x2, 0xf},
{0xd, 0x8, 0xa, 0x1, 0x3, 0xf, 0x4, 0x2, 0xb, 0x6, 0x7, 0xc, 0x0, 0x5, 0xe, 0x9}
},
{
{0xa, 0x0, 0x9, 0xe, 0x6, 0x3, 0xf, 0x5, 0x1, 0xd, 0xc, 0x7, 0xb, 0x4, 0x2, 0x8},
{0xd, 0x7, 0x0, 0x9, 0x3, 0x4, 0x6, 0xa, 0x2, 0x8, 0x5, 0xe, 0xc, 0xb, 0xf, 0x1},
{0xd, 0x6, 0x4, 0x9, 0x8, 0xf, 0x3, 0x0, 0xb, 0x1, 0x2, 0xc, 0x5, 0xa, 0xe, 0x7},
{0x1, 0xa, 0xd, 0x0, 0x6, 0x9, 0x8, 0x7, 0x4, 0xf, 0xe, 0x3, 0xb, 0x5, 0x2, 0xc}
},
{
{0x7, 0xd, 0xe, 0x3, 0x0, 0x6, 0x9, 0xa, 0x1, 0x2, 0x8, 0x5, 0xb, 0xc, 0x4, 0xf},
{0xd, 0x8, 0xb, 0x5, 0x6, 0xf, 0x0, 0x3, 0x4, 0x7, 0x2, 0xc, 0x1, 0xa, 0xe, 0x9},
{0xa, 0x6, 0x9, 0x0, 0xc, 0xb, 0x7, 0xd, 0xf, 0x1, 0x3, 0xe, 0x5, 0x2, 0x8, 0x4},
{0x3, 0xf, 0x0, 0x6, 0xa, 0x1, 0xd, 0x8, 0x9, 0x4, 0x5, 0xb, 0xc, 0x7, 0x2, 0xe}
},
{
{0x2, 0xc, 0x4, 0x1, 0x7, 0xa, 0xb, 0x6, 0x8, 0x5, 0x3, 0xf, 0xd, 0x0, 0xe, 0x9},
{0xe, 0xb, 0x2, 0xc, 0x4, 0x7, 0xd, 0x1, 0x5, 0x0, 0xf, 0xa, 0x3, 0x9, 0x8, 0x6},
{0x4, 0x2, 0x1, 0xb, 0xa, 0xd, 0x7, 0x8, 0xf, 0x9, 0xc, 0x5, 0x6, 0x3, 0x0, 0xe},
{0xb, 0x8, 0xc, 0x7, 0x1, 0xe, 0x2, 0xd, 0x6, 0xf, 0x0, 0x9, 0xa, 0x4, 0x5, 0x3}
},
{
{0xc, 0x1, 0xa, 0xf, 0x9, 0x2, 0x6, 0x8, 0x0, 0xd, 0x3, 0x4, 0xe, 0x7, 0x5, 0xb},
{0xa, 0xf, 0x4, 0x2, 0x7, 0xc, 0x9, 0x5, 0x6, 0x1, 0xd, 0xe, 0x0, 0xb, 0x3, 0x8},
{0x9, 0xe, 0xf, 0x5, 0x2, 0x8, 0xc, 0x3, 0x7, 0x0, 0x4, 0xa, 0x1, 0xd, 0xb, 0x6},
{0x4, 0x3, 0x2, 0xc, 0x9, 0x5, 0xf, 0xa, 0xb, 0xe, 0x1, 0x7, 0x6, 0x0, 0x8, 0xd}
},
{
{0x4, 0xb, 0x2, 0xe, 0xf, 0x0, 0x8, 0xd, 0x3, 0xc, 0x9, 0x7, 0x5, 0xa, 0x6, 0x1},
{0xd, 0x0, 0xb, 0x7, 0x4, 0x9, 0x1, 0xa, 0xe, 0x3, 0x5, 0xc, 0x2, 0xf, 0x8, 0x6},
{0x1, 0x4, 0xb, 0xd, 0xc, 0x3, 0x7, 0xe, 0xa, 0xf, 0x6, 0x8, 0x0, 0x5, 0x9, 0x2},
{0x6, 0xb, 0xd, 0x8, 0x1, 0x4, 0xa, 0x7, 0x9, 0x5, 0x0, 0xf, 0xe, 0x2, 0x3, 0xc}
},
{
{0xd, 0x2, 0x8, 0x4, 0x6, 0xf, 0xb, 0x1, 0xa, 0x9, 0x3, 0xe, 0x5, 0x0, 0xc, 0x7},
{0x1, 0xf, 0xd, 0x8, 0xa, 0x3, 0x7, 0x4, 0xc, 0x5, 0x6, 0xb, 0x0, 0xe, 0x9, 0x2},
{0x7, 0xb, 0x4, 0x1, 0x9, 0xc, 0xe, 0x2, 0x0, 0x6, 0xa, 0xd, 0xf, 0x3, 0x5, 0x8},
{0x2, 0x1, 0xe, 0x7, 0x4, 0xa, 0x8, 0xd, 0xf, 0xc, 0x9, 0x0, 0x3, 0x5, 0x6, 0xb}
}
};
//
// return-void
//
// nop
//
// :array_0
// .array-data 0x4
// 0x39t 0x0t 0x0t 0x0t
// 0x31t 0x0t 0x0t 0x0t
// 0x29t 0x0t 0x0t 0x0t
// 0x21t 0x0t 0x0t 0x0t
// 0x19t 0x0t 0x0t 0x0t
// 0x11t 0x0t 0x0t 0x0t
// 0x9t 0x0t 0x0t 0x0t
// 0x1t 0x0t 0x0t 0x0t
// 0x3at 0x0t 0x0t 0x0t
// 0x32t 0x0t 0x0t 0x0t
// 0x2at 0x0t 0x0t 0x0t
// 0x22t 0x0t 0x0t 0x0t
// 0x1at 0x0t 0x0t 0x0t
// 0x12t 0x0t 0x0t 0x0t
// 0xat 0x0t 0x0t 0x0t
// 0x2t 0x0t 0x0t 0x0t
// 0x3bt 0x0t 0x0t 0x0t
// 0x33t 0x0t 0x0t 0x0t
// 0x2bt 0x0t 0x0t 0x0t
// 0x23t 0x0t 0x0t 0x0t
// 0x1bt 0x0t 0x0t 0x0t
// 0x13t 0x0t 0x0t 0x0t
// 0xbt 0x0t 0x0t 0x0t
// 0x3t 0x0t 0x0t 0x0t
// 0x3ct 0x0t 0x0t 0x0t
// 0x34t 0x0t 0x0t 0x0t
// 0x2ct 0x0t 0x0t 0x0t
// 0x24t 0x0t 0x0t 0x0t
// .end array-data
//
// :array_1
// .array-data 0x4
// 0x3ft 0x0t 0x0t 0x0t
// 0x37t 0x0t 0x0t 0x0t
// 0x2ft 0x0t 0x0t 0x0t
// 0x27t 0x0t 0x0t 0x0t
// 0x1ft 0x0t 0x0t 0x0t
// 0x17t 0x0t 0x0t 0x0t
// 0xft 0x0t 0x0t 0x0t
// 0x7t 0x0t 0x0t 0x0t
// 0x3et 0x0t 0x0t 0x0t
// 0x36t 0x0t 0x0t 0x0t
// 0x2et 0x0t 0x0t 0x0t
// 0x26t 0x0t 0x0t 0x0t
// 0x1et 0x0t 0x0t 0x0t
// 0x16t 0x0t 0x0t 0x0t
// 0xet 0x0t 0x0t 0x0t
// 0x6t 0x0t 0x0t 0x0t
// 0x3dt 0x0t 0x0t 0x0t
// 0x35t 0x0t 0x0t 0x0t
// 0x2dt 0x0t 0x0t 0x0t
// 0x25t 0x0t 0x0t 0x0t
// 0x1dt 0x0t 0x0t 0x0t
// 0x15t 0x0t 0x0t 0x0t
// 0xdt 0x0t 0x0t 0x0t
// 0x5t 0x0t 0x0t 0x0t
// 0x1ct 0x0t 0x0t 0x0t
// 0x14t 0x0t 0x0t 0x0t
// 0xct 0x0t 0x0t 0x0t
// 0x4t 0x0t 0x0t 0x0t
// .end array-data
//
// :array_2
// .array-data 0x4
// 0xet 0x0t 0x0t 0x0t
// 0x11t 0x0t 0x0t 0x0t
// 0xbt 0x0t 0x0t 0x0t
// 0x18t 0x0t 0x0t 0x0t
// 0x1t 0x0t 0x0t 0x0t
// 0x5t 0x0t 0x0t 0x0t
// 0x3t 0x0t 0x0t 0x0t
// 0x1ct 0x0t 0x0t 0x0t
// 0xft 0x0t 0x0t 0x0t
// 0x6t 0x0t 0x0t 0x0t
// 0x15t 0x0t 0x0t 0x0t
// 0xat 0x0t 0x0t 0x0t
// 0x17t 0x0t 0x0t 0x0t
// 0x13t 0x0t 0x0t 0x0t
// 0xct 0x0t 0x0t 0x0t
// 0x4t 0x0t 0x0t 0x0t
// 0x1at 0x0t 0x0t 0x0t
// 0x8t 0x0t 0x0t 0x0t
// 0x10t 0x0t 0x0t 0x0t
// 0x7t 0x0t 0x0t 0x0t
// 0x1bt 0x0t 0x0t 0x0t
// 0x14t 0x0t 0x0t 0x0t
// 0xdt 0x0t 0x0t 0x0t
// 0x2t 0x0t 0x0t 0x0t
// 0x29t 0x0t 0x0t 0x0t
// 0x34t 0x0t 0x0t 0x0t
// 0x1ft 0x0t 0x0t 0x0t
// 0x25t 0x0t 0x0t 0x0t
// 0x2ft 0x0t 0x0t 0x0t
// 0x37t 0x0t 0x0t 0x0t
// 0x1et 0x0t 0x0t 0x0t
// 0x28t 0x0t 0x0t 0x0t
// 0x33t 0x0t 0x0t 0x0t
// 0x2dt 0x0t 0x0t 0x0t
// 0x21t 0x0t 0x0t 0x0t
// 0x30t 0x0t 0x0t 0x0t
// 0x2ct 0x0t 0x0t 0x0t
// 0x31t 0x0t 0x0t 0x0t
// 0x27t 0x0t 0x0t 0x0t
// 0x38t 0x0t 0x0t 0x0t
// 0x22t 0x0t 0x0t 0x0t
// 0x35t 0x0t 0x0t 0x0t
// 0x2et 0x0t 0x0t 0x0t
// 0x2at 0x0t 0x0t 0x0t
// 0x32t 0x0t 0x0t 0x0t
// 0x24t 0x0t 0x0t 0x0t
// 0x1dt 0x0t 0x0t 0x0t
// 0x20t 0x0t 0x0t 0x0t
// .end array-data
//
// :array_3
// .array-data 0x4
// 0x1t 0x0t 0x0t 0x0t
// 0x1t 0x0t 0x0t 0x0t
// 0x2t 0x0t 0x0t 0x0t
// 0x2t 0x0t 0x0t 0x0t
// 0x2t 0x0t 0x0t 0x0t
// 0x2t 0x0t 0x0t 0x0t
// 0x2t 0x0t 0x0t 0x0t
// 0x2t 0x0t 0x0t 0x0t
// 0x1t 0x0t 0x0t 0x0t
// 0x2t 0x0t 0x0t 0x0t
// 0x2t 0x0t 0x0t 0x0t
// 0x2t 0x0t 0x0t 0x0t
// 0x2t 0x0t 0x0t 0x0t
// 0x2t 0x0t 0x0t 0x0t
// 0x2t 0x0t 0x0t 0x0t
// 0x1t 0x0t 0x0t 0x0t
// .end array-data
//
// :array_4
// .array-data 0x4
// 0x3at 0x0t 0x0t 0x0t
// 0x32t 0x0t 0x0t 0x0t
// 0x2at 0x0t 0x0t 0x0t
// 0x22t 0x0t 0x0t 0x0t
// 0x1at 0x0t 0x0t 0x0t
// 0x12t 0x0t 0x0t 0x0t
// 0xat 0x0t 0x0t 0x0t
// 0x2t 0x0t 0x0t 0x0t
// 0x3ct 0x0t 0x0t 0x0t
// 0x34t 0x0t 0x0t 0x0t
// 0x2ct 0x0t 0x0t 0x0t
// 0x24t 0x0t 0x0t 0x0t
// 0x1ct 0x0t 0x0t 0x0t
// 0x14t 0x0t 0x0t 0x0t
// 0xct 0x0t 0x0t 0x0t
// 0x4t 0x0t 0x0t 0x0t
// 0x3et 0x0t 0x0t 0x0t
// 0x36t 0x0t 0x0t 0x0t
// 0x2et 0x0t 0x0t 0x0t
// 0x26t 0x0t 0x0t 0x0t
// 0x1et 0x0t 0x0t 0x0t
// 0x16t 0x0t 0x0t 0x0t
// 0xet 0x0t 0x0t 0x0t
// 0x6t 0x0t 0x0t 0x0t
// 0x40t 0x0t 0x0t 0x0t
// 0x38t 0x0t 0x0t 0x0t
// 0x30t 0x0t 0x0t 0x0t
// 0x28t 0x0t 0x0t 0x0t
// 0x20t 0x0t 0x0t 0x0t
// 0x18t 0x0t 0x0t 0x0t
// 0x10t 0x0t 0x0t 0x0t
// 0x8t 0x0t 0x0t 0x0t
// 0x39t 0x0t 0x0t 0x0t
// 0x31t 0x0t 0x0t 0x0t
// 0x29t 0x0t 0x0t 0x0t
// 0x21t 0x0t 0x0t 0x0t
// 0x19t 0x0t 0x0t 0x0t
// 0x11t 0x0t 0x0t 0x0t
// 0x9t 0x0t 0x0t 0x0t
// 0x1t 0x0t 0x0t 0x0t
// 0x3bt 0x0t 0x0t 0x0t
// 0x33t 0x0t 0x0t 0x0t
// 0x2bt 0x0t 0x0t 0x0t
// 0x23t 0x0t 0x0t 0x0t
// 0x1bt 0x0t 0x0t 0x0t
// 0x13t 0x0t 0x0t 0x0t
// 0xbt 0x0t 0x0t 0x0t
// 0x3t 0x0t 0x0t 0x0t
// 0x3dt 0x0t 0x0t 0x0t
// 0x35t 0x0t 0x0t 0x0t
// 0x2dt 0x0t 0x0t 0x0t
// 0x25t 0x0t 0x0t 0x0t
// 0x1dt 0x0t 0x0t 0x0t
// 0x15t 0x0t 0x0t 0x0t
// 0xdt 0x0t 0x0t 0x0t
// 0x5t 0x0t 0x0t 0x0t
// 0x3ft 0x0t 0x0t 0x0t
// 0x37t 0x0t 0x0t 0x0t
// 0x2ft 0x0t 0x0t 0x0t
// 0x27t 0x0t 0x0t 0x0t
// 0x1ft 0x0t 0x0t 0x0t
// 0x17t 0x0t 0x0t 0x0t
// 0xft 0x0t 0x0t 0x0t
// 0x7t 0x0t 0x0t 0x0t
// .end array-data
//
// :array_5
// .array-data 0x4
// 0x28t 0x0t 0x0t 0x0t
// 0x8t 0x0t 0x0t 0x0t
// 0x30t 0x0t 0x0t 0x0t
// 0x10t 0x0t 0x0t 0x0t
// 0x38t 0x0t 0x0t 0x0t
// 0x18t 0x0t 0x0t 0x0t
// 0x40t 0x0t 0x0t 0x0t
// 0x20t 0x0t 0x0t 0x0t
// 0x27t 0x0t 0x0t 0x0t
// 0x7t 0x0t 0x0t 0x0t
// 0x2ft 0x0t 0x0t 0x0t
// 0xft 0x0t 0x0t 0x0t
// 0x37t 0x0t 0x0t 0x0t
// 0x17t 0x0t 0x0t 0x0t
// 0x3ft 0x0t 0x0t 0x0t
// 0x1ft 0x0t 0x0t 0x0t
// 0x26t 0x0t 0x0t 0x0t
// 0x6t 0x0t 0x0t 0x0t
// 0x2et 0x0t 0x0t 0x0t
// 0xet 0x0t 0x0t 0x0t
// 0x36t 0x0t 0x0t 0x0t
// 0x16t 0x0t 0x0t 0x0t
// 0x3et 0x0t 0x0t 0x0t
// 0x1et 0x0t 0x0t 0x0t
// 0x25t 0x0t 0x0t 0x0t
// 0x5t 0x0t 0x0t 0x0t
// 0x2dt 0x0t 0x0t 0x0t
// 0xdt 0x0t 0x0t 0x0t
// 0x35t 0x0t 0x0t 0x0t
// 0x15t 0x0t 0x0t 0x0t
// 0x3dt 0x0t 0x0t 0x0t
// 0x1dt 0x0t 0x0t 0x0t
// 0x24t 0x0t 0x0t 0x0t
// 0x4t 0x0t 0x0t 0x0t
// 0x2ct 0x0t 0x0t 0x0t
// 0xct 0x0t 0x0t 0x0t
// 0x34t 0x0t 0x0t 0x0t
// 0x14t 0x0t 0x0t 0x0t
// 0x3ct 0x0t 0x0t 0x0t
// 0x1ct 0x0t 0x0t 0x0t
// 0x23t 0x0t 0x0t 0x0t
// 0x3t 0x0t 0x0t 0x0t
// 0x2bt 0x0t 0x0t 0x0t
// 0xbt 0x0t 0x0t 0x0t
// 0x33t 0x0t 0x0t 0x0t
// 0x13t 0x0t 0x0t 0x0t
// 0x3bt 0x0t 0x0t 0x0t
// 0x1bt 0x0t 0x0t 0x0t
// 0x22t 0x0t 0x0t 0x0t
// 0x2t 0x0t 0x0t 0x0t
// 0x2at 0x0t 0x0t 0x0t
// 0xat 0x0t 0x0t 0x0t
// 0x32t 0x0t 0x0t 0x0t
// 0x12t 0x0t 0x0t 0x0t
// 0x3at 0x0t 0x0t 0x0t
// 0x1at 0x0t 0x0t 0x0t
// 0x21t 0x0t 0x0t 0x0t
// 0x1t 0x0t 0x0t 0x0t
// 0x29t 0x0t 0x0t 0x0t
// 0x9t 0x0t 0x0t 0x0t
// 0x31t 0x0t 0x0t 0x0t
// 0x11t 0x0t 0x0t 0x0t
// 0x39t 0x0t 0x0t 0x0t
// 0x19t 0x0t 0x0t 0x0t
// .end array-data
//
// :array_6
// .array-data 0x4
// 0x20t 0x0t 0x0t 0x0t
// 0x1t 0x0t 0x0t 0x0t
// 0x2t 0x0t 0x0t 0x0t
// 0x3t 0x0t 0x0t 0x0t
// 0x4t 0x0t 0x0t 0x0t
// 0x5t 0x0t 0x0t 0x0t
// 0x4t 0x0t 0x0t 0x0t
// 0x5t 0x0t 0x0t 0x0t
// 0x6t 0x0t 0x0t 0x0t
// 0x7t 0x0t 0x0t 0x0t
// 0x8t 0x0t 0x0t 0x0t
// 0x9t 0x0t 0x0t 0x0t
// 0x8t 0x0t 0x0t 0x0t
// 0x9t 0x0t 0x0t 0x0t
// 0xat 0x0t 0x0t 0x0t
// 0xbt 0x0t 0x0t 0x0t
// 0xct 0x0t 0x0t 0x0t
// 0xdt 0x0t 0x0t 0x0t
// 0xct 0x0t 0x0t 0x0t
// 0xdt 0x0t 0x0t 0x0t
// 0xet 0x0t 0x0t 0x0t
// 0xft 0x0t 0x0t 0x0t
// 0x10t 0x0t 0x0t 0x0t
// 0x11t 0x0t 0x0t 0x0t
// 0x10t 0x0t 0x0t 0x0t
// 0x11t 0x0t 0x0t 0x0t
// 0x12t 0x0t 0x0t 0x0t
// 0x13t 0x0t 0x0t 0x0t
// 0x14t 0x0t 0x0t 0x0t
// 0x15t 0x0t 0x0t 0x0t
// 0x14t 0x0t 0x0t 0x0t
// 0x15t 0x0t 0x0t 0x0t
// 0x16t 0x0t 0x0t 0x0t
// 0x17t 0x0t 0x0t 0x0t
// 0x18t 0x0t 0x0t 0x0t
// 0x19t 0x0t 0x0t 0x0t
// 0x18t 0x0t 0x0t 0x0t
// 0x19t 0x0t 0x0t 0x0t
// 0x1at 0x0t 0x0t 0x0t
// 0x1bt 0x0t 0x0t 0x0t
// 0x1ct 0x0t 0x0t 0x0t
// 0x1dt 0x0t 0x0t 0x0t
// 0x1ct 0x0t 0x0t 0x0t
// 0x1dt 0x0t 0x0t 0x0t
// 0x1et 0x0t 0x0t 0x0t
// 0x1ft 0x0t 0x0t 0x0t
// 0x20t 0x0t 0x0t 0x0t
// 0x1t 0x0t 0x0t 0x0t
// .end array-data
//
// :array_7
// .array-data 0x4
// 0x10t 0x0t 0x0t 0x0t
// 0x7t 0x0t 0x0t 0x0t
// 0x14t 0x0t 0x0t 0x0t
// 0x15t 0x0t 0x0t 0x0t
// 0x1dt 0x0t 0x0t 0x0t
// 0xct 0x0t 0x0t 0x0t
// 0x1ct 0x0t 0x0t 0x0t
// 0x11t 0x0t 0x0t 0x0t
// 0x1t 0x0t 0x0t 0x0t
// 0xft 0x0t 0x0t 0x0t
// 0x17t 0x0t 0x0t 0x0t
// 0x1at 0x0t 0x0t 0x0t
// 0x5t 0x0t 0x0t 0x0t
// 0x12t 0x0t 0x0t 0x0t
// 0x1ft 0x0t 0x0t 0x0t
// 0xat 0x0t 0x0t 0x0t
// 0x2t 0x0t 0x0t 0x0t
// 0x8t 0x0t 0x0t 0x0t
// 0x18t 0x0t 0x0t 0x0t
// 0xet 0x0t 0x0t 0x0t
// 0x20t 0x0t 0x0t 0x0t
// 0x1bt 0x0t 0x0t 0x0t
// 0x3t 0x0t 0x0t 0x0t
// 0x9t 0x0t 0x0t 0x0t
// 0x13t 0x0t 0x0t 0x0t
// 0xdt 0x0t 0x0t 0x0t
// 0x1et 0x0t 0x0t 0x0t
// 0x6t 0x0t 0x0t 0x0t
// 0x16t 0x0t 0x0t 0x0t
// 0xbt 0x0t 0x0t 0x0t
// 0x4t 0x0t 0x0t 0x0t
// 0x19t 0x0t 0x0t 0x0t
// .end array-data
//.end method
}
//
public DESPlus() {
//.method public constructor ()V
// .locals 3
//
// const/4 v2, 0x2
//
// invoke-direct {p0}, Ljava/lang/Object;->()V
//
// const-string v0, “y1h2z3z4”
//
// iput-object v0, p0, Lcom/sinovatech/gxmobile/util/DESPlus;->strKey:Ljava/lang/String;
strKey = “y1h2z3z4”;
//
// new-array v0, v2, [I
//
// fill-array-data v0, :array_0
//
// sget-object v1, Ljava/lang/Byte;->TYPE:Ljava/lang/Class;
//
// invoke-static {v1, v0}, Ljava/lang/reflect/Array;->newInstance(Ljava/lang/Class;[I)Ljava/lang/Object;
//
// move-result-object v0
//
// check-cast v0, [[B
//
// iput-object v0, p0, Lcom/sinovatech/gxmobile/util/DESPlus;->C:[[B
// C = (byte[][])Array.newInstance(Byte.TYPE, new int[]{0x11, 0x1c}); //异常
C = new byte[0x11][0x1c];
//
// new-array v0, v2, [I
//
// fill-array-data v0, :array_1
//
// sget-object v1, Ljava/lang/Byte;->TYPE:Ljava/lang/Class;
//
// invoke-static {v1, v0}, Ljava/lang/reflect/Array;->newInstance(Ljava/lang/Class;[I)Ljava/lang/Object;
//
// move-result-object v0
//
// check-cast v0, [[B
//
// iput-object v0, p0, Lcom/sinovatech/gxmobile/util/DESPlus;->D:[[B
// D = (byte[][])Array.newInstance(Byte.class, new int[]{0x11, 0x1c}); //异常
D = new byte[0x11][0x1c];
//
// new-array v0, v2, [I
//
// fill-array-data v0, :array_2
//
// sget-object v1, Ljava/lang/Byte;->TYPE:Ljava/lang/Class;
//
// invoke-static {v1, v0}, Ljava/lang/reflect/Array;->newInstance(Ljava/lang/Class;[I)Ljava/lang/Object;
//
// move-result-object v0
//
// check-cast v0, [[B
//
// iput-object v0, p0, Lcom/sinovatech/gxmobile/util/DESPlus;->K:[[B
// K = (byte[][])Array.newInstance(Byte.class, new int[]{0x11, 0x30}); //异常
K = new byte[0x11][0x30];
//
// new-instance v0, Ljava/lang/StringBuilder;
//
// const-string v1, “umz4aea6g97skeect0jtxigvjkrimd0o”
//
// invoke-static {v1}, Ljava/lang/String;->valueOf(Ljava/lang/Object;)Ljava/lang/String;
//
// move-result-object v1
//
// invoke-direct {v0, v1}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V
//
// const-string v1, “y1h2z3z4”
//
// invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
//
// move-result-object v0
//
// invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
//
// move-result-object v0
//
// invoke-static {v0}, Ljava/lang/String;->valueOf(Ljava/lang/Object;)Ljava/lang/String;
//
// move-result-object v0
//
// const/4 v1, 0x0
//
// const/16 v2, 0x8
//
// invoke-virtual {v0, v1, v2}, Ljava/lang/String;->substring(II)Ljava/lang/String;
//
// move-result-object v0
//
// iput-object v0, p0, Lcom/sinovatech/gxmobile/util/DESPlus;->strKey:Ljava/lang/String;
strKey = (“umz4aea6g97skeect0jtxigvjkrimd0o” + “y1h2z3z4”).substring(0, 8);
//
// return-void
//
// :array_0
// .array-data 0x4
// 0x11t 0x0t 0x0t 0x0t
// 0x1ct 0x0t 0x0t 0x0t
// .end array-data
//
// :array_1
// .array-data 0x4
// 0x11t 0x0t 0x0t 0x0t
// 0x1ct 0x0t 0x0t 0x0t
// .end array-data
//
// :array_2
// .array-data 0x4
// 0x11t 0x0t 0x0t 0x0t
// 0x30t 0x0t 0x0t 0x0t
// .end array-data
//.end method
}
//
private void FDES(byte[] p1, byte[] p2, byte[] p3) {
//.method private FDES([B[B[B)V
// .locals 1
//
// const/16 v0, 0x40
//
// new-array v0, v0, [B
byte[] v0 = new byte[0x40];
//
// invoke-direct {p0, p1, v0}, Lcom/sinovatech/gxmobile/util/DESPlus;->Fexpand0([B[B)V
Fexpand0(p1, v0);
//
// invoke-direct {p0, v0}, Lcom/sinovatech/gxmobile/util/DESPlus;->Fsetkeystar([B)V
Fsetkeystar(v0);
//
// invoke-direct {p0, p2, p3}, Lcom/sinovatech/gxmobile/util/DESPlus;->Fencrypt0([B[B)V
Fencrypt0(p2,p3);
//
// return-void
//.end method
}
//
private void FF(int p1, byte[] p2, byte[] p3, byte[] p4, byte[] p5) {
//.method private FF(I[B[B[B[B)V
// .locals 8
//
// const/16 v1, 0x40
//
// const/16 v7, 0x30
int v7 = 0x30;
//
// const/16 v6, 0x20
int v6 = 0x20;
//
// const/4 v0, 0x0
int v0 = 0;
//
// new-array v2, v1, [B
byte[] v2 = new byte[0x40];
//
// new-array v3, v1, [B
byte[] v3 = new byte[0x40];
//
// move v1, v0
int v1 = 0;
//
// :goto_0
// if-lt v1, v7, :cond_0
while (v1 < v7) {
/*****/
// :cond_0
// sget-object v4, Lcom/sinovatech/gxmobile/util/DESPlus;->e_r_p:[I
// aget v4, v4, v1
// add-int/lit8 v4, v4, -0x1
int v4 = e_r_p[v1] -1;
// aget-byte v4, p3, v4
// aput-byte v4, v2, v1
v2[v1] = p3[v4];
// add-int/lit8 v1, v1, 0x1
v1++;
// goto :goto_0
/*
****
/
}
//
// move v1, v0
v1 = 0;
//
// :goto_1
// if-lt v1, v7, :cond_1
while(v1 < v7) {
/*****/
// :cond_1
// aget-byte v4, v2, v1
// invoke-static {v4}, Lcom/sinovatech/gxmobile/util/DESPlus;->b2iu(B)I
// move-result v4
int v4 = b2iu(v2[v1]);
// iget-object v5, p0, Lcom/sinovatech/gxmobile/util/DESPlus;->K:[[B
// aget-object v5, v5, p1
// aget-byte v5, v5, v1
// invoke-static {v5}, Lcom/sinovatech/gxmobile/util/DESPlus;->b2iu(B)I
// move-result v5
int v5 = b2iu(K[p1][v1]);
// add-int/2addr v4, v5
// and-int/lit8 v4, v4, 0x1
v4 = (v4+v5) & 0x1;
// invoke-static {v4}, Lcom/sinovatech/gxmobile/util/DESPlus;->iu2b(I)B
// move-result v4
// aput-byte v4, v2, v1
v2[v1] = iu2b(v4);
// add-int/lit8 v1, v1, 0x1
v1++;
// goto :goto_1
/*
****
/
}
//
// invoke-direct {p0, v2, v3}, Lcom/sinovatech/gxmobile/util/DESPlus;->Fs_box([B[B)V
Fs_box(v2, v3);
//
// move v1, v0
v1 = 0;
//
// :goto_2
// if-lt v1, v6, :cond_2
while(v1 < v6) {
/*****/
// :cond_2
// sget-object v4, Lcom/sinovatech/gxmobile/util/DESPlus;->local_PP:[I
// aget v4, v4, v1
// add-int/lit8 v4, v4, -0x1
int v4 = local_PP[v1]-1;
// aget-byte v4, v3, v4
// aput-byte v4, v2, v1
v2[v1] = v3[v4];
// add-int/lit8 v1, v1, 0x1
v1++;
// goto :goto_2
/*
****
/
}
//
// move v1, v0
v1 = 0;
//
// :goto_3
// if-lt v1, v6, :cond_3
while (v1 < v6) {
/*****/
// :cond_3
// aget-byte v3, v2, v1
// invoke-static {v3}, Lcom/sinovatech/gxmobile/util/DESPlus;->b2iu(B)I
// move-result v3
int iv3 = b2iu(v2[v1]);
// aget-byte v4, p2, v1
// invoke-static {v4}, Lcom/sinovatech/gxmobile/util/DESPlus;->b2iu(B)I
// move-result v4
int v4 = b2iu(p2[v1]);
// add-int/2addr v3, v4
// and-int/lit8 v3, v3, 0x1
iv3 = (iv3+v4)&0x1;
// invoke-static {v3}, Lcom/sinovatech/gxmobile/util/DESPlus;->iu2b(I)B
// move-result v3
// aput-byte v3, p5, v1
p5[v1] = iu2b(iv3);
// add-int/lit8 v1, v1, 0x1
v1++;
// goto :goto_3
/*
****
/
}
//
// :goto_4
// if-lt v0, v6, :cond_4
while (v0 < v6) {
/*****/
// :cond_4
// aget-byte v1, p3, v0
// aput-byte v1, p4, v0
p4[v0] = p3[v0];
// add-int/lit8 v0, v0, 0x1
v0++;
// goto :goto_4
/*
****
/
}
//
// return-void
//
// :cond_0
// sget-object v4, Lcom/sinovatech/gxmobile/util/DESPlus;->e_r_p:[I
//
// aget v4, v4, v1
//
// add-int/lit8 v4, v4, -0x1
//
// aget-byte v4, p3, v4
//
// aput-byte v4, v2, v1
//
// add-int/lit8 v1, v1, 0x1
//
// goto :goto_0
//
// :cond_1
// aget-byte v4, v2, v1
//
// invoke-static {v4}, Lcom/sinovatech/gxmobile/util/DESPlus;->b2iu(B)I
//
// move-result v4
//
// iget-object v5, p0, Lcom/sinovatech/gxmobile/util/DESPlus;->K:[[B
//
// aget-object v5, v5, p1
//
// aget-byte v5, v5, v1
//
// invoke-static {v5}, Lcom/sinovatech/gxmobile/util/DESPlus;->b2iu(B)I
//
// move-result v5
//
// add-int/2addr v4, v5
//
// and-int/lit8 v4, v4, 0x1
//
// invoke-static {v4}, Lcom/sinovatech/gxmobile/util/DESPlus;->iu2b(I)B
//
// move-result v4
//
// aput-byte v4, v2, v1
//
// add-int/lit8 v1, v1, 0x1
//
// goto :goto_1
//
// :cond_2
// sget-object v4, Lcom/sinovatech/gxmobile/util/DESPlus;->local_PP:[I
//
// aget v4, v4, v1
//
// add-int/lit8 v4, v4, -0x1
//
// aget-byte v4, v3, v4
//
// aput-byte v4, v2, v1
//
// add-int/lit8 v1, v1, 0x1
//
// goto :goto_2
//
// :cond_3
// aget-byte v3, v2, v1
//
// invoke-static {v3}, Lcom/sinovatech/gxmobile/util/DESPlus;->b2iu(B)I
//
// move-result v3
//
// aget-byte v4, p2, v1
//
// invoke-static {v4}, Lcom/sinovatech/gxmobile/util/DESPlus;->b2iu(B)I
//
// move-result v4
//
// add-int/2addr v3, v4
//
// and-int/lit8 v3, v3, 0x1
//
// invoke-static {v3}, Lcom/sinovatech/gxmobile/util/DESPlus;->iu2b(I)B
//
// move-result v3
//
// aput-byte v3, p5, v1
//
// add-int/lit8 v1, v1, 0x1
//
// goto :goto_3
//
// :cond_4
// aget-byte v1, p3, v0
//
// aput-byte v1, p4, v0
//
// add-int/lit8 v0, v0, 0x1
//
// goto :goto_4
//.end method
}
//
private void FLS(byte[] p1, byte[] p2, int p3) {
//.method private FLS([B[BI)V
// .locals 2
//
// const/4 v0, 0x0
//
// :goto_0
// const/16 v1, 0x1c
//
// if-lt v0, v1, :cond_0
for (int v0 = 0; v0 < 0x1c; v0++) {
/*****/
// :cond_0
// add-int v1, v0, p3
// rem-int/lit8 v1, v1, 0x1c
// aget-byte v1, p1, v1
// aput-byte v1, p2, v0
p2[v0] = p1[(v0+p3) % 0x1c];
// add-int/lit8 v0, v0, 0x1
// goto :goto_0
/*
****
/
}
//
// return-void
//
// :cond_0
// add-int v1, v0, p3
//
// rem-int/lit8 v1, v1, 0x1c
//
// aget-byte v1, p1, v1
//
// aput-byte v1, p2, v0
//
// add-int/lit8 v0, v0, 0x1
//
// goto :goto_0
//.end method
}
//
private void Fcompress016(byte[] p1, byte[] p2) {
//.method private Fcompress016([B[B)V
// .locals 6
//
// const/4 v1, 0x0
//
// move v3, v1
//
// :goto_0
// const/16 v0, 0x10
//
// if-lt v3, v0, :cond_0
for (int i = 0; i < 0x10; i++) {
/*****/
// :cond_0
// const/4 v0, 0x3
byte v0 = 0x3;
// aput-byte v1, p2, v3
p2[i] = 0;
// move v2, v0
byte v2 = v0;
// move v0, v1
// :goto_1
// const/4 v4, 0x4
// if-lt v0, v4, :cond_1
for (int j = 0; j < 0x4; j++) {
/*
****
/
// :cond_1
// aget-byte v4, p2, v3
// invoke-static {v4}, Lcom/sinovatech/gxmobile/util/DESPlus;->b2iu(B)I
// move-result v4
int v4 = b2iu(p2[i]);
// mul-int/lit8 v5, v3, 0x10
int v5 = i0x10;
// add-int/2addr v5, v0
// aget-byte v5, p1, v5
// invoke-static {v5}, Lcom/sinovatech/gxmobile/util/DESPlus;->b2iu(B)I
// move-result v5
v5 = b2iu(p1[v5+v0]);
// shl-int/2addr v5, v2
// add-int/2addr v4, v5
// invoke-static {v4}, Lcom/sinovatech/gxmobile/util/DESPlus;->iu2b(I)B
// move-result v4
// aput-byte v4, p2, v3
p2[i] = iu2b(v4 + (v5 << v2));
// add-int/lit8 v2, v2, -0x1
// add-int/lit8 v0, v0, 0x1
// goto :goto_1
/*****
/
}
// add-int/lit8 v0, v3, 0x1
// move v3, v0
// goto :goto_0
/*
****/
}
//
// return-void
//
// :cond_0
// const/4 v0, 0x3
//
// aput-byte v1, p2, v3
//
// move v2, v0
//
// move v0, v1
//
// :goto_1
// const/4 v4, 0x4
//
// if-lt v0, v4, :cond_1
//
// add-int/lit8 v0, v3, 0x1
//
// move v3, v0
//
// goto :goto_0
//
// :cond_1
// aget-byte v4, p2, v3
//
// invoke-static {v4}, Lcom/sinovatech/gxmobile/util/DESPlus;->b2iu(B)I
//
// move-result v4
//
// mul-int/lit8 v5, v3, 0x10
//
// add-int/2addr v5, v0
//
// aget-byte v5, p1, v5
//
// invoke-static {v5}, Lcom/sinovatech/gxmobile/util/DESPlus;->b2iu(B)I
//
// move-result v5
//
// shl-int/2addr v5, v2
//
// add-int/2addr v4, v5
//
// invoke-static {v4}, Lcom/sinovatech/gxmobile/util/DESPlus;->iu2b(I)B
//
// move-result v4
//
// aput-byte v4, p2, v3
//
// add-int/lit8 v2, v2, -0x1
//
// add-int/lit8 v0, v0, 0x1
//
// goto :goto_1
//.end method
}
//
private void Fdiscrypt0(byte[] p1, byte[] p2) {
//.method private Fdiscrypt0([B[B)V
// .locals 8
//
// const/16 v0, 0x40
//
// new-array v2, v0, [B
byte[] v2 = new byte[0x40];
//
// new-array v3, v0, [B
byte[] v3 = new byte[0x40];
//
// new-array v4, v0, [B
byte[] v4 = new byte[0x40];
//
// new-array v5, v0, [B
byte[] v5 = new byte[0x40];
//
// new-array v6, v0, [B
byte[] v6 = new byte[0x40];
//
// invoke-direct {p0, p1, v2, v3}, Lcom/sinovatech/gxmobile/util/DESPlus;->Fiip([B[B[B)V
Fiip(p1, v2, v3);
//
// const/16 v1, 0x10
int v1 = 0x10;
//
// :goto_0
// if-gtz v1, :cond_0
while (v1 > 0) {
/*****
/
// :cond_0
// move-object v0, p0
// invoke-direct/range {v0 .. v5}, Lcom/sinovatech/gxmobile/util/DESPlus;->FF(I[B[B[B[B)V
FF(v1, v2, v3, v4, v5);
// const/4 v0, 0x0
int v0 = 0;
// :goto_1
// const/16 v7, 0x20
// if-lt v0, v7, :cond_1
while(v0 < 0x20) {
/*
****/
// :cond_1
// aget-byte v7, v4, v0
// aput-byte v7, v2, v0
v2[v0] = v4[v0];
// aget-byte v7, v5, v0
// aput-byte v7, v3, v0
v3[v0] = v5[v0];
// add-int/lit8 v0, v0, 0x1
v0++;
// goto :goto_1
/*****
/
}
// add-int/lit8 v1, v1, -0x1
v1–;
// goto :goto_0
/*
****/
}
//
// invoke-direct {p0, v6, v3, v2}, Lcom/sinovatech/gxmobile/util/DESPlus;->Fiip([B[B[B)V
Fiip(v6, v3, v2);
//
// invoke-virtual {p0, v6, p2}, Lcom/sinovatech/gxmobile/util/DESPlus;->Fcompress0([B[B)V
Fcompress0(v6, p2);
//
// return-void
//
// :cond_0
// move-object v0, p0
//
// invoke-direct/range {v0 .. v5}, Lcom/sinovatech/gxmobile/util/DESPlus;->FF(I[B[B[B[B)V
//
// const/4 v0, 0x0
//
// :goto_1
// const/16 v7, 0x20
//
// if-lt v0, v7, :cond_1
//
// add-int/lit8 v1, v1, -0x1
//
// goto :goto_0
//
// :cond_1
// aget-byte v7, v4, v0
//
// aput-byte v7, v2, v0
//
// aget-byte v7, v5, v0
//
// aput-byte v7, v3, v0
//
// add-int/lit8 v0, v0, 0x1
//
// goto :goto_1
//.end method
}
//
private void Fencrypt0(byte[] p1, byte[] p2) {
//.method private Fencrypt0([B[B)V
// .locals 8
//
// const/16 v0, 0x40
//
// new-array v2, v0, [B
byte[] v2 = new byte[0x40];
//
// new-array v3, v0, [B
byte[] v3 = new byte[0x40];
//
// new-array v4, v0, [B
byte[] v4 = new byte[0x40];
//
// new-array v5, v0, [B
byte[] v5 = new byte[0x40];
//
// new-array v6, v0, [B
byte[] v6 = new byte[0x40];
//
// invoke-direct {p0, p1, v2, v3}, Lcom/sinovatech/gxmobile/util/DESPlus;->Fiip([B[B[B)V
Fiip(p1, v2, v3);
//
// const/4 v1, 0x1
//
// :goto_0
// const/16 v0, 0x11
//
// if-lt v1, v0, :cond_0
for (int v1 = 1; v1 < 0x11; v1++) {
/*****
/
// :cond_0
// move-object v0, p0
// invoke-direct/range {v0 .. v5}, Lcom/sinovatech/gxmobile/util/DESPlus;->FF(I[B[B[B[B)V
FF(v1, v2, v3, v4, v5);
// const/4 v0, 0x0
// :goto_1
// const/16 v7, 0x20
// if-lt v0, v7, :cond_1
for (int v0 = 0; v0 < 0x20; v0++) {
/*
****/
// :cond_1
// aget-byte v7, v4, v0
// aput-byte v7, v2, v0
v2[v0] = v4[v0];
// aget-byte v7, v5, v0
// aput-byte v7, v3, v0
v3[v0] = v5[v0];
// add-int/lit8 v0, v0, 0x1
// goto :goto_1
/*****
/
}
// add-int/lit8 v1, v1, 0x1
// goto :goto_0
/*
****/
}
//
// invoke-direct {p0, v6, v3, v2}, Lcom/sinovatech/gxmobile/util/DESPlus;->Fiip([B[B[B)V
Fiip(v6, v3, v2);
//
// invoke-virtual {p0, v6, p2}, Lcom/sinovatech/gxmobile/util/DESPlus;->Fcompress0([B[B)V
Fcompress0(v6, p2);
//
// return-void
//
// :cond_0
// move-object v0, p0
//
// invoke-direct/range {v0 .. v5}, Lcom/sinovatech/gxmobile/util/DESPlus;->FF(I[B[B[B[B)V
//
// const/4 v0, 0x0
//
// :goto_1
// const/16 v7, 0x20
//
// if-lt v0, v7, :cond_1
//
// add-int/lit8 v1, v1, 0x1
//
// goto :goto_0
//
// :cond_1
// aget-byte v7, v4, v0
//
// aput-byte v7, v2, v0
//
// aget-byte v7, v5, v0
//
// aput-byte v7, v3, v0
//
// add-int/lit8 v0, v0, 0x1
//
// goto :goto_1
//.end method
}
//
private void Fexpand0(byte[] p1, byte[] p2) {
//.method private Fexpand0([B[B)V
// .locals 7
//
// const/16 v6, 0x8
int v6 = 0x8;
//
// const/4 v1, 0x0
//
// move v3, v1
int v3 = 0;
//
// :goto_0
// if-lt v3, v6, :cond_0
while(v3 < v6) {
/*****
/
// :cond_0
// const/4 v0, 0x7
// move v2, v0
int v2 = 0x7;
// move v0, v1
int v0 = 0;
// :goto_1
// if-lt v0, v6, :cond_1
while (v0 < v6) {
/*
****/
// :cond_1
// aget-byte v4, p1, v3
byte v4 = p1[v3];
// mul-int/lit8 v5, v3, 0x8
// add-int/2addr v5, v0
int v5 =v0 + v3
0x8;
// invoke-static {v4}, Lcom/sinovatech/gxmobile/util/DESPlus;->b2iu(B)I
// move-result v4
int iv4 = b2iu(v4);
// ushr-int/2addr v4, v2
iv4 >>>= v2;
// and-int/lit8 v4, v4, 0x1
iv4 &= 0x1;
// invoke-static {v4}, Lcom/sinovatech/gxmobile/util/DESPlus;->iu2b(I)B
// move-result v4
// aput-byte v4, p2, v5
p2[v5] = iu2b(iv4);
// add-int/lit8 v2, v2, -0x1
v2–;
// add-int/lit8 v0, v0, 0x1
v0++;
// goto :goto_1
/*****/
}
// add-int/lit8 v0, v3, 0x1
// move v3, v0
v3++;
// goto :goto_0
/*
****
/
}
//
// return-void
//
// :cond_0
// const/4 v0, 0x7
//
// move v2, v0
//
// move v0, v1
//
// :goto_1
// if-lt v0, v6, :cond_1
//
// add-int/lit8 v0, v3, 0x1
//
// move v3, v0
//
// goto :goto_0
//
// :cond_1
// aget-byte v4, p1, v3
//
// mul-int/lit8 v5, v3, 0x8
//
// add-int/2addr v5, v0
//
// invoke-static {v4}, Lcom/sinovatech/gxmobile/util/DESPlus;->b2iu(B)I
//
// move-result v4
//
// ushr-int/2addr v4, v2
//
// and-int/lit8 v4, v4, 0x1
//
// invoke-static {v4}, Lcom/sinovatech/gxmobile/util/DESPlus;->iu2b(I)B
//
// move-result v4
//
// aput-byte v4, p2, v5
//
// add-int/lit8 v2, v2, -0x1
//
// add-int/lit8 v0, v0, 0x1
//
// goto :goto_1
//.end method
}
//
private void Fiip(byte[] p1, byte[] p2, byte[] p3) {
//.method private Fiip([B[B[B)V
// .locals 5
//
// const/16 v1, 0x40
//
// const/16 v4, 0x20
int v4 = 0x20;
//
// const/4 v0, 0x0
int v0 = 0;
//
// new-array v2, v1, [B
byte[] v2 = new byte[0x40];
//
// new-array v1, v1, [B
//
// invoke-direct {p0, p1, v2}, Lcom/sinovatech/gxmobile/util/DESPlus;->Fexpand0([B[B)V
Fexpand0(p1, v2);
//
// move v1, v0
int v1 = 0;
//
// :goto_0
// if-lt v1, v4, :cond_0
while(v1 < v4) {
/*****/
// :cond_0
// sget-object v3, Lcom/sinovatech/gxmobile/util/DESPlus;->iip_tab_p:[I
// aget v3, v3, v1
// add-int/lit8 v3, v3, -0x1
// aget-byte v3, v2, v3
// aput-byte v3, p2, v1
p2[v1] = v2[iip_tab_p[v1] -1];
// add-int/lit8 v1, v1, 0x1
v1++;
// goto :goto_0
/*
****
/
}
//
// :goto_1
// if-lt v0, v4, :cond_1
while(v0 < v4) {
/*****/
// :cond_1
// sget-object v1, Lcom/sinovatech/gxmobile/util/DESPlus;->iip_tab_p:[I
// add-int/lit8 v3, v0, 0x20
// aget v1, v1, v3
// add-int/lit8 v1, v1, -0x1
// aget-byte v1, v2, v1
// aput-byte v1, p3, v0
p3[v0] = v2[iip_tab_p[v0+0x20] -1];
// add-int/lit8 v0, v0, 0x1
v0++;
// goto :goto_1
/*
****
/
}
//
// return-void
//
// :cond_0
// sget-object v3, Lcom/sinovatech/gxmobile/util/DESPlus;->iip_tab_p:[I
//
// aget v3, v3, v1
//
// add-int/lit8 v3, v3, -0x1
//
// aget-byte v3, v2, v3
//
// aput-byte v3, p2, v1
//
// add-int/lit8 v1, v1, 0x1
//
// goto :goto_0
//
// :cond_1
// sget-object v1, Lcom/sinovatech/gxmobile/util/DESPlus;->iip_tab_p:[I
//
// add-int/lit8 v3, v0, 0x20
//
// aget v1, v1, v3
//
// add-int/lit8 v1, v1, -0x1
//
// aget-byte v1, v2, v1
//
// aput-byte v1, p3, v0
//
// add-int/lit8 v0, v0, 0x1
//
// goto :goto_1
//.end method
}
//
// private void Fs_box(byte[] aa, byte[] bb) {
// int i, j, k, m;
// int y, z;
// byte[] ss = new byte[8];
// m = 0;
// for (i = 0; i < 8; i++) {
// j = 6 * i;
// y = b2iu(aa[j]) * 2 + b2iu(aa[j + 5]);
// z = b2iu(aa[j + 1]) * 8 + b2iu(aa[j + 2]) * 4 + b2iu(aa[j + 3]) * 2
// + b2iu(aa[j + 4]);
// ss[i] = iu2b(ccom_SSS_p[i][y][z]);
// y = 3;
// for (k = 0; k < 4; k++) {
// bb[m++] = iu2b((b2iu(ss[i]) >>> y) & 1);
// y–;
// }
//
// }
// }
private void Fs_box(byte[] p1, byte[] p2) {
//.method private Fs_box([B[B)V
// .locals 9
//
// const/16 v8, 0x8
int v8 = 0x8;
//
// const/4 v3, 0x0
//
// new-array v6, v8, [B
byte[] v6 = new byte[0x8];
//
// move v5, v3
int v5 = 0;
//
// move v0, v3
int v0 = 0;
//
// :goto_0
// if-lt v5, v8, :cond_0
while (v5 < v8) {
/*****/
// :cond_0
// mul-int/lit8 v1, v5, 0x6
int v1 = v5
6;
// aget-byte v2, p1, v1
// invoke-static {v2}, Lcom/sinovatech/gxmobile/util/DESPlus;->b2iu(B)I
// move-result v2
int v2 = b2iu(p1[v1]);
// mul-int/lit8 v2, v2, 0x2
v2 = 2;
// add-int/lit8 v4, v1, 0x5
// aget-byte v4, p1, v4
// invoke-static {v4}, Lcom/sinovatech/gxmobile/util/DESPlus;->b2iu(B)I
// move-result v4
int v4 = b2iu(p1[v1+0x5]);
// add-int/2addr v2, v4
v2 += v4;
// add-int/lit8 v4, v1, 0x1
// aget-byte v4, p1, v4
// invoke-static {v4}, Lcom/sinovatech/gxmobile/util/DESPlus;->b2iu(B)I
// move-result v4
v4 = b2iu(p1[v1+1]);
// mul-int/lit8 v4, v4, 0x8
v4
= 8;
// add-int/lit8 v7, v1, 0x2
// aget-byte v7, p1, v7
// invoke-static {v7}, Lcom/sinovatech/gxmobile/util/DESPlus;->b2iu(B)I
// move-result v7
int v7 = b2iu(p1[v1+2]);
// mul-int/lit8 v7, v7, 0x4
v7 = 4;
// add-int/2addr v4, v7
v4 += v7;
// add-int/lit8 v7, v1, 0x3
// aget-byte v7, p1, v7
// invoke-static {v7}, Lcom/sinovatech/gxmobile/util/DESPlus;->b2iu(B)I
// move-result v7
v7 = b2iu(p1[v1+3]);
// mul-int/lit8 v7, v7, 0x2
v7
= 2;
// add-int/2addr v4, v7
v4 += v7;
// add-int/lit8 v1, v1, 0x4
// aget-byte v1, p1, v1
// invoke-static {v1}, Lcom/sinovatech/gxmobile/util/DESPlus;->b2iu(B)I
// move-result v1
v1 = b2iu(p1[v1+4]);
// add-int/2addr v1, v4
v1 += v4;
// sget-object v4, Lcom/sinovatech/gxmobile/util/DESPlus;->ccom_SSS_p:[[[I
// aget-object v4, v4, v5
// aget-object v2, v4, v2
// aget v1, v2, v1
v1 = ccom_SSS_p[v5][v2][v1];
// invoke-static {v1}, Lcom/sinovatech/gxmobile/util/DESPlus;->iu2b(I)B
// move-result v1
// aput-byte v1, v6, v5
v6[v5] = iu2b(v1);
// const/4 v1, 0x3
// move v2, v3
v2 = 0;
// move v4, v1
v4 = 3;
// :goto_1
// const/4 v1, 0x4
// if-lt v2, v1, :cond_1
for (v2 = 0; v2 < 0x4; v2++) {
/*
****/
// :cond_1
// add-int/lit8 v1, v0, 0x1
v1 = v0+1;
// aget-byte v7, v6, v5
// invoke-static {v7}, Lcom/sinovatech/gxmobile/util/DESPlus;->b2iu(B)I
// move-result v7
v7 = b2iu(v6[v5]);
// ushr-int/2addr v7, v4
v7 >>>= v4;
// and-int/lit8 v7, v7, 0x1
v7 &= 0x1;
// System.out.println(“b2iu(v6[”+v5+“])=” + b2iu(v6[v5]) + “, v4=” + v4 + “, v7=” + v7);
// invoke-static {v7}, Lcom/sinovatech/gxmobile/util/DESPlus;->iu2b(I)B
// move-result v7
// aput-byte v7, p2, v0
p2[v0] = iu2b(v7);
// add-int/lit8 v4, v4, -0x1
v4–;
// add-int/lit8 v0, v2, 0x1
// move v2, v0
// move v0, v1
v0 = v1;
// goto :goto_1
/*****
/
}
// add-int/lit8 v1, v5, 0x1
// move v5, v1
v5++;
// goto :goto_0
/*
****/
}
// System.out.println(“p1-–-–-–-–-—”);
// for (int i = 0; i < p1.length; i++) {
// System.out.print(p1[i] + “, ”);
// }
// System.out.println();
// System.out.println(“p2-–-–-–-–-—”);
// for (int i = 0; i < p2.length; i++) {
// System.out.print(p2[i] + “, ”);
// }
// System.out.println();
//
// return-void
//
// :cond_0
// mul-int/lit8 v1, v5, 0x6
//
// aget-byte v2, p1, v1
//
// invoke-static {v2}, Lcom/sinovatech/gxmobile/util/DESPlus;->b2iu(B)I
//
// move-result v2
//
// mul-int/lit8 v2, v2, 0x2
//
// add-int/lit8 v4, v1, 0x5
//
// aget-byte v4, p1, v4
//
// invoke-static {v4}, Lcom/sinovatech/gxmobile/util/DESPlus;->b2iu(B)I
//
// move-result v4
//
// add-int/2addr v2, v4
//
// add-int/lit8 v4, v1, 0x1
//
// aget-byte v4, p1, v4
//
// invoke-static {v4}, Lcom/sinovatech/gxmobile/util/DESPlus;->b2iu(B)I
//
// move-result v4
//
// mul-int/lit8 v4, v4, 0x8
//
// add-int/lit8 v7, v1, 0x2
//
// aget-byte v7, p1, v7
//
// invoke-static {v7}, Lcom/sinovatech/gxmobile/util/DESPlus;->b2iu(B)I
//
// move-result v7
//
// mul-int/lit8 v7, v7, 0x4
//
// add-int/2addr v4, v7
//
// add-int/lit8 v7, v1, 0x3
//
// aget-byte v7, p1, v7
//
// invoke-static {v7}, Lcom/sinovatech/gxmobile/util/DESPlus;->b2iu(B)I
//
// move-result v7
//
// mul-int/lit8 v7, v7, 0x2
//
// add-int/2addr v4, v7
//
// add-int/lit8 v1, v1, 0x4
//
// aget-byte v1, p1, v1
//
// invoke-static {v1}, Lcom/sinovatech/gxmobile/util/DESPlus;->b2iu(B)I
//
// move-result v1
//
// add-int/2addr v1, v4
//
// sget-object v4, Lcom/sinovatech/gxmobile/util/DESPlus;->ccom_SSS_p:[[[I
//
// aget-object v4, v4, v5
//
// aget-object v2, v4, v2
//
// aget v1, v2, v1
//
// invoke-static {v1}, Lcom/sinovatech/gxmobile/util/DESPlus;->iu2b(I)B
//
// move-result v1
//
// aput-byte v1, v6, v5
//
// const/4 v1, 0x3
//
// move v2, v3
//
// move v4, v1
//
// :goto_1
// const/4 v1, 0x4
//
// if-lt v2, v1, :cond_1
//
// add-int/lit8 v1, v5, 0x1
//
// move v5, v1
//
// goto :goto_0
//
// :cond_1
// add-int/lit8 v1, v0, 0x1
//
// aget-byte v7, v6, v5
//
// invoke-static {v7}, Lcom/sinovatech/gxmobile/util/DESPlus;->b2iu(B)I
//
// move-result v7
//
// ushr-int/2addr v7, v4
//
// and-int/lit8 v7, v7, 0x1
//
// invoke-static {v7}, Lcom/sinovatech/gxmobile/util/DESPlus;->iu2b(I)B
//
// move-result v7
//
// aput-byte v7, p2, v0
//
// add-int/lit8 v4, v4, -0x1
//
// add-int/lit8 v0, v2, 0x1
//
// move v2, v0
//
// move v0, v1
//
// goto :goto_1
//.end method
}
private void Fsetkeystar(byte[] p1) {
//.method private Fsetkeystar([B)V
// .locals 5
//
// const/16 v4, 0x1c
int v4 = 0x1c;
//
// const/4 v0, 0x0
//
// move v1, v0
int v1 = 0;
//
// :goto_0
// if-lt v1, v4, :cond_0
while (v1 < v4) {
/*****
/
// :cond_0
// iget-object v2, p0, Lcom/sinovatech/gxmobile/util/DESPlus;->C:[[B
// aget-object v2, v2, v0
byte[] v2 = C[0];
// sget-object v3, Lcom/sinovatech/gxmobile/util/DESPlus;->pc_1_cp:[I
// aget v3, v3, v1
// add-int/lit8 v3, v3, -0x1
int v3 = pc_1_cp[v1] - 1;
// aget-byte v3, p1, v3
// aput-byte v3, v2, v1
v2[v1] = p1[v3];
// add-int/lit8 v1, v1, 0x1
v1++;
// goto :goto_0
/*
****/
}
//
// move v1, v0
v1 = 0;
//
// :goto_1
// if-lt v1, v4, :cond_1
while(v1 < v4) {
/*****
/
// :cond_1
// iget-object v2, p0, Lcom/sinovatech/gxmobile/util/DESPlus;->D:[[B
// aget-object v2, v2, v0
byte[] v2 = D[0];
// sget-object v3, Lcom/sinovatech/gxmobile/util/DESPlus;->pc_1_dp:[I
// aget v3, v3, v1
// add-int/lit8 v3, v3, -0x1
int v3 = pc_1_dp[v1] - 1;
// aget-byte v3, p1, v3
// aput-byte v3, v2, v1
v2[v1] = p1[v3];
// add-int/lit8 v1, v1, 0x1
v1++;
// goto :goto_1
/*
****/
}
//
// :goto_2
// const/16 v1, 0x10
//
// if-lt v0, v1, :cond_2
for (int v0 = 0; v0 < 0x10; v0++) {
/*****
/
// :cond_2
// iget-object v1, p0, Lcom/sinovatech/gxmobile/util/DESPlus;->C:[[B
// aget-object v1, v1, v0
byte[] bv1 = C[v0];
// iget-object v2, p0, Lcom/sinovatech/gxmobile/util/DESPlus;->C:[[B
// add-int/lit8 v3, v0, 0x1
// aget-object v2, v2, v3
byte[] v2 = C[v0+1];
// sget-object v3, Lcom/sinovatech/gxmobile/util/DESPlus;->ls_countp:[I
// aget v3, v3, v0
int v3 = ls_countp[v0];
// invoke-direct {p0, v1, v2, v3}, Lcom/sinovatech/gxmobile/util/DESPlus;->FLS([B[BI)V
FLS(bv1, v2, v3);
// iget-object v1, p0, Lcom/sinovatech/gxmobile/util/DESPlus;->D:[[B
// aget-object v1, v1, v0
bv1 = D[v0];
// iget-object v2, p0, Lcom/sinovatech/gxmobile/util/DESPlus;->D:[[B
// add-int/lit8 v3, v0, 0x1
// aget-object v2, v2, v3
v2 = D[v0+1];
// sget-object v3, Lcom/sinovatech/gxmobile/util/DESPlus;->ls_countp:[I
// aget v3, v3, v0
v3 = ls_countp[v0];
// invoke-direct {p0, v1, v2, v3}, Lcom/sinovatech/gxmobile/util/DESPlus;->FLS([B[BI)V
FLS(bv1, v2, v3);
// iget-object v1, p0, Lcom/sinovatech/gxmobile/util/DESPlus;->C:[[B
// add-int/lit8 v2, v0, 0x1
// aget-object v1, v1, v2
bv1 = C[v0+1];
// iget-object v2, p0, Lcom/sinovatech/gxmobile/util/DESPlus;->D:[[B
// add-int/lit8 v3, v0, 0x1
// aget-object v2, v2, v3
v2 = D[v0+1];
// iget-object v3, p0, Lcom/sinovatech/gxmobile/util/DESPlus;->K:[[B
// add-int/lit8 v4, v0, 0x1
// aget-object v3, v3, v4
byte[] bv3 = K[v0+1];
// invoke-direct {p0, v1, v2, v3}, Lcom/sinovatech/gxmobile/util/DESPlus;->Fson([B[B[B)V
Fson(bv1, v2, bv3);
// add-int/lit8 v0, v0, 0x1
// goto :goto_2
/*
****/
}
//
// return-void
//
// :cond_0
// iget-object v2, p0, Lcom/sinovatech/gxmobile/util/DESPlus;->C:[[B
//
// aget-object v2, v2, v0
//
// sget-object v3, Lcom/sinovatech/gxmobile/util/DESPlus;->pc_1_cp:[I
//
// aget v3, v3, v1
//
// add-int/lit8 v3, v3, -0x1
//
// aget-byte v3, p1, v3
//
// aput-byte v3, v2, v1
//
// add-int/lit8 v1, v1, 0x1
//
// goto :goto_0
//
// :cond_1
// iget-object v2, p0, Lcom/sinovatech/gxmobile/util/DESPlus;->D:[[B
//
// aget-object v2, v2, v0
//
// sget-object v3, Lcom/sinovatech/gxmobile/util/DESPlus;->pc_1_dp:[I
//
// aget v3, v3, v1
//
// add-int/lit8 v3, v3, -0x1
//
// aget-byte v3, p1, v3
//
// aput-byte v3, v2, v1
//
// add-int/lit8 v1, v1, 0x1
//
// goto :goto_1
//
// :cond_2
// iget-object v1, p0, Lcom/sinovatech/gxmobile/util/DESPlus;->C:[[B
//
// aget-object v1, v1, v0
//
// iget-object v2, p0, Lcom/sinovatech/gxmobile/util/DESPlus;->C:[[B
//
// add-int/lit8 v3, v0, 0x1
//
// aget-object v2, v2, v3
//
// sget-object v3, Lcom/sinovatech/gxmobile/util/DESPlus;->ls_countp:[I
//
// aget v3, v3, v0
//
// invoke-direct {p0, v1, v2, v3}, Lcom/sinovatech/gxmobile/util/DESPlus;->FLS([B[BI)V
//
// iget-object v1, p0, Lcom/sinovatech/gxmobile/util/DESPlus;->D:[[B
//
// aget-object v1, v1, v0
//
// iget-object v2, p0, Lcom/sinovatech/gxmobile/util/DESPlus;->D:[[B
//
// add-int/lit8 v3, v0, 0x1
//
// aget-object v2, v2, v3
//
// sget-object v3, Lcom/sinovatech/gxmobile/util/DESPlus;->ls_countp:[I
//
// aget v3, v3, v0
//
// invoke-direct {p0, v1, v2, v3}, Lcom/sinovatech/gxmobile/util/DESPlus;->FLS([B[BI)V
//
// iget-object v1, p0, Lcom/sinovatech/gxmobile/util/DESPlus;->C:[[B
//
// add-int/lit8 v2, v0, 0x1
//
// aget-object v1, v1, v2
//
// iget-object v2, p0, Lcom/sinovatech/gxmobile/util/DESPlus;->D:[[B
//
// add-int/lit8 v3, v0, 0x1
//
// aget-object v2, v2, v3
//
// iget-object v3, p0, Lcom/sinovatech/gxmobile/util/DESPlus;->K:[[B
//
// add-int/lit8 v4, v0, 0x1
//
// aget-object v3, v3, v4
//
// invoke-direct {p0, v1, v2, v3}, Lcom/sinovatech/gxmobile/util/DESPlus;->Fson([B[B[B)V
//
// add-int/lit8 v0, v0, 0x1
//
// goto :goto_2
//.end method
}
//
private void Fson(byte[] p1, byte[] p2, byte[] p3) {
//.method private Fson([B[B[B)V
// .locals 6
//
// const/16 v5, 0x38
int v5 = 0x38;
//
// const/16 v1, 0x1c
int v1 = 0x1c;
//
// const/4 v0, 0x0
//
// new-array v3, v5, [B
byte[] v3 = new byte[0x38];
//
// move v2, v0
int v2 = 0;
//
// :goto_0
// if-lt v2, v1, :cond_0
while (v2 < v1) {
/*****
/
// :cond_0
// aget-byte v4, p1, v2
// aput-byte v4, v3, v2
v3[v2] = p1[v2];
// add-int/lit8 v2, v2, 0x1
v2++;
// goto :goto_0
/*
****/
}
//
// :goto_1
// if-lt v1, v5, :cond_1
while (v1 < v5) {
/*****
/
// :cond_1
// add-int/lit8 v2, v1, -0x1c
// aget-byte v2, p2, v2
// aput-byte v2, v3, v1
v3[v1] = p2[v1-0x1c];
// add-int/lit8 v1, v1, 0x1
v1++;
// goto :goto_1
/*
****/
}
//
// :goto_2
// const/16 v1, 0x30
//
// if-lt v0, v1, :cond_2
for (int v0 = 0; v0 < 0x30; v0++) {
/*****
/
// :cond_2
// sget-object v1, Lcom/sinovatech/gxmobile/util/DESPlus;->pc_2p:[I
// aget v1, v1, v0
// add-int/lit8 v1, v1, -0x1
v1 = pc_2p[v0] - 1;
// aget-byte v1, v3, v1
// aput-byte v1, p3, v0
p3[v0] = v3[v1];
// add-int/lit8 v0, v0, 0x1
// goto :goto_2
/*
****/
}
//
// return-void
//
// :cond_0
// aget-byte v4, p1, v2
//
// aput-byte v4, v3, v2
//
// add-int/lit8 v2, v2, 0x1
//
// goto :goto_0
//
// :cond_1
// add-int/lit8 v2, v1, -0x1c
//
// aget-byte v2, p2, v2
//
// aput-byte v2, v3, v1
//
// add-int/lit8 v1, v1, 0x1
//
// goto :goto_1
//
// :cond_2
// sget-object v1, Lcom/sinovatech/gxmobile/util/DESPlus;->pc_2p:[I
//
// aget v1, v1, v0
//
// add-int/lit8 v1, v1, -0x1
//
// aget-byte v1, v3, v1
//
// aput-byte v1, p3, v0
//
// add-int/lit8 v0, v0, 0x1
//
// goto :goto_2
//.end method
}
//
private void FDES(byte[] p1, byte[] p2, byte[] p3) {
//.method private
FDES([B[B[B)V
// .locals 1
//
// const/16 v0, 0x40
//
// new-array v0, v0, [B
byte[] v0 = new byte[0x40];
//
// invoke-direct {p0, p1, v0}, Lcom/sinovatech/gxmobile/util/DESPlus;->Fexpand0([B[B)V
Fexpand0(p1, v0);
//
// invoke-direct {p0, v0}, Lcom/sinovatech/gxmobile/util/DESPlus;->Fsetkeystar([B)V
Fsetkeystar(v0);
//
// invoke-direct {p0, p2, p3}, Lcom/sinovatech/gxmobile/util/DESPlus;->Fdiscrypt0([B[B)V
Fdiscrypt0(p2, p3);
//
// return-void
//.end method
}
//
private void Fiip(byte[] p1, byte[] p2, byte[] p3) {
//.method private
Fiip([B[B[B)V
// .locals 6
//
// const/16 v1, 0x20
int v1 = 0x20;
//
// const/4 v0, 0x0
int v0 = 0;
//
// const/16 v5, 0x40
int v5 = 0x40;
//
// new-array v3, v5, [B
byte[] v3 = new byte[0x40];
//
// move v2, v0
int v2 = 0;
//
// :goto_0
// if-lt v2, v1, :cond_0
while (v2 < v1) {
/*****
/
// :cond_0
// aget-byte v4, p2, v2
// aput-byte v4, v3, v2
v3[v2] = p2[v2];
// add-int/lit8 v2, v2, 0x1
v2++;
// goto :goto_0
/*
****/
}
//
// :goto_1
// if-lt v1, v5, :cond_1
while (v1 < v5) {
/*****
/
// :cond_1
// add-int/lit8 v2, v1, -0x20
v2 = v1-0x20;
// aget-byte v2, p3, v2
// aput-byte v2, v3, v1
v3[v1] = p3[v2];
// add-int/lit8 v1, v1, 0x1
v1++;
// goto :goto_1
/*
****/
}
//
// :goto_2
// if-lt v0, v5, :cond_2
while (v0 < v5) {
/*****
/
// :cond_2
// sget-object v1, Lcom/sinovatech/gxmobile/util/DESPlus;->_iip_tab_p:[I
// aget v1, v1, v0
// add-int/lit8 v1, v1, -0x1
v1 = _iip_tab_p[v0] - 1;
// aget-byte v1, v3, v1
// aput-byte v1, p1, v0
p1[v0] = v3[v1];
// add-int/lit8 v0, v0, 0x1
v0++;
// goto :goto_2
/*
****/
}
//
// return-void
//
// :cond_0
// aget-byte v4, p2, v2
//
// aput-byte v4, v3, v2
//
// add-int/lit8 v2, v2, 0x1
//
// goto :goto_0
//
// :cond_1
// add-int/lit8 v2, v1, -0x20
//
// aget-byte v2, p3, v2
//
// aput-byte v2, v3, v1
//
// add-int/lit8 v1, v1, 0x1
//
// goto :goto_1
//
// :cond_2
// sget-object v1, Lcom/sinovatech/gxmobile/util/DESPlus;->_iip_tab_p:[I
//
// aget v1, v1, v0
//
// add-int/lit8 v1, v1, -0x1
//
// aget-byte v1, v3, v1
//
// aput-byte v1, p1, v0
//
// add-int/lit8 v0, v0, 0x1
//
// goto :goto_2
//.end method
}
//
private static int b2iu(byte p0) {
//.method private static b2iu(B)I
// .locals 0
//
// if-gez p0, :cond_0
if (p0 < 0) {
p0 &= 0xff;
}
//
// and-int/lit16 p0, p0, 0xff
//
// :cond_0
// return p0
return p0;
//.end method
}
//
public static String byteHEX(byte p0) {
//.method public static byteHEX(B)Ljava/lang/String;
// .locals 4
//
// const/16 v0, 0x10
//
// new-array v0, v0, [C
//
// fill-array-data v0, :array_0
char[] v0 = new char[]{0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x41,0x42,0x43,0x44,0x45,0x46};
//
// const/4 v1, 0x2
//
// new-array v1, v1, [C
char[] v1 = new char[0x2];
//
// const/4 v2, 0x0
//
// ushr-int/lit8 v3, p0, 0x4
//
// and-int/lit8 v3, v3, 0xf
int v3 = (p0 >>> 0x4) & 0xf;
//
// aget-char v3, v0, v3
//
// aput-char v3, v1, v2
v1[0] = v0[v3];
//
// const/4 v2, 0x1
//
// and-int/lit8 v3, p0, 0xf
v3 = p0 & 0xf;
//
// aget-char v0, v0, v3
//
// aput-char v0, v1, v2
v1[1] = v0[v3];
//
// new-instance v0, Ljava/lang/String;
//
// invoke-direct {v0, v1}, Ljava/lang/String;->([C)V
return new String(v1);
//
// return-object v0
//
// :array_0
// .array-data 0x2
// 0x30t 0x0t
// 0x31t 0x0t
// 0x32t 0x0t
// 0x33t 0x0t
// 0x34t 0x0t
// 0x35t 0x0t
// 0x36t 0x0t
// 0x37t 0x0t
// 0x38t 0x0t
// 0x39t 0x0t
// 0x41t 0x0t
// 0x42t 0x0t
// 0x43t 0x0t
// 0x44t 0x0t
// 0x45t 0x0t
// 0x46t 0x0t
// .end array-data
//.end method
}
//
private void desMemcpy(byte[] p1, byte[] p2, int p3, int p4, int p5) {
//.method private desMemcpy([B[BIII)V
// .locals 3
//
// const/4 v0, 0x0
int v0 = 0;
//
// :goto_0
// if-lt v0, p5, :cond_0
while (v0 < p5) {
/*****
/
// :cond_0
// add-int v1, p3, v0
// add-int v2, p4, v0
// aget-byte v2, p2, v2
// aput-byte v2, p1, v1
p1[p3+v0] = p2[p4+v0];
// add-int/lit8 v0, v0, 0x1
v0++;
// goto :goto_0
/*
****/
}
//
// return-void
//
// :cond_0
// add-int v1, p3, v0
//
// add-int v2, p4, v0
//
// aget-byte v2, p2, v2
//
// aput-byte v2, p1, v1
//
// add-int/lit8 v0, v0, 0x1
//
// goto :goto_0
//.end method
}
//
public static byte[] hexStr2ByteArr(String p1) {
//.method public static hexStr2ByteArr(Ljava/lang/String;)[B
// .locals 7
//
// invoke-virtual {p0}, Ljava/lang/String;->getBytes()[B
//
// move-result-object v1
byte[] v1 = p1.getBytes();
//
// array-length v2, v1
int v2 = v1.length;
//
// div-int/lit8 v0, v2, 0x2
int v0 = v2 / 2;
//
// new-array v3, v0, [B
byte[] v3 = new byte[v0];
//
// const/4 v0, 0x0
v0 = 0;
//
// :goto_0
// if-lt v0, v2, :cond_0
while (v0 < v2) {
/*****
/
// :cond_0
// new-instance v4, Ljava/lang/String;
// const/4 v5, 0x2
// invoke-direct {v4, v1, v0, v5}, Ljava/lang/String;->([BII)V
String v4 = new String(v1, v0, 2);
// div-int/lit8 v5, v0, 0x2
// const/16 v6, 0x10
// invoke-static {v4, v6}, Ljava/lang/Integer;->parseInt(Ljava/lang/String;I)I
// move-result v4
int iv4 = Integer.parseInt(v4, 0x10);
// int-to-byte v4, v4
byte bv4 = (byte)iv4;
// aput-byte v4, v3, v5
v3[v0/2] = bv4;
// add-int/lit8 v0, v0, 0x2
v0 += 2;
// goto :goto_0
/*
****/
}
//
// return-object v3
return v3;
//
// :cond_0
// new-instance v4, Ljava/lang/String;
//
// const/4 v5, 0x2
//
// invoke-direct {v4, v1, v0, v5}, Ljava/lang/String;->([BII)V
//
// div-int/lit8 v5, v0, 0x2
//
// const/16 v6, 0x10
//
// invoke-static {v4, v6}, Ljava/lang/Integer;->parseInt(Ljava/lang/String;I)I
//
// move-result v4
//
// int-to-byte v4, v4
//
// aput-byte v4, v3, v5
//
// add-int/lit8 v0, v0, 0x2
//
// goto :goto_0
//.end method
}
//
private static byte iu2b(int p0) {
//.method private static iu2b(I)B
// .locals 1
//
// and-int/lit16 v0, p0, 0xff
//
// int-to-byte v0, v0
//
// return v0
return (byte)(p0 & 0xff);
//.end method
}
//
//
//# virtual methods
public int DECRYPT(byte[] p1, byte[] p2, byte[] p3, int p4) {
//.method public DECRYPT([B[B[BI)I
// .locals 11
//
// const/16 v0, 0x8
//
// new-array v7, v0, [B
byte[] v7 = new byte[8];
//
// const/16 v0, 0x8
//
// new-array v1, v0, [B
byte[] v1 = new byte[0x8];
//
// const/4 v4, 0x0
int v4 = 0;
//
// :goto_0
// if-lt v4, p4, :cond_0
while (v4 < p4) {
/*****
/
// :cond_0
// const/4 v3, 0x0
// const/16 v5, 0x8
// move-object v0, p0
// move-object v2, p3
// invoke-direct/range {v0 .. v5}, Lcom/sinovatech/gxmobile/util/DESPlus;->desMemcpy([B[BIII)V
desMemcpy(v1, p3, 0x0, v4, 0x8);
// invoke-direct {p0, p1, v1, v7}, Lcom/sinovatech/gxmobile/util/DESPlus;->FDES([B[B[B)V
FDES(p1, v1, v7);
// const/4 v9, 0x0
// const/16 v10, 0x8
// move-object v5, p0
// move-object v6, p2
// move v8, v4
// invoke-direct/range {v5 .. v10}, Lcom/sinovatech/gxmobile/util/DESPlus;->desMemcpy([B[BIII)V
desMemcpy(p2, v7, v4, 0x0, 0x8);
// add-int/lit8 v4, v4, 0x8
v4 += 0x8;
// goto :goto_0
/*
****/
}
//
// return v4
return v4;
//
// :cond_0
// const/4 v3, 0x0
//
// const/16 v5, 0x8
//
// move-object v0, p0
//
// move-object v2, p3
//
// invoke-direct/range {v0 .. v5}, Lcom/sinovatech/gxmobile/util/DESPlus;->desMemcpy([B[BIII)V
//
// invoke-direct {p0, p1, v1, v7}, Lcom/sinovatech/gxmobile/util/DESPlus;->_FDES([B[B[B)V
//
// const/4 v9, 0x0
//
// const/16 v10, 0x8
//
// move-object v5, p0
//
// move-object v6, p2
//
// move v8, v4
//
// invoke-direct/range {v5 .. v10}, Lcom/sinovatech/gxmobile/util/DESPlus;->desMemcpy([B[BIII)V
//
// add-int/lit8 v4, v4, 0x8
//
// goto :goto_0
//.end method
}
//
public String Decode(String p1) {
//.method public Decode(Ljava/lang/String;)Ljava/lang/String;
// .locals 6
//
// const/16 v1, 0xbb8
//
// new-array v0, v1, [B
byte[] v0 = new byte[0xbb8];
//
// new-array v1, v1, [B
//
// invoke-static {p1}, Lcom/sinovatech/gxmobile/util/DESPlus;->hexStr2ByteArr(Ljava/lang/String;)[B
//
// move-result-object v1
byte[] v1 = hexStr2ByteArr(p1);
//
// new-instance v2, Ljava/lang/String;
//
// const/4 v3, 0x0
//
// iget-object v4, p0, Lcom/sinovatech/gxmobile/util/DESPlus;->strKey:Ljava/lang/String;
//
// invoke-virtual {v4}, Ljava/lang/String;->getBytes()[B
//
// move-result-object v4
byte[] v4 = strKey.getBytes();
//
// array-length v5, v1
int v5 = v1.length;
//
// invoke-virtual {p0, v4, v0, v1, v5}, Lcom/sinovatech/gxmobile/util/DESPlus;->DECRYPT([B[B[BI)I
//
// move-result v1
int iv1 = DECRYPT(v4, v0, v1, v5);
//
// invoke-direct {v2, v0, v3, v1}, Ljava/lang/String;->([BII)V
//
// return-object v2
return new String(v0, 0, iv1);
//.end method
}
//
public int ENCRYPT(byte[] p1, byte[] p2, byte[] p3, int p4) {
//.method public ENCRYPT([B[B[BI)I
// .locals 11
//
// const/16 v10, 0x8
int v10 = 0x8;
//
// const/4 v3, 0x0
int v3 = 0;
//
// new-array v1, v10, [B
byte[] v1 = new byte[0x8];
//
// new-array v7, v10, [B
byte[] v7 = new byte[0x8];
//
// move v4, v3
int v4 = 0;
//
// :goto_0
// if-lt v4, p4, :cond_0
while (v4 < p4) {
/*****
/
// :cond_0
// add-int/lit8 v0, v4, 0x8
int v0 = v4 + 0x8;
// if-le v0, p4, :cond_2
if (v0 <= p4) {
/*
****/
// :cond_2
// move-object v0, p0
// move-object v2, p2
// move v5, v10
// invoke-direct/range {v0 .. v5}, Lcom/sinovatech/gxmobile/util/DESPlus;->desMemcpy([B[BIII)V
desMemcpy(v1, p2, v3, v4, v10);
// goto :goto_2
/*****
/
}
else {
/*
****/
// sub-int v5, p4, v4
// move-object v0, p0
// move-object v2, p2
// invoke-direct/range {v0 .. v5}, Lcom/sinovatech/gxmobile/util/DESPlus;->desMemcpy([B[BIII)V
desMemcpy(v1, p2, v3, v4, p4-v4);
// sub-int v0, p4, v4
v0 = p4 - v4;
// :goto_1
// if-lt v0, v10, :cond_1
while (v0 < v10) {
/*****
/
// :cond_1
// aput-byte v3, v1, v0
v1[v0] = 0;
// add-int/lit8 v0, v0, 0x1
v0++;
// goto :goto_1
/*
****/
}
/*****
/
}
/*
****/
// :goto_2
// invoke-direct {p0, p1, v1, v7}, Lcom/sinovatech/gxmobile/util/DESPlus;->FDES([B[B[B)V
FDES(p1, v1, v7);
// move-object v5, p0
// move-object v6, p3
// move v8, v4
// move v9, v3
// invoke-direct/range {v5 .. v10}, Lcom/sinovatech/gxmobile/util/DESPlus;->desMemcpy([B[BIII)V
desMemcpy(p3, v7, v4, v3, v10);
// add-int/lit8 v4, v4, 0x8
v4 += 8;
// goto :goto_0
/*****
/
}
//
// return v4
return v4;
//
// :cond_0
// add-int/lit8 v0, v4, 0x8
//
// if-le v0, p4, :cond_2
//
// sub-int v5, p4, v4
//
// move-object v0, p0
//
// move-object v2, p2
//
// invoke-direct/range {v0 .. v5}, Lcom/sinovatech/gxmobile/util/DESPlus;->desMemcpy([B[BIII)V
//
// sub-int v0, p4, v4
//
// :goto_1
// if-lt v0, v10, :cond_1
//
// :goto_2
// invoke-direct {p0, p1, v1, v7}, Lcom/sinovatech/gxmobile/util/DESPlus;->FDES([B[B[B)V
//
// move-object v5, p0
//
// move-object v6, p3
//
// move v8, v4
//
// move v9, v3
//
// invoke-direct/range {v5 .. v10}, Lcom/sinovatech/gxmobile/util/DESPlus;->desMemcpy([B[BIII)V
//
// add-int/lit8 v4, v4, 0x8
//
// goto :goto_0
//
// :cond_1
// aput-byte v3, v1, v0
//
// add-int/lit8 v0, v0, 0x1
//
// goto :goto_1
//
// :cond_2
// move-object v0, p0
//
// move-object v2, p2
//
// move v5, v10
//
// invoke-direct/range {v0 .. v5}, Lcom/sinovatech/gxmobile/util/DESPlus;->desMemcpy([B[BIII)V
//
// goto :goto_2
//.end method
}
//
public String Encode(String p1) {
//.method public Encode(Ljava/lang/String;)Ljava/lang/String;
// .locals 5
//
// const/16 v0, 0xbb8
//
// new-array v2, v0, [B
byte[] v2 = new byte[0xbb8];
//
// invoke-virtual {p1}, Ljava/lang/String;->getBytes()[B
//
// move-result-object v0
byte[] v0 = p1.getBytes();
//
// iget-object v1, p0, Lcom/sinovatech/gxmobile/util/DESPlus;->strKey:Ljava/lang/String;
//
// invoke-virtual {v1}, Ljava/lang/String;->getBytes()[B
//
// move-result-object v1
byte[] v1 = strKey.getBytes();
//
// array-length v3, v0
int v3 = v0.length;
//
// invoke-virtual {p0, v1, v0, v2, v3}, Lcom/sinovatech/gxmobile/util/DESPlus;->ENCRYPT([B[B[BI)I
//
// move-result v3
int iv3 = ENCRYPT(v1, v0, v2, v3);
//
// const-string v1, “”
String sv1 = “”;
//
// const/4 v0, 0x0
int iv0 = 0;
//
// :goto_0
// if-lt v0, v3, :cond_0
while (iv0 < iv3) {
/*
****/
// :cond_0
// new-instance v4, Ljava/lang/StringBuilder;
// invoke-static {v1}, Ljava/lang/String;->valueOf(Ljava/lang/Object;)Ljava/lang/String;
// move-result-object v1
// invoke-direct {v4, v1}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V
// aget-byte v1, v2, v0
// invoke-static {v1}, Lcom/sinovatech/gxmobile/util/DESPlus;->byteHEX(B)Ljava/lang/String;
// move-result-object v1
// invoke-virtual {v4, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
// move-result-object v1
// invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
// move-result-object v1
sv1 += byteHEX(v2[iv0]);
// add-int/lit8 v0, v0, 0x1
iv0++;
// goto :goto_0
/*****
/
}
//
// return-object v1
return sv1;
//
// :cond_0
// new-instance v4, Ljava/lang/StringBuilder;
//
// invoke-static {v1}, Ljava/lang/String;->valueOf(Ljava/lang/Object;)Ljava/lang/String;
//
// move-result-object v1
//
// invoke-direct {v4, v1}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V
//
// aget-byte v1, v2, v0
//
// invoke-static {v1}, Lcom/sinovatech/gxmobile/util/DESPlus;->byteHEX(B)Ljava/lang/String;
//
// move-result-object v1
//
// invoke-virtual {v4, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
//
// move-result-object v1
//
// invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
//
// move-result-object v1
//
// add-int/lit8 v0, v0, 0x1
//
// goto :goto_0
//.end method
}
//
void Fcompress0(byte[] p1, byte[] p2) {
//.method Fcompress0([B[B)V
// .locals 7
//
// const/16 v6, 0x8
int v6 = 0x8;
//
// const/4 v1, 0x0
//
// move v3, v1
int v3 = 0;
//
// :goto_0
// if-lt v3, v6, :cond_0
while(v3 < v6) {
/*
****/
// :cond_0
// const/4 v0, 0x7
// aput-byte v1, p2, v3
p2[v3] = 0;
// move v2, v0
int v2 = 0x7;
// move v0, v1
int v0 = 0;
// :goto_1
// if-lt v0, v6, :cond_1
while (v0 < v6) {
/*****
/
// :cond_1
// aget-byte v4, p2, v3
// invoke-static {v4}, Lcom/sinovatech/gxmobile/util/DESPlus;->b2iu(B)I
// move-result v4
int v4 = b2iu(p2[v3]);
// mul-int/lit8 v5, v3, 0x8
// add-int/2addr v5, v0
// aget-byte v5, p1, v5
// invoke-static {v5}, Lcom/sinovatech/gxmobile/util/DESPlus;->b2iu(B)I
// move-result v5
int v5 = b2iu(p1[v3*0x8 + v0]);
// shl-int/2addr v5, v2
v5 <<= v2;
// add-int/2addr v4, v5
v4 += v5;
// invoke-static {v4}, Lcom/sinovatech/gxmobile/util/DESPlus;->iu2b(I)B
// move-result v4
// aput-byte v4, p2, v3
p2[v3] = iu2b(v4);
// add-int/lit8 v2, v2, -0x1
v2–;
// add-int/lit8 v0, v0, 0x1
v0++;
// goto :goto_1
/*
****/
}
// add-int/lit8 v0, v3, 0x1
// move v3, v0
v3++;
// goto :goto_0
/*****
**/
}
//
// return-void
//
// :cond_0
// const/4 v0, 0x7
//
// aput-byte v1, p2, v3
//
// move v2, v0
//
// move v0, v1
//
// :goto_1
// if-lt v0, v6, :cond_1
//
// add-int/lit8 v0, v3, 0x1
//
// move v3, v0
//
// goto :goto_0
//
// :cond_1
// aget-byte v4, p2, v3
//
// invoke-static {v4}, Lcom/sinovatech/gxmobile/util/DESPlus;->b2iu(B)I
//
// move-result v4
//
// mul-int/lit8 v5, v3, 0x8
//
// add-int/2addr v5, v0
//
// aget-byte v5, p1, v5
//
// invoke-static {v5}, Lcom/sinovatech/gxmobile/util/DESPlus;->b2iu(B)I
//
// move-result v5
//
// shl-int/2addr v5, v2
//
// add-int/2addr v4, v5
//
// invoke-static {v4}, Lcom/sinovatech/gxmobile/util/DESPlus;->iu2b(I)B
//
// move-result v4
//
// aput-byte v4, p2, v3
//
// add-int/lit8 v2, v2, -0x1
//
// add-int/lit8 v0, v0, 0x1
//
// goto :goto_1
//.end method
}

public static com.sinovatech.gxmobile.util.DESPlus srcDesPlus = new com.sinovatech.gxmobile.util.DESPlus();

public static void main(String[] args) {
DESPlus desPlus = new DESPlus();

String encode = desPlus.Encode(“puqa”);
System.out.println(“encode:” + encode);
System.out.println(“decode:” + desPlus.Decode(encode));

encode = desPlus.Encode(“112233”);
System.out.println(“encode:” + encode);
System.out.println(“decode:” + desPlus.Decode(encode));

System.out.println(“-–-–-–-–-–-–-–-–-–-–-—”);
}

}