SRPHelper.smali

.class public Lim/tpelyyftgw/messenger/SRPHelper;
.super Ljava/lang/Object;
.source "SRPHelper.java"


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

    return-void
.end method

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

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

    return-void
.end method

.method public static getBigIntegerBytes(Ljava/math/BigInteger;)[B
    .registers 7
    .param p0, "value"    # Ljava/math/BigInteger;

    .line 10
    invoke-virtual {p0}, Ljava/math/BigInteger;->toByteArray()[B

    move-result-object v0

    .line 11
    .local v0, "bytes":[B
    array-length v1, v0

    const/4 v2, 0x0

    const/16 v3, 0x100

    if-le v1, v3, :cond_11

    .line 12
    new-array v1, v3, [B

    .line 13
    .local v1, "correctedAuth":[B
    const/4 v4, 0x1

    invoke-static {v0, v4, v1, v2, v3}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V

    .line 14
    return-object v1

    .line 15
    .end local v1    # "correctedAuth":[B
    :cond_11
    array-length v1, v0

    if-ge v1, v3, :cond_29

    .line 16
    new-array v1, v3, [B

    .line 17
    .restart local v1    # "correctedAuth":[B
    array-length v4, v0

    rsub-int v4, v4, 0x100

    array-length v5, v0

    invoke-static {v0, v2, v1, v4, v5}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V

    .line 18
    const/4 v4, 0x0

    .local v4, "a":I
    :goto_1e
    array-length v5, v0

    rsub-int v5, v5, 0x100

    if-ge v4, v5, :cond_28

    .line 19
    aput-byte v2, v1, v4

    .line 18
    add-int/lit8 v4, v4, 0x1

    goto :goto_1e

    .line 21
    .end local v4    # "a":I
    :cond_28
    return-object v1

    .line 23
    .end local v1    # "correctedAuth":[B
    :cond_29
    return-object v0
.end method

.method public static getV([BLim/tpelyyftgw/tgnet/TLRPC$TL_passwordKdfAlgoSHA256SHA256PBKDF2HMACSHA512iter100000SHA256ModPow;)Ljava/math/BigInteger;
    .registers 8
    .param p0, "passwordBytes"    # [B
    .param p1, "algo"    # Lim/tpelyyftgw/tgnet/TLRPC$TL_passwordKdfAlgoSHA256SHA256PBKDF2HMACSHA512iter100000SHA256ModPow;

    .line 34
    iget v0, p1, Lim/tpelyyftgw/tgnet/TLRPC$TL_passwordKdfAlgoSHA256SHA256PBKDF2HMACSHA512iter100000SHA256ModPow;->g:I

    int-to-long v0, v0

    invoke-static {v0, v1}, Ljava/math/BigInteger;->valueOf(J)Ljava/math/BigInteger;

    move-result-object v0

    .line 35
    .local v0, "g":Ljava/math/BigInteger;
    invoke-static {v0}, Lim/tpelyyftgw/messenger/SRPHelper;->getBigIntegerBytes(Ljava/math/BigInteger;)[B

    move-result-object v1

    .line 36
    .local v1, "g_bytes":[B
    new-instance v2, Ljava/math/BigInteger;

    iget-object v3, p1, Lim/tpelyyftgw/tgnet/TLRPC$TL_passwordKdfAlgoSHA256SHA256PBKDF2HMACSHA512iter100000SHA256ModPow;->p:[B

    const/4 v4, 0x1

    invoke-direct {v2, v4, v3}, Ljava/math/BigInteger;-><init>(I[B)V

    .line 38
    .local v2, "p":Ljava/math/BigInteger;
    invoke-static {p0, p1}, Lim/tpelyyftgw/messenger/SRPHelper;->getX([BLim/tpelyyftgw/tgnet/TLRPC$TL_passwordKdfAlgoSHA256SHA256PBKDF2HMACSHA512iter100000SHA256ModPow;)[B

    move-result-object v3

    .line 39
    .local v3, "x_bytes":[B
    new-instance v5, Ljava/math/BigInteger;

    invoke-direct {v5, v4, v3}, Ljava/math/BigInteger;-><init>(I[B)V

    move-object v4, v5

    .line 40
    .local v4, "x":Ljava/math/BigInteger;
    invoke-virtual {v0, v4, v2}, Ljava/math/BigInteger;->modPow(Ljava/math/BigInteger;Ljava/math/BigInteger;)Ljava/math/BigInteger;

    move-result-object v5

    return-object v5
.end method

.method public static getVBytes([BLim/tpelyyftgw/tgnet/TLRPC$TL_passwordKdfAlgoSHA256SHA256PBKDF2HMACSHA512iter100000SHA256ModPow;)[B
    .registers 4
    .param p0, "passwordBytes"    # [B
    .param p1, "algo"    # Lim/tpelyyftgw/tgnet/TLRPC$TL_passwordKdfAlgoSHA256SHA256PBKDF2HMACSHA512iter100000SHA256ModPow;

    .line 44
    iget-object v0, p1, Lim/tpelyyftgw/tgnet/TLRPC$TL_passwordKdfAlgoSHA256SHA256PBKDF2HMACSHA512iter100000SHA256ModPow;->p:[B

    iget v1, p1, Lim/tpelyyftgw/tgnet/TLRPC$TL_passwordKdfAlgoSHA256SHA256PBKDF2HMACSHA512iter100000SHA256ModPow;->g:I

    invoke-static {v0, v1}, Lim/tpelyyftgw/messenger/Utilities;->isGoodPrime([BI)Z

    move-result v0

    if-nez v0, :cond_c

    .line 45
    const/4 v0, 0x0

    return-object v0

    .line 47
    :cond_c
    invoke-static {p0, p1}, Lim/tpelyyftgw/messenger/SRPHelper;->getV([BLim/tpelyyftgw/tgnet/TLRPC$TL_passwordKdfAlgoSHA256SHA256PBKDF2HMACSHA512iter100000SHA256ModPow;)Ljava/math/BigInteger;

    move-result-object v0

    invoke-static {v0}, Lim/tpelyyftgw/messenger/SRPHelper;->getBigIntegerBytes(Ljava/math/BigInteger;)[B

    move-result-object v0

    return-object v0
.end method

.method public static getX([BLim/tpelyyftgw/tgnet/TLRPC$TL_passwordKdfAlgoSHA256SHA256PBKDF2HMACSHA512iter100000SHA256ModPow;)[B
    .registers 9
    .param p0, "passwordBytes"    # [B
    .param p1, "algo"    # Lim/tpelyyftgw/tgnet/TLRPC$TL_passwordKdfAlgoSHA256SHA256PBKDF2HMACSHA512iter100000SHA256ModPow;

    .line 27
    const/4 v0, 0x3

    new-array v1, v0, [[B

    iget-object v2, p1, Lim/tpelyyftgw/tgnet/TLRPC$TL_passwordKdfAlgoSHA256SHA256PBKDF2HMACSHA512iter100000SHA256ModPow;->salt1:[B

    const/4 v3, 0x0

    aput-object v2, v1, v3

    const/4 v2, 0x1

    aput-object p0, v1, v2

    iget-object v4, p1, Lim/tpelyyftgw/tgnet/TLRPC$TL_passwordKdfAlgoSHA256SHA256PBKDF2HMACSHA512iter100000SHA256ModPow;->salt1:[B

    const/4 v5, 0x2

    aput-object v4, v1, v5

    invoke-static {v1}, Lim/tpelyyftgw/messenger/Utilities;->computeSHA256([[B)[B

    move-result-object v1

    .line 28
    .local v1, "x_bytes":[B
    new-array v4, v0, [[B

    iget-object v6, p1, Lim/tpelyyftgw/tgnet/TLRPC$TL_passwordKdfAlgoSHA256SHA256PBKDF2HMACSHA512iter100000SHA256ModPow;->salt2:[B

    aput-object v6, v4, v3

    aput-object v1, v4, v2

    iget-object v6, p1, Lim/tpelyyftgw/tgnet/TLRPC$TL_passwordKdfAlgoSHA256SHA256PBKDF2HMACSHA512iter100000SHA256ModPow;->salt2:[B

    aput-object v6, v4, v5

    invoke-static {v4}, Lim/tpelyyftgw/messenger/Utilities;->computeSHA256([[B)[B

    move-result-object v1

    .line 29
    iget-object v4, p1, Lim/tpelyyftgw/tgnet/TLRPC$TL_passwordKdfAlgoSHA256SHA256PBKDF2HMACSHA512iter100000SHA256ModPow;->salt1:[B

    invoke-static {v1, v4}, Lim/tpelyyftgw/messenger/Utilities;->computePBKDF2([B[B)[B

    move-result-object v1

    .line 30
    new-array v0, v0, [[B

    iget-object v4, p1, Lim/tpelyyftgw/tgnet/TLRPC$TL_passwordKdfAlgoSHA256SHA256PBKDF2HMACSHA512iter100000SHA256ModPow;->salt2:[B

    aput-object v4, v0, v3

    aput-object v1, v0, v2

    iget-object v2, p1, Lim/tpelyyftgw/tgnet/TLRPC$TL_passwordKdfAlgoSHA256SHA256PBKDF2HMACSHA512iter100000SHA256ModPow;->salt2:[B

    aput-object v2, v0, v5

    invoke-static {v0}, Lim/tpelyyftgw/messenger/Utilities;->computeSHA256([[B)[B

    move-result-object v0

    return-object v0
.end method

.method public static startCheck([BJ[BLim/tpelyyftgw/tgnet/TLRPC$TL_passwordKdfAlgoSHA256SHA256PBKDF2HMACSHA512iter100000SHA256ModPow;)Lim/tpelyyftgw/tgnet/TLRPC$TL_inputCheckPasswordSRP;
    .registers 31
    .param p0, "x_bytes"    # [B
    .param p1, "srp_id"    # J
    .param p3, "srp_B"    # [B
    .param p4, "algo"    # Lim/tpelyyftgw/tgnet/TLRPC$TL_passwordKdfAlgoSHA256SHA256PBKDF2HMACSHA512iter100000SHA256ModPow;

    .line 51
    move-object/from16 v0, p0

    move-object/from16 v1, p3

    move-object/from16 v2, p4

    if-eqz v0, :cond_136

    if-eqz v1, :cond_136

    array-length v4, v1

    if-eqz v4, :cond_136

    iget-object v4, v2, Lim/tpelyyftgw/tgnet/TLRPC$TL_passwordKdfAlgoSHA256SHA256PBKDF2HMACSHA512iter100000SHA256ModPow;->p:[B

    iget v5, v2, Lim/tpelyyftgw/tgnet/TLRPC$TL_passwordKdfAlgoSHA256SHA256PBKDF2HMACSHA512iter100000SHA256ModPow;->g:I

    invoke-static {v4, v5}, Lim/tpelyyftgw/messenger/Utilities;->isGoodPrime([BI)Z

    move-result v4

    if-nez v4, :cond_1c

    move-wide/from16 v2, p1

    const/4 v1, 0x0

    goto/16 :goto_139

    .line 54
    :cond_1c
    iget v4, v2, Lim/tpelyyftgw/tgnet/TLRPC$TL_passwordKdfAlgoSHA256SHA256PBKDF2HMACSHA512iter100000SHA256ModPow;->g:I

    int-to-long v4, v4

    invoke-static {v4, v5}, Ljava/math/BigInteger;->valueOf(J)Ljava/math/BigInteger;

    move-result-object v4

    .line 55
    .local v4, "g":Ljava/math/BigInteger;
    invoke-static {v4}, Lim/tpelyyftgw/messenger/SRPHelper;->getBigIntegerBytes(Ljava/math/BigInteger;)[B

    move-result-object v5

    .line 56
    .local v5, "g_bytes":[B
    new-instance v6, Ljava/math/BigInteger;

    iget-object v7, v2, Lim/tpelyyftgw/tgnet/TLRPC$TL_passwordKdfAlgoSHA256SHA256PBKDF2HMACSHA512iter100000SHA256ModPow;->p:[B

    const/4 v8, 0x1

    invoke-direct {v6, v8, v7}, Ljava/math/BigInteger;-><init>(I[B)V

    .line 58
    .local v6, "p":Ljava/math/BigInteger;
    const/4 v7, 0x2

    new-array v9, v7, [[B

    iget-object v10, v2, Lim/tpelyyftgw/tgnet/TLRPC$TL_passwordKdfAlgoSHA256SHA256PBKDF2HMACSHA512iter100000SHA256ModPow;->p:[B

    const/4 v11, 0x0

    aput-object v10, v9, v11

    aput-object v5, v9, v8

    invoke-static {v9}, Lim/tpelyyftgw/messenger/Utilities;->computeSHA256([[B)[B

    move-result-object v9

    .line 59
    .local v9, "k_bytes":[B
    new-instance v10, Ljava/math/BigInteger;

    invoke-direct {v10, v8, v9}, Ljava/math/BigInteger;-><init>(I[B)V

    .line 61
    .local v10, "k":Ljava/math/BigInteger;
    new-instance v12, Ljava/math/BigInteger;

    invoke-direct {v12, v8, v0}, Ljava/math/BigInteger;-><init>(I[B)V

    .line 63
    .local v12, "x":Ljava/math/BigInteger;
    const/16 v13, 0x100

    new-array v13, v13, [B

    .line 64
    .local v13, "a_bytes":[B
    sget-object v14, Lim/tpelyyftgw/messenger/Utilities;->random:Ljava/security/SecureRandom;

    invoke-virtual {v14, v13}, Ljava/security/SecureRandom;->nextBytes([B)V

    .line 65
    new-instance v14, Ljava/math/BigInteger;

    invoke-direct {v14, v8, v13}, Ljava/math/BigInteger;-><init>(I[B)V

    .line 67
    .local v14, "a":Ljava/math/BigInteger;
    invoke-virtual {v4, v14, v6}, Ljava/math/BigInteger;->modPow(Ljava/math/BigInteger;Ljava/math/BigInteger;)Ljava/math/BigInteger;

    move-result-object v15

    .line 68
    .local v15, "A":Ljava/math/BigInteger;
    invoke-static {v15}, Lim/tpelyyftgw/messenger/SRPHelper;->getBigIntegerBytes(Ljava/math/BigInteger;)[B

    move-result-object v3

    .line 70
    .local v3, "A_bytes":[B
    new-instance v11, Ljava/math/BigInteger;

    invoke-direct {v11, v8, v1}, Ljava/math/BigInteger;-><init>(I[B)V

    .line 71
    .local v11, "B":Ljava/math/BigInteger;
    sget-object v8, Ljava/math/BigInteger;->ZERO:Ljava/math/BigInteger;

    invoke-virtual {v11, v8}, Ljava/math/BigInteger;->compareTo(Ljava/math/BigInteger;)I

    move-result v8

    if-lez v8, :cond_12f

    invoke-virtual {v11, v6}, Ljava/math/BigInteger;->compareTo(Ljava/math/BigInteger;)I

    move-result v8

    if-ltz v8, :cond_77

    move-object v0, v3

    move-object/from16 v23, v4

    move-wide/from16 v2, p1

    goto/16 :goto_134

    .line 74
    :cond_77
    invoke-static {v11}, Lim/tpelyyftgw/messenger/SRPHelper;->getBigIntegerBytes(Ljava/math/BigInteger;)[B

    move-result-object v8

    .line 76
    .local v8, "B_bytes":[B
    new-array v0, v7, [[B

    const/16 v17, 0x0

    aput-object v3, v0, v17

    const/4 v7, 0x1

    aput-object v8, v0, v7

    invoke-static {v0}, Lim/tpelyyftgw/messenger/Utilities;->computeSHA256([[B)[B

    move-result-object v0

    .line 77
    .local v0, "u_bytes":[B
    new-instance v1, Ljava/math/BigInteger;

    invoke-direct {v1, v7, v0}, Ljava/math/BigInteger;-><init>(I[B)V

    .line 78
    .local v1, "u":Ljava/math/BigInteger;
    sget-object v7, Ljava/math/BigInteger;->ZERO:Ljava/math/BigInteger;

    invoke-virtual {v1, v7}, Ljava/math/BigInteger;->compareTo(Ljava/math/BigInteger;)I

    move-result v7

    if-nez v7, :cond_97

    .line 79
    const/4 v7, 0x0

    return-object v7

    .line 82
    :cond_97
    invoke-virtual {v4, v12, v6}, Ljava/math/BigInteger;->modPow(Ljava/math/BigInteger;Ljava/math/BigInteger;)Ljava/math/BigInteger;

    move-result-object v7

    invoke-virtual {v10, v7}, Ljava/math/BigInteger;->multiply(Ljava/math/BigInteger;)Ljava/math/BigInteger;

    move-result-object v7

    invoke-virtual {v7, v6}, Ljava/math/BigInteger;->mod(Ljava/math/BigInteger;)Ljava/math/BigInteger;

    move-result-object v7

    invoke-virtual {v11, v7}, Ljava/math/BigInteger;->subtract(Ljava/math/BigInteger;)Ljava/math/BigInteger;

    move-result-object v7

    .line 83
    .local v7, "B_kgx":Ljava/math/BigInteger;
    move-object/from16 v19, v0

    .end local v0    # "u_bytes":[B
    .local v19, "u_bytes":[B
    sget-object v0, Ljava/math/BigInteger;->ZERO:Ljava/math/BigInteger;

    invoke-virtual {v7, v0}, Ljava/math/BigInteger;->compareTo(Ljava/math/BigInteger;)I

    move-result v0

    if-gez v0, :cond_b5

    .line 84
    invoke-virtual {v7, v6}, Ljava/math/BigInteger;->add(Ljava/math/BigInteger;)Ljava/math/BigInteger;

    move-result-object v7

    .line 86
    :cond_b5
    invoke-static {v7, v6}, Lim/tpelyyftgw/messenger/Utilities;->isGoodGaAndGb(Ljava/math/BigInteger;Ljava/math/BigInteger;)Z

    move-result v0

    if-nez v0, :cond_bd

    .line 87
    const/4 v0, 0x0

    return-object v0

    .line 90
    :cond_bd
    invoke-virtual {v1, v12}, Ljava/math/BigInteger;->multiply(Ljava/math/BigInteger;)Ljava/math/BigInteger;

    move-result-object v0

    invoke-virtual {v14, v0}, Ljava/math/BigInteger;->add(Ljava/math/BigInteger;)Ljava/math/BigInteger;

    move-result-object v0

    invoke-virtual {v7, v0, v6}, Ljava/math/BigInteger;->modPow(Ljava/math/BigInteger;Ljava/math/BigInteger;)Ljava/math/BigInteger;

    move-result-object v0

    .line 91
    .local v0, "S":Ljava/math/BigInteger;
    invoke-static {v0}, Lim/tpelyyftgw/messenger/SRPHelper;->getBigIntegerBytes(Ljava/math/BigInteger;)[B

    move-result-object v16

    .line 93
    .local v16, "S_bytes":[B
    invoke-static/range {v16 .. v16}, Lim/tpelyyftgw/messenger/Utilities;->computeSHA256([B)[B

    move-result-object v20

    .line 95
    .local v20, "K_bytes":[B
    move-object/from16 v21, v0

    .end local v0    # "S":Ljava/math/BigInteger;
    .local v21, "S":Ljava/math/BigInteger;
    iget-object v0, v2, Lim/tpelyyftgw/tgnet/TLRPC$TL_passwordKdfAlgoSHA256SHA256PBKDF2HMACSHA512iter100000SHA256ModPow;->p:[B

    invoke-static {v0}, Lim/tpelyyftgw/messenger/Utilities;->computeSHA256([B)[B

    move-result-object v0

    .line 96
    .local v0, "p_hash":[B
    invoke-static {v5}, Lim/tpelyyftgw/messenger/Utilities;->computeSHA256([B)[B

    move-result-object v22

    .line 97
    .local v22, "g_hash":[B
    const/16 v23, 0x0

    move-object/from16 v24, v1

    move/from16 v1, v23

    .local v1, "i":I
    .local v24, "u":Ljava/math/BigInteger;
    :goto_e3
    move-object/from16 v23, v4

    .end local v4    # "g":Ljava/math/BigInteger;
    .local v23, "g":Ljava/math/BigInteger;
    array-length v4, v0

    if-ge v1, v4, :cond_f6

    .line 98
    aget-byte v4, v22, v1

    aget-byte v25, v0, v1

    xor-int v4, v4, v25

    int-to-byte v4, v4

    aput-byte v4, v0, v1

    .line 97
    add-int/lit8 v1, v1, 0x1

    move-object/from16 v4, v23

    goto :goto_e3

    .line 101
    .end local v1    # "i":I
    :cond_f6
    new-instance v1, Lim/tpelyyftgw/tgnet/TLRPC$TL_inputCheckPasswordSRP;

    invoke-direct {v1}, Lim/tpelyyftgw/tgnet/TLRPC$TL_inputCheckPasswordSRP;-><init>()V

    .line 102
    .local v1, "result":Lim/tpelyyftgw/tgnet/TLRPC$TL_inputCheckPasswordSRP;
    const/4 v4, 0x6

    new-array v4, v4, [[B

    const/16 v17, 0x0

    aput-object v0, v4, v17

    move-object/from16 v17, v0

    .end local v0    # "p_hash":[B
    .local v17, "p_hash":[B
    iget-object v0, v2, Lim/tpelyyftgw/tgnet/TLRPC$TL_passwordKdfAlgoSHA256SHA256PBKDF2HMACSHA512iter100000SHA256ModPow;->salt1:[B

    invoke-static {v0}, Lim/tpelyyftgw/messenger/Utilities;->computeSHA256([B)[B

    move-result-object v0

    const/16 v18, 0x1

    aput-object v0, v4, v18

    iget-object v0, v2, Lim/tpelyyftgw/tgnet/TLRPC$TL_passwordKdfAlgoSHA256SHA256PBKDF2HMACSHA512iter100000SHA256ModPow;->salt2:[B

    invoke-static {v0}, Lim/tpelyyftgw/messenger/Utilities;->computeSHA256([B)[B

    move-result-object v0

    const/16 v18, 0x2

    aput-object v0, v4, v18

    const/4 v0, 0x3

    aput-object v3, v4, v0

    const/4 v0, 0x4

    aput-object v8, v4, v0

    const/4 v0, 0x5

    aput-object v20, v4, v0

    invoke-static {v4}, Lim/tpelyyftgw/messenger/Utilities;->computeSHA256([[B)[B

    move-result-object v0

    iput-object v0, v1, Lim/tpelyyftgw/tgnet/TLRPC$TL_inputCheckPasswordSRP;->M1:[B

    .line 103
    iput-object v3, v1, Lim/tpelyyftgw/tgnet/TLRPC$TL_inputCheckPasswordSRP;->A:[B

    .line 104
    move-object v0, v3

    move-wide/from16 v2, p1

    .end local v3    # "A_bytes":[B
    .local v0, "A_bytes":[B
    iput-wide v2, v1, Lim/tpelyyftgw/tgnet/TLRPC$TL_inputCheckPasswordSRP;->srp_id:J

    .line 105
    return-object v1

    .line 71
    .end local v0    # "A_bytes":[B
    .end local v1    # "result":Lim/tpelyyftgw/tgnet/TLRPC$TL_inputCheckPasswordSRP;
    .end local v7    # "B_kgx":Ljava/math/BigInteger;
    .end local v8    # "B_bytes":[B
    .end local v16    # "S_bytes":[B
    .end local v17    # "p_hash":[B
    .end local v19    # "u_bytes":[B
    .end local v20    # "K_bytes":[B
    .end local v21    # "S":Ljava/math/BigInteger;
    .end local v22    # "g_hash":[B
    .end local v23    # "g":Ljava/math/BigInteger;
    .end local v24    # "u":Ljava/math/BigInteger;
    .restart local v3    # "A_bytes":[B
    .restart local v4    # "g":Ljava/math/BigInteger;
    :cond_12f
    move-object v0, v3

    move-object/from16 v23, v4

    move-wide/from16 v2, p1

    .line 72
    .end local v3    # "A_bytes":[B
    .end local v4    # "g":Ljava/math/BigInteger;
    .restart local v0    # "A_bytes":[B
    .restart local v23    # "g":Ljava/math/BigInteger;
    :goto_134
    const/4 v1, 0x0

    return-object v1

    .line 51
    .end local v0    # "A_bytes":[B
    .end local v5    # "g_bytes":[B
    .end local v6    # "p":Ljava/math/BigInteger;
    .end local v9    # "k_bytes":[B
    .end local v10    # "k":Ljava/math/BigInteger;
    .end local v11    # "B":Ljava/math/BigInteger;
    .end local v12    # "x":Ljava/math/BigInteger;
    .end local v13    # "a_bytes":[B
    .end local v14    # "a":Ljava/math/BigInteger;
    .end local v15    # "A":Ljava/math/BigInteger;
    .end local v23    # "g":Ljava/math/BigInteger;
    :cond_136
    move-wide/from16 v2, p1

    const/4 v1, 0x0

    .line 52
    :goto_139
    return-object v1
.end method