BinTools.smali 
.class Lnet/lingala/zip4j/crypto/PBKDF2/BinTools;
.super Ljava/lang/Object;
# static fields
.field public static final hex:Ljava/lang/String; = "0123456789ABCDEF"
# direct methods
.method constructor <init>()V
    .registers 1
    .line 1
    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
    return-void
.end method
.method public static bin2hex([B)Ljava/lang/String;
    .registers 6
    if-nez p0, :cond_5
    const-string p0, ""
    return-object p0
    .line 1
    :cond_5
    new-instance v0, Ljava/lang/StringBuffer;
    array-length v1, p0
    mul-int/lit8 v1, v1, 0x2
    invoke-direct {v0, v1}, Ljava/lang/StringBuffer;-><init>(I)V
    const/4 v1, 0x0
    .line 2
    :goto_e
    array-length v2, p0
    if-ge v1, v2, :cond_32
    .line 3
    aget-byte v2, p0, v1
    add-int/lit16 v2, v2, 0x100
    rem-int/lit16 v2, v2, 0x100
    .line 4
    div-int/lit8 v3, v2, 0x10
    and-int/lit8 v3, v3, 0xf
    const-string v4, "0123456789ABCDEF"
    invoke-virtual {v4, v3}, Ljava/lang/String;->charAt(I)C
    move-result v3
    invoke-virtual {v0, v3}, Ljava/lang/StringBuffer;->append(C)Ljava/lang/StringBuffer;
    .line 5
    rem-int/lit8 v2, v2, 0x10
    and-int/lit8 v2, v2, 0xf
    invoke-virtual {v4, v2}, Ljava/lang/String;->charAt(I)C
    move-result v2
    invoke-virtual {v0, v2}, Ljava/lang/StringBuffer;->append(C)Ljava/lang/StringBuffer;
    add-int/lit8 v1, v1, 0x1
    goto :goto_e
    .line 7
    :cond_32
    invoke-virtual {v0}, Ljava/lang/StringBuffer;->toString()Ljava/lang/String;
    move-result-object p0
    return-object p0
.end method
.method public static hex2bin(C)I
    .registers 4
    const/16 v0, 0x30
    if-lt p0, v0, :cond_a
    const/16 v1, 0x39
    if-gt p0, v1, :cond_a
    sub-int/2addr p0, v0
    return p0
    :cond_a
    const/16 v0, 0x41
    if-lt p0, v0, :cond_16
    const/16 v1, 0x46
    if-gt p0, v1, :cond_16
    :goto_12
    sub-int/2addr p0, v0
    add-int/lit8 p0, p0, 0xa
    return p0
    :cond_16
    const/16 v0, 0x61
    if-lt p0, v0, :cond_1f
    const/16 v1, 0x66
    if-gt p0, v1, :cond_1f
    goto :goto_12
    .line 10
    :cond_1f
    new-instance v0, Ljava/lang/IllegalArgumentException;
    new-instance v1, Ljava/lang/StringBuilder;
    invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
    const-string v2, "Input string may only contain hex digits, but found \'"
    invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    invoke-virtual {v1, p0}, Ljava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder;
    const-string p0, "\'"
    invoke-virtual {v1, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
    move-result-object p0
    invoke-direct {v0, p0}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
    throw v0
.end method
.method public static hex2bin(Ljava/lang/String;)[B
    .registers 6
    if-nez p0, :cond_5
    const-string p0, ""
    goto :goto_1e
    .line 1
    :cond_5
    invoke-virtual {p0}, Ljava/lang/String;->length()I
    move-result v0
    rem-int/lit8 v0, v0, 0x2
    if-eqz v0, :cond_1e
    .line 3
    new-instance v0, Ljava/lang/StringBuilder;
    invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
    const-string v1, "0"
    invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    invoke-virtual {v0, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
    move-result-object p0
    .line 5
    :cond_1e
    :goto_1e
    invoke-virtual {p0}, Ljava/lang/String;->length()I
    move-result v0
    div-int/lit8 v0, v0, 0x2
    new-array v0, v0, [B
    const/4 v1, 0x0
    move v2, v1
    .line 6
    :goto_28
    invoke-virtual {p0}, Ljava/lang/String;->length()I
    move-result v3
    if-ge v1, v3, :cond_4c
    add-int/lit8 v3, v1, 0x1
    .line 7
    invoke-virtual {p0, v1}, Ljava/lang/String;->charAt(I)C
    move-result v1
    add-int/lit8 v4, v3, 0x1
    .line 8
    invoke-virtual {p0, v3}, Ljava/lang/String;->charAt(I)C
    move-result v3
    .line 9
    invoke-static {v1}, Lnet/lingala/zip4j/crypto/PBKDF2/BinTools;->hex2bin(C)I
    move-result v1
    mul-int/lit8 v1, v1, 0x10
    invoke-static {v3}, Lnet/lingala/zip4j/crypto/PBKDF2/BinTools;->hex2bin(C)I
    move-result v3
    add-int/2addr v1, v3
    int-to-byte v1, v1
    aput-byte v1, v0, v2
    add-int/lit8 v2, v2, 0x1
    move v1, v4
    goto :goto_28
    :cond_4c
    return-object v0
.end method