package com.google.crypto.tink.subtle;

import androidx.media3.session.legacy.PlaybackStateCompat;
import defpackage.hs0;
import java.security.GeneralSecurityException;
import java.security.MessageDigest;
import java.util.Arrays;

/* JADX INFO: loaded from: classes2.dex */
final class Ed25519 {
    public static final int PUBLIC_KEY_LEN = 32;
    public static final int SECRET_KEY_LEN = 32;
    public static final int SIGNATURE_LEN = 64;
    private static final CachedXYT CACHED_NEUTRAL = new CachedXYT(new long[]{1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, new long[]{1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, new long[]{0, 0, 0, 0, 0, 0, 0, 0, 0, 0});
    private static final PartialXYZT NEUTRAL = new PartialXYZT(new XYZ(new long[]{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, new long[]{1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, new long[]{1, 0, 0, 0, 0, 0, 0, 0, 0, 0}), new long[]{1, 0, 0, 0, 0, 0, 0, 0, 0, 0});
    static final byte[] GROUP_ORDER = {-19, -45, -11, 92, 26, 99, 18, 88, -42, -100, -9, -94, -34, -7, -34, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16};

    public static class CachedXYT {
        final long[] t2d;
        final long[] yMinusX;
        final long[] yPlusX;

        public CachedXYT() {
            this(new long[10], new long[10], new long[10]);
        }

        public void copyConditional(CachedXYT cachedXYT, int i) {
            Curve25519.copyConditional(this.yPlusX, cachedXYT.yPlusX, i);
            Curve25519.copyConditional(this.yMinusX, cachedXYT.yMinusX, i);
            Curve25519.copyConditional(this.t2d, cachedXYT.t2d, i);
        }

        public void multByZ(long[] jArr, long[] jArr2) {
            System.arraycopy(jArr2, 0, jArr, 0, 10);
        }

        public CachedXYT(long[] jArr, long[] jArr2, long[] jArr3) {
            this.yPlusX = jArr;
            this.yMinusX = jArr2;
            this.t2d = jArr3;
        }

        public CachedXYT(CachedXYT cachedXYT) {
            this.yPlusX = Arrays.copyOf(cachedXYT.yPlusX, 10);
            this.yMinusX = Arrays.copyOf(cachedXYT.yMinusX, 10);
            this.t2d = Arrays.copyOf(cachedXYT.t2d, 10);
        }
    }

    public static class CachedXYZT extends CachedXYT {
        private final long[] z;

        public CachedXYZT() {
            this(new long[10], new long[10], new long[10], new long[10]);
        }

        @Override // com.google.crypto.tink.subtle.Ed25519.CachedXYT
        public void multByZ(long[] jArr, long[] jArr2) {
            Field25519.mult(jArr, jArr2, this.z);
        }

        public CachedXYZT(XYZT xyzt) {
            this();
            long[] jArr = this.yPlusX;
            XYZ xyz = xyzt.xyz;
            Field25519.sum(jArr, xyz.y, xyz.x);
            long[] jArr2 = this.yMinusX;
            XYZ xyz2 = xyzt.xyz;
            Field25519.sub(jArr2, xyz2.y, xyz2.x);
            System.arraycopy(xyzt.xyz.z, 0, this.z, 0, 10);
            Field25519.mult(this.t2d, xyzt.t, Ed25519Constants.D2);
        }

        public CachedXYZT(long[] jArr, long[] jArr2, long[] jArr3, long[] jArr4) {
            super(jArr, jArr2, jArr4);
            this.z = jArr3;
        }
    }

    public static class PartialXYZT {
        final long[] t;
        final XYZ xyz;

        public PartialXYZT() {
            this(new XYZ(), new long[10]);
        }

        public PartialXYZT(XYZ xyz, long[] jArr) {
            this.xyz = xyz;
            this.t = jArr;
        }

        public PartialXYZT(PartialXYZT partialXYZT) {
            this.xyz = new XYZ(partialXYZT.xyz);
            this.t = Arrays.copyOf(partialXYZT.t, 10);
        }
    }

    public static class XYZ {
        final long[] x;
        final long[] y;
        final long[] z;

        public XYZ() {
            this(new long[10], new long[10], new long[10]);
        }

        @hs0
        public static XYZ fromPartialXYZT(XYZ xyz, PartialXYZT partialXYZT) {
            Field25519.mult(xyz.x, partialXYZT.xyz.x, partialXYZT.t);
            long[] jArr = xyz.y;
            XYZ xyz2 = partialXYZT.xyz;
            Field25519.mult(jArr, xyz2.y, xyz2.z);
            Field25519.mult(xyz.z, partialXYZT.xyz.z, partialXYZT.t);
            return xyz;
        }

        public boolean isOnCurve() {
            long[] jArr = new long[10];
            Field25519.square(jArr, this.x);
            long[] jArr2 = new long[10];
            Field25519.square(jArr2, this.y);
            long[] jArr3 = new long[10];
            Field25519.square(jArr3, this.z);
            long[] jArr4 = new long[10];
            Field25519.square(jArr4, jArr3);
            long[] jArr5 = new long[10];
            Field25519.sub(jArr5, jArr2, jArr);
            Field25519.mult(jArr5, jArr5, jArr3);
            long[] jArr6 = new long[10];
            Field25519.mult(jArr6, jArr, jArr2);
            Field25519.mult(jArr6, jArr6, Ed25519Constants.D);
            Field25519.sum(jArr6, jArr4);
            Field25519.reduce(jArr6, jArr6);
            return Bytes.equal(Field25519.contract(jArr5), Field25519.contract(jArr6));
        }

        public byte[] toBytes() {
            long[] jArr = new long[10];
            long[] jArr2 = new long[10];
            long[] jArr3 = new long[10];
            Field25519.inverse(jArr, this.z);
            Field25519.mult(jArr2, this.x, jArr);
            Field25519.mult(jArr3, this.y, jArr);
            byte[] bArrContract = Field25519.contract(jArr3);
            bArrContract[31] = (byte) ((Ed25519.getLsb(jArr2) << 7) ^ bArrContract[31]);
            return bArrContract;
        }

        public XYZ(long[] jArr, long[] jArr2, long[] jArr3) {
            this.x = jArr;
            this.y = jArr2;
            this.z = jArr3;
        }

        public XYZ(XYZ xyz) {
            this.x = Arrays.copyOf(xyz.x, 10);
            this.y = Arrays.copyOf(xyz.y, 10);
            this.z = Arrays.copyOf(xyz.z, 10);
        }

        public XYZ(PartialXYZT partialXYZT) {
            this();
            fromPartialXYZT(this, partialXYZT);
        }
    }

    public static class XYZT {
        final long[] t;
        final XYZ xyz;

        public XYZT() {
            this(new XYZ(), new long[10]);
        }

        /* JADX INFO: Access modifiers changed from: private */
        public static XYZT fromBytesNegateVarTime(byte[] bArr) throws GeneralSecurityException {
            long[] jArr = new long[10];
            long[] jArrExpand = Field25519.expand(bArr);
            long[] jArr2 = new long[10];
            jArr2[0] = 1;
            long[] jArr3 = new long[10];
            long[] jArr4 = new long[10];
            long[] jArr5 = new long[10];
            long[] jArr6 = new long[10];
            long[] jArr7 = new long[10];
            Field25519.square(jArr4, jArrExpand);
            Field25519.mult(jArr5, jArr4, Ed25519Constants.D);
            Field25519.sub(jArr4, jArr4, jArr2);
            Field25519.sum(jArr5, jArr5, jArr2);
            long[] jArr8 = new long[10];
            Field25519.square(jArr8, jArr5);
            Field25519.mult(jArr8, jArr8, jArr5);
            Field25519.square(jArr, jArr8);
            Field25519.mult(jArr, jArr, jArr5);
            Field25519.mult(jArr, jArr, jArr4);
            Ed25519.pow2252m3(jArr, jArr);
            Field25519.mult(jArr, jArr, jArr8);
            Field25519.mult(jArr, jArr, jArr4);
            Field25519.square(jArr6, jArr);
            Field25519.mult(jArr6, jArr6, jArr5);
            Field25519.sub(jArr7, jArr6, jArr4);
            if (Ed25519.isNonZeroVarTime(jArr7)) {
                Field25519.sum(jArr7, jArr6, jArr4);
                if (Ed25519.isNonZeroVarTime(jArr7)) {
                    throw new GeneralSecurityException("Cannot convert given bytes to extended projective coordinates. No square root exists for modulo 2^255-19");
                }
                Field25519.mult(jArr, jArr, Ed25519Constants.SQRTM1);
            }
            if (!Ed25519.isNonZeroVarTime(jArr) && ((bArr[31] & 255) >> 7) != 0) {
                throw new GeneralSecurityException("Cannot convert given bytes to extended projective coordinates. Computed x is zero and encoded x's least significant bit is not zero");
            }
            if (Ed25519.getLsb(jArr) == ((bArr[31] & 255) >> 7)) {
                Ed25519.neg(jArr, jArr);
            }
            Field25519.mult(jArr3, jArr, jArrExpand);
            return new XYZT(new XYZ(jArr, jArrExpand, jArr2), jArr3);
        }

        /* JADX INFO: Access modifiers changed from: private */
        @hs0
        public static XYZT fromPartialXYZT(XYZT xyzt, PartialXYZT partialXYZT) {
            Field25519.mult(xyzt.xyz.x, partialXYZT.xyz.x, partialXYZT.t);
            long[] jArr = xyzt.xyz.y;
            XYZ xyz = partialXYZT.xyz;
            Field25519.mult(jArr, xyz.y, xyz.z);
            Field25519.mult(xyzt.xyz.z, partialXYZT.xyz.z, partialXYZT.t);
            long[] jArr2 = xyzt.t;
            XYZ xyz2 = partialXYZT.xyz;
            Field25519.mult(jArr2, xyz2.x, xyz2.y);
            return xyzt;
        }

        public XYZT(XYZ xyz, long[] jArr) {
            this.xyz = xyz;
            this.t = jArr;
        }

        public XYZT(PartialXYZT partialXYZT) {
            this();
            fromPartialXYZT(this, partialXYZT);
        }
    }

    private Ed25519() {
    }

    private static void add(PartialXYZT partialXYZT, XYZT xyzt, CachedXYT cachedXYT) {
        long[] jArr = new long[10];
        long[] jArr2 = partialXYZT.xyz.x;
        XYZ xyz = xyzt.xyz;
        Field25519.sum(jArr2, xyz.y, xyz.x);
        long[] jArr3 = partialXYZT.xyz.y;
        XYZ xyz2 = xyzt.xyz;
        Field25519.sub(jArr3, xyz2.y, xyz2.x);
        long[] jArr4 = partialXYZT.xyz.y;
        Field25519.mult(jArr4, jArr4, cachedXYT.yMinusX);
        XYZ xyz3 = partialXYZT.xyz;
        Field25519.mult(xyz3.z, xyz3.x, cachedXYT.yPlusX);
        Field25519.mult(partialXYZT.t, xyzt.t, cachedXYT.t2d);
        cachedXYT.multByZ(partialXYZT.xyz.x, xyzt.xyz.z);
        long[] jArr5 = partialXYZT.xyz.x;
        Field25519.sum(jArr, jArr5, jArr5);
        XYZ xyz4 = partialXYZT.xyz;
        Field25519.sub(xyz4.x, xyz4.z, xyz4.y);
        XYZ xyz5 = partialXYZT.xyz;
        long[] jArr6 = xyz5.y;
        Field25519.sum(jArr6, xyz5.z, jArr6);
        Field25519.sum(partialXYZT.xyz.z, jArr, partialXYZT.t);
        long[] jArr7 = partialXYZT.t;
        Field25519.sub(jArr7, jArr, jArr7);
    }

    private static XYZ doubleScalarMultVarTime(byte[] bArr, XYZT xyzt, byte[] bArr2) {
        CachedXYZT[] cachedXYZTArr = new CachedXYZT[8];
        cachedXYZTArr[0] = new CachedXYZT(xyzt);
        PartialXYZT partialXYZT = new PartialXYZT();
        doubleXYZT(partialXYZT, xyzt);
        XYZT xyzt2 = new XYZT(partialXYZT);
        for (int i = 1; i < 8; i++) {
            add(partialXYZT, xyzt2, cachedXYZTArr[i - 1]);
            cachedXYZTArr[i] = new CachedXYZT(new XYZT(partialXYZT));
        }
        byte[] bArrSlide = slide(bArr);
        byte[] bArrSlide2 = slide(bArr2);
        PartialXYZT partialXYZT2 = new PartialXYZT(NEUTRAL);
        XYZT xyzt3 = new XYZT();
        int i2 = 255;
        while (i2 >= 0 && bArrSlide[i2] == 0 && bArrSlide2[i2] == 0) {
            i2--;
        }
        while (i2 >= 0) {
            doubleXYZ(partialXYZT2, new XYZ(partialXYZT2));
            byte b = bArrSlide[i2];
            if (b > 0) {
                add(partialXYZT2, XYZT.fromPartialXYZT(xyzt3, partialXYZT2), cachedXYZTArr[bArrSlide[i2] / 2]);
            } else if (b < 0) {
                sub(partialXYZT2, XYZT.fromPartialXYZT(xyzt3, partialXYZT2), cachedXYZTArr[(-bArrSlide[i2]) / 2]);
            }
            byte b2 = bArrSlide2[i2];
            if (b2 > 0) {
                add(partialXYZT2, XYZT.fromPartialXYZT(xyzt3, partialXYZT2), Ed25519Constants.B2[bArrSlide2[i2] / 2]);
            } else if (b2 < 0) {
                sub(partialXYZT2, XYZT.fromPartialXYZT(xyzt3, partialXYZT2), Ed25519Constants.B2[(-bArrSlide2[i2]) / 2]);
            }
            i2--;
        }
        return new XYZ(partialXYZT2);
    }

    private static void doubleXYZ(PartialXYZT partialXYZT, XYZ xyz) {
        long[] jArr = new long[10];
        Field25519.square(partialXYZT.xyz.x, xyz.x);
        Field25519.square(partialXYZT.xyz.z, xyz.y);
        Field25519.square(partialXYZT.t, xyz.z);
        long[] jArr2 = partialXYZT.t;
        Field25519.sum(jArr2, jArr2, jArr2);
        Field25519.sum(partialXYZT.xyz.y, xyz.x, xyz.y);
        Field25519.square(jArr, partialXYZT.xyz.y);
        XYZ xyz2 = partialXYZT.xyz;
        Field25519.sum(xyz2.y, xyz2.z, xyz2.x);
        XYZ xyz3 = partialXYZT.xyz;
        long[] jArr3 = xyz3.z;
        Field25519.sub(jArr3, jArr3, xyz3.x);
        XYZ xyz4 = partialXYZT.xyz;
        Field25519.sub(xyz4.x, jArr, xyz4.y);
        long[] jArr4 = partialXYZT.t;
        Field25519.sub(jArr4, jArr4, partialXYZT.xyz.z);
    }

    private static void doubleXYZT(PartialXYZT partialXYZT, XYZT xyzt) {
        doubleXYZ(partialXYZT, xyzt.xyz);
    }

    private static int eq(int i, int i2) {
        int i3 = (~(i ^ i2)) & 255;
        int i4 = i3 & (i3 << 4);
        int i5 = i4 & (i4 << 2);
        return ((i5 & (i5 << 1)) >> 7) & 1;
    }

    public static byte[] getHashedScalar(byte[] bArr) throws GeneralSecurityException {
        MessageDigest engineFactory = EngineFactory.MESSAGE_DIGEST.getInstance("SHA-512");
        engineFactory.update(bArr, 0, 32);
        byte[] bArrDigest = engineFactory.digest();
        bArrDigest[0] = (byte) (bArrDigest[0] & 248);
        byte b = (byte) (bArrDigest[31] & 127);
        bArrDigest[31] = b;
        bArrDigest[31] = (byte) (b | 64);
        return bArrDigest;
    }

    /* JADX INFO: Access modifiers changed from: private */
    public static int getLsb(long[] jArr) {
        return Field25519.contract(jArr)[0] & 1;
    }

    /* JADX INFO: Access modifiers changed from: private */
    public static boolean isNonZeroVarTime(long[] jArr) {
        long[] jArr2 = new long[jArr.length + 1];
        System.arraycopy(jArr, 0, jArr2, 0, jArr.length);
        Field25519.reduceCoefficients(jArr2);
        for (byte b : Field25519.contract(jArr2)) {
            if (b != 0) {
                return true;
            }
        }
        return false;
    }

    private static boolean isSmallerThanGroupOrder(byte[] bArr) {
        for (int i = 31; i >= 0; i--) {
            int i2 = bArr[i] & 255;
            int i3 = GROUP_ORDER[i] & 255;
            if (i2 != i3) {
                return i2 < i3;
            }
        }
        return false;
    }

    private static long load3(byte[] bArr, int i) {
        return (((long) (bArr[i + 2] & 255)) << 16) | (((long) bArr[i]) & 255) | (((long) (bArr[i + 1] & 255)) << 8);
    }

    private static long load4(byte[] bArr, int i) {
        return (((long) (bArr[i + 3] & 255)) << 24) | load3(bArr, i);
    }

    private static void mulAdd(byte[] bArr, byte[] bArr2, byte[] bArr3, byte[] bArr4) {
        long jLoad3 = load3(bArr2, 0) & 2097151;
        long jLoad4 = (load4(bArr2, 2) >> 5) & 2097151;
        long jLoad32 = (load3(bArr2, 5) >> 2) & 2097151;
        long jLoad42 = (load4(bArr2, 7) >> 7) & 2097151;
        long jLoad43 = (load4(bArr2, 10) >> 4) & 2097151;
        long jLoad33 = (load3(bArr2, 13) >> 1) & 2097151;
        long jLoad44 = (load4(bArr2, 15) >> 6) & 2097151;
        long jLoad34 = (load3(bArr2, 18) >> 3) & 2097151;
        long jLoad35 = load3(bArr2, 21) & 2097151;
        long jLoad45 = (load4(bArr2, 23) >> 5) & 2097151;
        long jLoad36 = (load3(bArr2, 26) >> 2) & 2097151;
        long jLoad46 = load4(bArr2, 28) >> 7;
        long jLoad37 = load3(bArr3, 0) & 2097151;
        long jLoad47 = (load4(bArr3, 2) >> 5) & 2097151;
        long jLoad38 = (load3(bArr3, 5) >> 2) & 2097151;
        long jLoad48 = (load4(bArr3, 7) >> 7) & 2097151;
        long jLoad49 = (load4(bArr3, 10) >> 4) & 2097151;
        long jLoad39 = (load3(bArr3, 13) >> 1) & 2097151;
        long jLoad410 = (load4(bArr3, 15) >> 6) & 2097151;
        long jLoad310 = (load3(bArr3, 18) >> 3) & 2097151;
        long jLoad311 = load3(bArr3, 21) & 2097151;
        long jLoad411 = (load4(bArr3, 23) >> 5) & 2097151;
        long jLoad312 = (load3(bArr3, 26) >> 2) & 2097151;
        long jLoad412 = load4(bArr3, 28) >> 7;
        long jLoad313 = load3(bArr4, 0) & 2097151;
        long jLoad413 = (load4(bArr4, 2) >> 5) & 2097151;
        long jLoad314 = (load3(bArr4, 5) >> 2) & 2097151;
        long jLoad414 = (load4(bArr4, 7) >> 7) & 2097151;
        long jLoad415 = (load4(bArr4, 10) >> 4) & 2097151;
        long jLoad315 = (load3(bArr4, 13) >> 1) & 2097151;
        long jLoad416 = (load4(bArr4, 15) >> 6) & 2097151;
        long jLoad316 = (load3(bArr4, 18) >> 3) & 2097151;
        long jLoad317 = load3(bArr4, 21) & 2097151;
        long j = (jLoad3 * jLoad37) + jLoad313;
        long j2 = (jLoad4 * jLoad37) + (jLoad3 * jLoad47) + jLoad413;
        long j3 = (jLoad32 * jLoad37) + (jLoad4 * jLoad47) + (jLoad3 * jLoad38) + jLoad314;
        long j4 = (jLoad42 * jLoad37) + (jLoad32 * jLoad47) + (jLoad4 * jLoad38) + (jLoad3 * jLoad48) + jLoad414;
        long j5 = (jLoad43 * jLoad37) + (jLoad42 * jLoad47) + (jLoad32 * jLoad38) + (jLoad4 * jLoad48) + (jLoad3 * jLoad49) + jLoad415;
        long j6 = (jLoad33 * jLoad37) + (jLoad43 * jLoad47) + (jLoad42 * jLoad38) + (jLoad32 * jLoad48) + (jLoad4 * jLoad49) + (jLoad3 * jLoad39) + jLoad315;
        long j7 = (jLoad44 * jLoad37) + (jLoad33 * jLoad47) + (jLoad43 * jLoad38) + (jLoad42 * jLoad48) + (jLoad32 * jLoad49) + (jLoad4 * jLoad39) + (jLoad3 * jLoad410) + jLoad416;
        long j8 = (jLoad34 * jLoad37) + (jLoad44 * jLoad47) + (jLoad33 * jLoad38) + (jLoad43 * jLoad48) + (jLoad42 * jLoad49) + (jLoad32 * jLoad39) + (jLoad4 * jLoad410) + (jLoad3 * jLoad310) + jLoad316;
        long j9 = (jLoad35 * jLoad37) + (jLoad34 * jLoad47) + (jLoad44 * jLoad38) + (jLoad33 * jLoad48) + (jLoad43 * jLoad49) + (jLoad42 * jLoad39) + (jLoad32 * jLoad410) + (jLoad4 * jLoad310) + (jLoad3 * jLoad311) + jLoad317;
        long jLoad417 = (jLoad45 * jLoad37) + (jLoad35 * jLoad47) + (jLoad34 * jLoad38) + (jLoad44 * jLoad48) + (jLoad33 * jLoad49) + (jLoad43 * jLoad39) + (jLoad42 * jLoad410) + (jLoad32 * jLoad310) + (jLoad4 * jLoad311) + (jLoad3 * jLoad411) + ((load4(bArr4, 23) >> 5) & 2097151);
        long jLoad318 = (jLoad36 * jLoad37) + (jLoad45 * jLoad47) + (jLoad35 * jLoad38) + (jLoad34 * jLoad48) + (jLoad44 * jLoad49) + (jLoad33 * jLoad39) + (jLoad43 * jLoad410) + (jLoad42 * jLoad310) + (jLoad32 * jLoad311) + (jLoad4 * jLoad411) + (jLoad3 * jLoad312) + ((load3(bArr4, 26) >> 2) & 2097151);
        long j10 = jLoad37 * jLoad46;
        long jLoad418 = j10 + (jLoad36 * jLoad47) + (jLoad45 * jLoad38) + (jLoad35 * jLoad48) + (jLoad34 * jLoad49) + (jLoad44 * jLoad39) + (jLoad33 * jLoad410) + (jLoad43 * jLoad310) + (jLoad42 * jLoad311) + (jLoad32 * jLoad411) + (jLoad4 * jLoad312) + (jLoad3 * jLoad412) + (load4(bArr4, 28) >> 7);
        long j11 = (jLoad47 * jLoad46) + (jLoad36 * jLoad38) + (jLoad45 * jLoad48) + (jLoad35 * jLoad49) + (jLoad34 * jLoad39) + (jLoad44 * jLoad410) + (jLoad33 * jLoad310) + (jLoad43 * jLoad311) + (jLoad42 * jLoad411) + (jLoad32 * jLoad312) + (jLoad4 * jLoad412);
        long j12 = jLoad38 * jLoad46;
        long j13 = j12 + (jLoad36 * jLoad48) + (jLoad45 * jLoad49) + (jLoad35 * jLoad39) + (jLoad34 * jLoad410) + (jLoad44 * jLoad310) + (jLoad33 * jLoad311) + (jLoad43 * jLoad411) + (jLoad42 * jLoad312) + (jLoad32 * jLoad412);
        long j14 = jLoad48 * jLoad46;
        long j15 = j14 + (jLoad36 * jLoad49) + (jLoad45 * jLoad39) + (jLoad35 * jLoad410) + (jLoad34 * jLoad310) + (jLoad44 * jLoad311) + (jLoad33 * jLoad411) + (jLoad43 * jLoad312) + (jLoad42 * jLoad412);
        long j16 = jLoad49 * jLoad46;
        long j17 = j16 + (jLoad36 * jLoad39) + (jLoad45 * jLoad410) + (jLoad35 * jLoad310) + (jLoad34 * jLoad311) + (jLoad44 * jLoad411) + (jLoad33 * jLoad312) + (jLoad43 * jLoad412);
        long j18 = jLoad39 * jLoad46;
        long j19 = j18 + (jLoad36 * jLoad410) + (jLoad45 * jLoad310) + (jLoad35 * jLoad311) + (jLoad34 * jLoad411) + (jLoad44 * jLoad312) + (jLoad33 * jLoad412);
        long j20 = jLoad410 * jLoad46;
        long j21 = j20 + (jLoad36 * jLoad310) + (jLoad45 * jLoad311) + (jLoad35 * jLoad411) + (jLoad34 * jLoad312) + (jLoad44 * jLoad412);
        long j22 = jLoad310 * jLoad46;
        long j23 = j22 + (jLoad36 * jLoad311) + (jLoad45 * jLoad411) + (jLoad35 * jLoad312) + (jLoad34 * jLoad412);
        long j24 = jLoad311 * jLoad46;
        long j25 = j24 + (jLoad36 * jLoad411) + (jLoad45 * jLoad312) + (jLoad35 * jLoad412);
        long j26 = (jLoad411 * jLoad46) + (jLoad36 * jLoad312) + (jLoad45 * jLoad412);
        long j27 = jLoad312 * jLoad46;
        long j28 = jLoad46 * jLoad412;
        long j29 = (j + PlaybackStateCompat.ACTION_SET_CAPTIONING_ENABLED) >> 21;
        long j30 = j2 + j29;
        long j31 = j - (j29 << 21);
        long j32 = (j3 + PlaybackStateCompat.ACTION_SET_CAPTIONING_ENABLED) >> 21;
        long j33 = j4 + j32;
        long j34 = j3 - (j32 << 21);
        long j35 = (j5 + PlaybackStateCompat.ACTION_SET_CAPTIONING_ENABLED) >> 21;
        long j36 = j6 + j35;
        long j37 = j5 - (j35 << 21);
        long j38 = (j7 + PlaybackStateCompat.ACTION_SET_CAPTIONING_ENABLED) >> 21;
        long j39 = j8 + j38;
        long j40 = j7 - (j38 << 21);
        long j41 = (j9 + PlaybackStateCompat.ACTION_SET_CAPTIONING_ENABLED) >> 21;
        long j42 = jLoad417 + j41;
        long j43 = j9 - (j41 << 21);
        long j44 = (jLoad318 + PlaybackStateCompat.ACTION_SET_CAPTIONING_ENABLED) >> 21;
        long j45 = jLoad418 + j44;
        long j46 = jLoad318 - (j44 << 21);
        long j47 = (j11 + PlaybackStateCompat.ACTION_SET_CAPTIONING_ENABLED) >> 21;
        long j48 = j13 + j47;
        long j49 = j11 - (j47 << 21);
        long j50 = (j15 + PlaybackStateCompat.ACTION_SET_CAPTIONING_ENABLED) >> 21;
        long j51 = j17 + j50;
        long j52 = j15 - (j50 << 21);
        long j53 = (j19 + PlaybackStateCompat.ACTION_SET_CAPTIONING_ENABLED) >> 21;
        long j54 = j21 + j53;
        long j55 = j19 - (j53 << 21);
        long j56 = (j23 + PlaybackStateCompat.ACTION_SET_CAPTIONING_ENABLED) >> 21;
        long j57 = j25 + j56;
        long j58 = j23 - (j56 << 21);
        long j59 = (j26 + PlaybackStateCompat.ACTION_SET_CAPTIONING_ENABLED) >> 21;
        long j60 = j27 + (jLoad36 * jLoad412) + j59;
        long j61 = j26 - (j59 << 21);
        long j62 = (j28 + PlaybackStateCompat.ACTION_SET_CAPTIONING_ENABLED) >> 21;
        long j63 = (j30 + PlaybackStateCompat.ACTION_SET_CAPTIONING_ENABLED) >> 21;
        long j64 = j34 + j63;
        long j65 = j30 - (j63 << 21);
        long j66 = (j33 + PlaybackStateCompat.ACTION_SET_CAPTIONING_ENABLED) >> 21;
        long j67 = j37 + j66;
        long j68 = j33 - (j66 << 21);
        long j69 = (j36 + PlaybackStateCompat.ACTION_SET_CAPTIONING_ENABLED) >> 21;
        long j70 = j40 + j69;
        long j71 = j36 - (j69 << 21);
        long j72 = (j39 + PlaybackStateCompat.ACTION_SET_CAPTIONING_ENABLED) >> 21;
        long j73 = j43 + j72;
        long j74 = j39 - (j72 << 21);
        long j75 = (j42 + PlaybackStateCompat.ACTION_SET_CAPTIONING_ENABLED) >> 21;
        long j76 = j46 + j75;
        long j77 = j42 - (j75 << 21);
        long j78 = (j45 + PlaybackStateCompat.ACTION_SET_CAPTIONING_ENABLED) >> 21;
        long j79 = j49 + j78;
        long j80 = j45 - (j78 << 21);
        long j81 = (j48 + PlaybackStateCompat.ACTION_SET_CAPTIONING_ENABLED) >> 21;
        long j82 = j52 + j81;
        long j83 = j48 - (j81 << 21);
        long j84 = (j51 + PlaybackStateCompat.ACTION_SET_CAPTIONING_ENABLED) >> 21;
        long j85 = j55 + j84;
        long j86 = j51 - (j84 << 21);
        long j87 = (j54 + PlaybackStateCompat.ACTION_SET_CAPTIONING_ENABLED) >> 21;
        long j88 = j58 + j87;
        long j89 = j54 - (j87 << 21);
        long j90 = (j57 + PlaybackStateCompat.ACTION_SET_CAPTIONING_ENABLED) >> 21;
        long j91 = j61 + j90;
        long j92 = j57 - (j90 << 21);
        long j93 = (j60 + PlaybackStateCompat.ACTION_SET_CAPTIONING_ENABLED) >> 21;
        long j94 = (j28 - (j62 << 21)) + j93;
        long j95 = j60 - (j93 << 21);
        long j96 = (j62 * 666643) + j80;
        long j97 = (j62 * 470296) + j79;
        long j98 = (j62 * 654183) + j83;
        long j99 = j82 - (j62 * 997805);
        long j100 = (j62 * 136657) + j86;
        long j101 = j85 - (j62 * 683901);
        long j102 = (j94 * 470296) + j96;
        long j103 = (j94 * 654183) + j97;
        long j104 = j100 - (j94 * 683901);
        long j105 = (j95 * 470296) + (j94 * 666643) + j76;
        long j106 = (j95 * 654183) + j102;
        long j107 = (j95 * 136657) + (j98 - (j94 * 997805));
        long j108 = ((j94 * 136657) + j99) - (j95 * 683901);
        long j109 = (j91 * 654183) + j105;
        long j110 = (j92 * 654183) + (j91 * 470296) + (j95 * 666643) + j77;
        long j111 = (j92 * 136657) + (j106 - (j91 * 997805));
        long j112 = ((j91 * 136657) + (j103 - (j95 * 997805))) - (j92 * 683901);
        long j113 = (j88 * 666643) + j70;
        long j114 = (j88 * 654183) + (j92 * 470296) + (j91 * 666643) + j73;
        long j115 = (j88 * 136657) + (j109 - (j92 * 997805));
        long j116 = (j113 + PlaybackStateCompat.ACTION_SET_CAPTIONING_ENABLED) >> 21;
        long j117 = (j88 * 470296) + (j92 * 666643) + j74 + j116;
        long j118 = j113 - (j116 << 21);
        long j119 = (j114 + PlaybackStateCompat.ACTION_SET_CAPTIONING_ENABLED) >> 21;
        long j120 = (j110 - (j88 * 997805)) + j119;
        long j121 = j114 - (j119 << 21);
        long j122 = (j115 + PlaybackStateCompat.ACTION_SET_CAPTIONING_ENABLED) >> 21;
        long j123 = (j111 - (j88 * 683901)) + j122;
        long j124 = j115 - (j122 << 21);
        long j125 = (j112 + PlaybackStateCompat.ACTION_SET_CAPTIONING_ENABLED) >> 21;
        long j126 = (j107 - (j91 * 683901)) + j125;
        long j127 = j112 - (j125 << 21);
        long j128 = (j108 + PlaybackStateCompat.ACTION_SET_CAPTIONING_ENABLED) >> 21;
        long j129 = j104 + j128;
        long j130 = j108 - (j128 << 21);
        long j131 = (j101 + PlaybackStateCompat.ACTION_SET_CAPTIONING_ENABLED) >> 21;
        long j132 = j89 + j131;
        long j133 = j101 - (j131 << 21);
        long j134 = (j117 + PlaybackStateCompat.ACTION_SET_CAPTIONING_ENABLED) >> 21;
        long j135 = j121 + j134;
        long j136 = j117 - (j134 << 21);
        long j137 = (j120 + PlaybackStateCompat.ACTION_SET_CAPTIONING_ENABLED) >> 21;
        long j138 = j124 + j137;
        long j139 = j120 - (j137 << 21);
        long j140 = (j123 + PlaybackStateCompat.ACTION_SET_CAPTIONING_ENABLED) >> 21;
        long j141 = j127 + j140;
        long j142 = j123 - (j140 << 21);
        long j143 = (j126 + PlaybackStateCompat.ACTION_SET_CAPTIONING_ENABLED) >> 21;
        long j144 = j130 + j143;
        long j145 = j126 - (j143 << 21);
        long j146 = (j129 + PlaybackStateCompat.ACTION_SET_CAPTIONING_ENABLED) >> 21;
        long j147 = j133 + j146;
        long j148 = j129 - (j146 << 21);
        long j149 = (j132 * 470296) + j118;
        long j150 = (j132 * 654183) + j136;
        long j151 = j135 - (j132 * 997805);
        long j152 = (j132 * 136657) + j139;
        long j153 = j138 - (j132 * 683901);
        long j154 = (j147 * 470296) + (j132 * 666643) + j71;
        long j155 = (j147 * 654183) + j149;
        long j156 = j150 - (j147 * 997805);
        long j157 = (j147 * 136657) + j151;
        long j158 = j152 - (j147 * 683901);
        long j159 = (j148 * 470296) + (j147 * 666643) + j67;
        long j160 = (j148 * 654183) + j154;
        long j161 = j155 - (j148 * 997805);
        long j162 = (j148 * 136657) + j156;
        long j163 = j157 - (j148 * 683901);
        long j164 = (j144 * 654183) + j159;
        long j165 = (j144 * 136657) + j161;
        long j166 = j162 - (j144 * 683901);
        long j167 = (j145 * 470296) + (j144 * 666643) + j64;
        long j168 = (j145 * 654183) + (j144 * 470296) + (j148 * 666643) + j68;
        long j169 = j164 - (j145 * 997805);
        long j170 = (j145 * 136657) + (j160 - (j144 * 997805));
        long j171 = j165 - (j145 * 683901);
        long j172 = (j141 * 666643) + j31;
        long j173 = (j141 * 654183) + j167;
        long j174 = (j141 * 136657) + j169;
        long j175 = (j172 + PlaybackStateCompat.ACTION_SET_CAPTIONING_ENABLED) >> 21;
        long j176 = (j141 * 470296) + (j145 * 666643) + j65 + j175;
        long j177 = j172 - (j175 << 21);
        long j178 = (j173 + PlaybackStateCompat.ACTION_SET_CAPTIONING_ENABLED) >> 21;
        long j179 = (j168 - (j141 * 997805)) + j178;
        long j180 = j173 - (j178 << 21);
        long j181 = (j174 + PlaybackStateCompat.ACTION_SET_CAPTIONING_ENABLED) >> 21;
        long j182 = (j170 - (j141 * 683901)) + j181;
        long j183 = j174 - (j181 << 21);
        long j184 = (j171 + PlaybackStateCompat.ACTION_SET_CAPTIONING_ENABLED) >> 21;
        long j185 = j166 + j184;
        long j186 = j171 - (j184 << 21);
        long j187 = (j163 + PlaybackStateCompat.ACTION_SET_CAPTIONING_ENABLED) >> 21;
        long j188 = j158 + j187;
        long j189 = j163 - (j187 << 21);
        long j190 = (j153 + PlaybackStateCompat.ACTION_SET_CAPTIONING_ENABLED) >> 21;
        long j191 = j142 + j190;
        long j192 = j153 - (j190 << 21);
        long j193 = (j176 + PlaybackStateCompat.ACTION_SET_CAPTIONING_ENABLED) >> 21;
        long j194 = j180 + j193;
        long j195 = j176 - (j193 << 21);
        long j196 = (j179 + PlaybackStateCompat.ACTION_SET_CAPTIONING_ENABLED) >> 21;
        long j197 = j183 + j196;
        long j198 = j179 - (j196 << 21);
        long j199 = (j182 + PlaybackStateCompat.ACTION_SET_CAPTIONING_ENABLED) >> 21;
        long j200 = j186 + j199;
        long j201 = j182 - (j199 << 21);
        long j202 = (j185 + PlaybackStateCompat.ACTION_SET_CAPTIONING_ENABLED) >> 21;
        long j203 = j189 + j202;
        long j204 = j185 - (j202 << 21);
        long j205 = (j188 + PlaybackStateCompat.ACTION_SET_CAPTIONING_ENABLED) >> 21;
        long j206 = j192 + j205;
        long j207 = j188 - (j205 << 21);
        long j208 = (j191 + PlaybackStateCompat.ACTION_SET_CAPTIONING_ENABLED) >> 21;
        long j209 = j191 - (j208 << 21);
        long j210 = (j208 * 666643) + j177;
        long j211 = (j208 * 470296) + j195;
        long j212 = (j208 * 654183) + j194;
        long j213 = j198 - (j208 * 997805);
        long j214 = (j208 * 136657) + j197;
        long j215 = j201 - (j208 * 683901);
        long j216 = j210 >> 21;
        long j217 = j211 + j216;
        long j218 = j210 - (j216 << 21);
        long j219 = j217 >> 21;
        long j220 = j212 + j219;
        long j221 = j217 - (j219 << 21);
        long j222 = j220 >> 21;
        long j223 = j213 + j222;
        long j224 = j220 - (j222 << 21);
        long j225 = j223 >> 21;
        long j226 = j214 + j225;
        long j227 = j223 - (j225 << 21);
        long j228 = j226 >> 21;
        long j229 = j215 + j228;
        long j230 = j226 - (j228 << 21);
        long j231 = j229 >> 21;
        long j232 = j200 + j231;
        long j233 = j229 - (j231 << 21);
        long j234 = j232 >> 21;
        long j235 = j204 + j234;
        long j236 = j232 - (j234 << 21);
        long j237 = j235 >> 21;
        long j238 = j203 + j237;
        long j239 = j235 - (j237 << 21);
        long j240 = j238 >> 21;
        long j241 = j207 + j240;
        long j242 = j238 - (j240 << 21);
        long j243 = j241 >> 21;
        long j244 = j206 + j243;
        long j245 = j241 - (j243 << 21);
        long j246 = j244 >> 21;
        long j247 = j209 + j246;
        long j248 = j244 - (j246 << 21);
        long j249 = j247 >> 21;
        long j250 = j247 - (j249 << 21);
        long j251 = (666643 * j249) + j218;
        long j252 = (470296 * j249) + j221;
        long j253 = (654183 * j249) + j224;
        long j254 = j227 - (997805 * j249);
        long j255 = (136657 * j249) + j230;
        long j256 = j233 - (j249 * 683901);
        long j257 = j251 >> 21;
        long j258 = j252 + j257;
        long j259 = j251 - (j257 << 21);
        long j260 = j258 >> 21;
        long j261 = j253 + j260;
        long j262 = j258 - (j260 << 21);
        long j263 = j261 >> 21;
        long j264 = j254 + j263;
        long j265 = j261 - (j263 << 21);
        long j266 = j264 >> 21;
        long j267 = j255 + j266;
        long j268 = j264 - (j266 << 21);
        long j269 = j267 >> 21;
        long j270 = j256 + j269;
        long j271 = j267 - (j269 << 21);
        long j272 = j270 >> 21;
        long j273 = j236 + j272;
        long j274 = j270 - (j272 << 21);
        long j275 = j273 >> 21;
        long j276 = j239 + j275;
        long j277 = j273 - (j275 << 21);
        long j278 = j276 >> 21;
        long j279 = j242 + j278;
        long j280 = j276 - (j278 << 21);
        long j281 = j279 >> 21;
        long j282 = j245 + j281;
        long j283 = j282 >> 21;
        long j284 = j248 + j283;
        long j285 = j282 - (j283 << 21);
        long j286 = j284 >> 21;
        long j287 = j250 + j286;
        long j288 = j284 - (j286 << 21);
        bArr[0] = (byte) j259;
        bArr[1] = (byte) (j259 >> 8);
        bArr[2] = (byte) ((j259 >> 16) | (j262 << 5));
        bArr[3] = (byte) (j262 >> 3);
        bArr[4] = (byte) (j262 >> 11);
        bArr[5] = (byte) ((j262 >> 19) | (j265 << 2));
        bArr[6] = (byte) (j265 >> 6);
        bArr[7] = (byte) ((j265 >> 14) | (j268 << 7));
        bArr[8] = (byte) (j268 >> 1);
        bArr[9] = (byte) (j268 >> 9);
        bArr[10] = (byte) ((j268 >> 17) | (j271 << 4));
        bArr[11] = (byte) (j271 >> 4);
        bArr[12] = (byte) (j271 >> 12);
        bArr[13] = (byte) ((j271 >> 20) | (j274 << 1));
        bArr[14] = (byte) (j274 >> 7);
        bArr[15] = (byte) ((j274 >> 15) | (j277 << 6));
        bArr[16] = (byte) (j277 >> 2);
        bArr[17] = (byte) (j277 >> 10);
        bArr[18] = (byte) ((j277 >> 18) | (j280 << 3));
        bArr[19] = (byte) (j280 >> 5);
        bArr[20] = (byte) (j280 >> 13);
        bArr[21] = (byte) (j279 - (j281 << 21));
        bArr[22] = (byte) (r0 >> 8);
        bArr[23] = (byte) ((r0 >> 16) | (j285 << 5));
        bArr[24] = (byte) (j285 >> 3);
        bArr[25] = (byte) (j285 >> 11);
        bArr[26] = (byte) ((j285 >> 19) | (j288 << 2));
        bArr[27] = (byte) (j288 >> 6);
        bArr[28] = (byte) ((j288 >> 14) | (j287 << 7));
        bArr[29] = (byte) (j287 >> 1);
        bArr[30] = (byte) (j287 >> 9);
        bArr[31] = (byte) (j287 >> 17);
    }

    /* JADX INFO: Access modifiers changed from: private */
    public static void neg(long[] jArr, long[] jArr2) {
        for (int i = 0; i < jArr2.length; i++) {
            jArr[i] = -jArr2[i];
        }
    }

    /* JADX INFO: Access modifiers changed from: private */
    public static void pow2252m3(long[] jArr, long[] jArr2) {
        long[] jArr3 = new long[10];
        long[] jArr4 = new long[10];
        long[] jArr5 = new long[10];
        Field25519.square(jArr3, jArr2);
        Field25519.square(jArr4, jArr3);
        Field25519.square(jArr4, jArr4);
        Field25519.mult(jArr4, jArr2, jArr4);
        Field25519.mult(jArr3, jArr3, jArr4);
        Field25519.square(jArr3, jArr3);
        Field25519.mult(jArr3, jArr4, jArr3);
        Field25519.square(jArr4, jArr3);
        for (int i = 1; i < 5; i++) {
            Field25519.square(jArr4, jArr4);
        }
        Field25519.mult(jArr3, jArr4, jArr3);
        Field25519.square(jArr4, jArr3);
        for (int i2 = 1; i2 < 10; i2++) {
            Field25519.square(jArr4, jArr4);
        }
        Field25519.mult(jArr4, jArr4, jArr3);
        Field25519.square(jArr5, jArr4);
        for (int i3 = 1; i3 < 20; i3++) {
            Field25519.square(jArr5, jArr5);
        }
        Field25519.mult(jArr4, jArr5, jArr4);
        Field25519.square(jArr4, jArr4);
        for (int i4 = 1; i4 < 10; i4++) {
            Field25519.square(jArr4, jArr4);
        }
        Field25519.mult(jArr3, jArr4, jArr3);
        Field25519.square(jArr4, jArr3);
        for (int i5 = 1; i5 < 50; i5++) {
            Field25519.square(jArr4, jArr4);
        }
        Field25519.mult(jArr4, jArr4, jArr3);
        Field25519.square(jArr5, jArr4);
        for (int i6 = 1; i6 < 100; i6++) {
            Field25519.square(jArr5, jArr5);
        }
        Field25519.mult(jArr4, jArr5, jArr4);
        Field25519.square(jArr4, jArr4);
        for (int i7 = 1; i7 < 50; i7++) {
            Field25519.square(jArr4, jArr4);
        }
        Field25519.mult(jArr3, jArr4, jArr3);
        Field25519.square(jArr3, jArr3);
        Field25519.square(jArr3, jArr3);
        Field25519.mult(jArr, jArr3, jArr2);
    }

    private static void reduce(byte[] bArr) {
        long jLoad3 = load3(bArr, 0) & 2097151;
        long jLoad4 = (load4(bArr, 2) >> 5) & 2097151;
        long jLoad32 = (load3(bArr, 5) >> 2) & 2097151;
        long jLoad42 = (load4(bArr, 7) >> 7) & 2097151;
        long jLoad43 = (load4(bArr, 10) >> 4) & 2097151;
        long jLoad33 = (load3(bArr, 13) >> 1) & 2097151;
        long jLoad44 = (load4(bArr, 15) >> 6) & 2097151;
        long jLoad34 = (load3(bArr, 18) >> 3) & 2097151;
        long jLoad35 = load3(bArr, 21) & 2097151;
        long jLoad45 = (load4(bArr, 23) >> 5) & 2097151;
        long jLoad36 = (load3(bArr, 26) >> 2) & 2097151;
        long jLoad46 = (load4(bArr, 28) >> 7) & 2097151;
        long jLoad47 = (load4(bArr, 31) >> 4) & 2097151;
        long jLoad37 = (load3(bArr, 34) >> 1) & 2097151;
        long jLoad48 = (load4(bArr, 36) >> 6) & 2097151;
        long jLoad38 = (load3(bArr, 39) >> 3) & 2097151;
        long jLoad39 = load3(bArr, 42) & 2097151;
        long jLoad49 = (load4(bArr, 44) >> 5) & 2097151;
        long jLoad310 = (load3(bArr, 47) >> 2) & 2097151;
        long jLoad410 = (load4(bArr, 49) >> 7) & 2097151;
        long jLoad411 = (load4(bArr, 52) >> 4) & 2097151;
        long jLoad311 = (load3(bArr, 55) >> 1) & 2097151;
        long jLoad412 = (load4(bArr, 57) >> 6) & 2097151;
        long jLoad413 = load4(bArr, 60) >> 3;
        long j = (jLoad413 * 666643) + jLoad46;
        long j2 = (jLoad413 * 470296) + jLoad47;
        long j3 = (jLoad413 * 654183) + jLoad37;
        long j4 = jLoad48 - (jLoad413 * 997805);
        long j5 = (jLoad413 * 136657) + jLoad38;
        long j6 = jLoad39 - (jLoad413 * 683901);
        long j7 = (jLoad412 * 666643) + jLoad36;
        long j8 = (jLoad412 * 470296) + j;
        long j9 = (jLoad412 * 654183) + j2;
        long j10 = j3 - (jLoad412 * 997805);
        long j11 = (jLoad412 * 136657) + j4;
        long j12 = j5 - (jLoad412 * 683901);
        long j13 = (jLoad311 * 666643) + jLoad45;
        long j14 = (jLoad311 * 470296) + j7;
        long j15 = (jLoad311 * 654183) + j8;
        long j16 = j9 - (jLoad311 * 997805);
        long j17 = (jLoad311 * 136657) + j10;
        long j18 = j11 - (jLoad311 * 683901);
        long j19 = (jLoad411 * 666643) + jLoad35;
        long j20 = (jLoad411 * 470296) + j13;
        long j21 = (jLoad411 * 654183) + j14;
        long j22 = j15 - (jLoad411 * 997805);
        long j23 = (jLoad411 * 136657) + j16;
        long j24 = j17 - (jLoad411 * 683901);
        long j25 = (jLoad410 * 666643) + jLoad34;
        long j26 = (jLoad410 * 470296) + j19;
        long j27 = (jLoad410 * 654183) + j20;
        long j28 = j21 - (jLoad410 * 997805);
        long j29 = (jLoad410 * 136657) + j22;
        long j30 = j23 - (jLoad410 * 683901);
        long j31 = (jLoad310 * 666643) + jLoad44;
        long j32 = (jLoad310 * 470296) + j25;
        long j33 = (jLoad310 * 654183) + j26;
        long j34 = j27 - (jLoad310 * 997805);
        long j35 = (jLoad310 * 136657) + j28;
        long j36 = j29 - (jLoad310 * 683901);
        long j37 = (j31 + PlaybackStateCompat.ACTION_SET_CAPTIONING_ENABLED) >> 21;
        long j38 = j32 + j37;
        long j39 = j31 - (j37 << 21);
        long j40 = (j33 + PlaybackStateCompat.ACTION_SET_CAPTIONING_ENABLED) >> 21;
        long j41 = j34 + j40;
        long j42 = j33 - (j40 << 21);
        long j43 = (j35 + PlaybackStateCompat.ACTION_SET_CAPTIONING_ENABLED) >> 21;
        long j44 = j36 + j43;
        long j45 = j35 - (j43 << 21);
        long j46 = (j30 + PlaybackStateCompat.ACTION_SET_CAPTIONING_ENABLED) >> 21;
        long j47 = j24 + j46;
        long j48 = j30 - (j46 << 21);
        long j49 = (j18 + PlaybackStateCompat.ACTION_SET_CAPTIONING_ENABLED) >> 21;
        long j50 = j12 + j49;
        long j51 = j18 - (j49 << 21);
        long j52 = (j6 + PlaybackStateCompat.ACTION_SET_CAPTIONING_ENABLED) >> 21;
        long j53 = jLoad49 + j52;
        long j54 = j6 - (j52 << 21);
        long j55 = (j38 + PlaybackStateCompat.ACTION_SET_CAPTIONING_ENABLED) >> 21;
        long j56 = j42 + j55;
        long j57 = j38 - (j55 << 21);
        long j58 = (j41 + PlaybackStateCompat.ACTION_SET_CAPTIONING_ENABLED) >> 21;
        long j59 = j45 + j58;
        long j60 = j41 - (j58 << 21);
        long j61 = (j44 + PlaybackStateCompat.ACTION_SET_CAPTIONING_ENABLED) >> 21;
        long j62 = j48 + j61;
        long j63 = j44 - (j61 << 21);
        long j64 = (j47 + PlaybackStateCompat.ACTION_SET_CAPTIONING_ENABLED) >> 21;
        long j65 = j51 + j64;
        long j66 = j47 - (j64 << 21);
        long j67 = (j50 + PlaybackStateCompat.ACTION_SET_CAPTIONING_ENABLED) >> 21;
        long j68 = j54 + j67;
        long j69 = j50 - (j67 << 21);
        long j70 = (j53 * 666643) + jLoad33;
        long j71 = (j53 * 470296) + j39;
        long j72 = (j53 * 654183) + j57;
        long j73 = j56 - (j53 * 997805);
        long j74 = (j53 * 136657) + j60;
        long j75 = j59 - (j53 * 683901);
        long j76 = (j68 * 666643) + jLoad43;
        long j77 = (j68 * 470296) + j70;
        long j78 = (j68 * 654183) + j71;
        long j79 = j72 - (j68 * 997805);
        long j80 = (j68 * 136657) + j73;
        long j81 = j74 - (j68 * 683901);
        long j82 = (j69 * 666643) + jLoad42;
        long j83 = (j69 * 470296) + j76;
        long j84 = (j69 * 654183) + j77;
        long j85 = (j69 * 136657) + j79;
        long j86 = j80 - (j69 * 683901);
        long j87 = (j65 * 666643) + jLoad32;
        long j88 = (j65 * 470296) + j82;
        long j89 = (j65 * 654183) + j83;
        long j90 = (j65 * 136657) + (j78 - (j69 * 997805));
        long j91 = (j66 * 666643) + jLoad4;
        long j92 = (j66 * 470296) + j87;
        long j93 = (j66 * 654183) + j88;
        long j94 = j89 - (j66 * 997805);
        long j95 = (j66 * 136657) + (j84 - (j65 * 997805));
        long j96 = j90 - (j66 * 683901);
        long j97 = (j62 * 666643) + jLoad3;
        long j98 = (j62 * 470296) + j91;
        long j99 = (j62 * 654183) + j92;
        long j100 = j93 - (j62 * 997805);
        long j101 = (j62 * 136657) + j94;
        long j102 = j95 - (j62 * 683901);
        long j103 = (j97 + PlaybackStateCompat.ACTION_SET_CAPTIONING_ENABLED) >> 21;
        long j104 = j98 + j103;
        long j105 = j97 - (j103 << 21);
        long j106 = (j99 + PlaybackStateCompat.ACTION_SET_CAPTIONING_ENABLED) >> 21;
        long j107 = j100 + j106;
        long j108 = j99 - (j106 << 21);
        long j109 = (j101 + PlaybackStateCompat.ACTION_SET_CAPTIONING_ENABLED) >> 21;
        long j110 = j102 + j109;
        long j111 = j101 - (j109 << 21);
        long j112 = (j96 + PlaybackStateCompat.ACTION_SET_CAPTIONING_ENABLED) >> 21;
        long j113 = (j85 - (j65 * 683901)) + j112;
        long j114 = j96 - (j112 << 21);
        long j115 = (j86 + PlaybackStateCompat.ACTION_SET_CAPTIONING_ENABLED) >> 21;
        long j116 = j81 + j115;
        long j117 = j86 - (j115 << 21);
        long j118 = (j75 + PlaybackStateCompat.ACTION_SET_CAPTIONING_ENABLED) >> 21;
        long j119 = j63 + j118;
        long j120 = j75 - (j118 << 21);
        long j121 = (j104 + PlaybackStateCompat.ACTION_SET_CAPTIONING_ENABLED) >> 21;
        long j122 = j108 + j121;
        long j123 = j104 - (j121 << 21);
        long j124 = (j107 + PlaybackStateCompat.ACTION_SET_CAPTIONING_ENABLED) >> 21;
        long j125 = j111 + j124;
        long j126 = j107 - (j124 << 21);
        long j127 = (j110 + PlaybackStateCompat.ACTION_SET_CAPTIONING_ENABLED) >> 21;
        long j128 = j114 + j127;
        long j129 = j110 - (j127 << 21);
        long j130 = (j113 + PlaybackStateCompat.ACTION_SET_CAPTIONING_ENABLED) >> 21;
        long j131 = j117 + j130;
        long j132 = j113 - (j130 << 21);
        long j133 = (j116 + PlaybackStateCompat.ACTION_SET_CAPTIONING_ENABLED) >> 21;
        long j134 = j120 + j133;
        long j135 = j116 - (j133 << 21);
        long j136 = (j119 + PlaybackStateCompat.ACTION_SET_CAPTIONING_ENABLED) >> 21;
        long j137 = (j136 * 666643) + j105;
        long j138 = (j136 * 136657) + j125;
        long j139 = j137 >> 21;
        long j140 = (j136 * 470296) + j123 + j139;
        long j141 = j137 - (j139 << 21);
        long j142 = j140 >> 21;
        long j143 = (j136 * 654183) + j122 + j142;
        long j144 = j140 - (j142 << 21);
        long j145 = j143 >> 21;
        long j146 = (j126 - (j136 * 997805)) + j145;
        long j147 = j143 - (j145 << 21);
        long j148 = j146 >> 21;
        long j149 = j138 + j148;
        long j150 = j146 - (j148 << 21);
        long j151 = j149 >> 21;
        long j152 = (j129 - (j136 * 683901)) + j151;
        long j153 = j149 - (j151 << 21);
        long j154 = j152 >> 21;
        long j155 = j128 + j154;
        long j156 = j152 - (j154 << 21);
        long j157 = j155 >> 21;
        long j158 = j132 + j157;
        long j159 = j155 - (j157 << 21);
        long j160 = j158 >> 21;
        long j161 = j131 + j160;
        long j162 = j158 - (j160 << 21);
        long j163 = j161 >> 21;
        long j164 = j135 + j163;
        long j165 = j161 - (j163 << 21);
        long j166 = j164 >> 21;
        long j167 = j134 + j166;
        long j168 = j164 - (j166 << 21);
        long j169 = j167 >> 21;
        long j170 = (j119 - (j136 << 21)) + j169;
        long j171 = j167 - (j169 << 21);
        long j172 = j170 >> 21;
        long j173 = j170 - (j172 << 21);
        long j174 = (666643 * j172) + j141;
        long j175 = (654183 * j172) + j147;
        long j176 = j150 - (997805 * j172);
        long j177 = (136657 * j172) + j153;
        long j178 = j156 - (j172 * 683901);
        long j179 = j174 >> 21;
        long j180 = (470296 * j172) + j144 + j179;
        long j181 = j180 >> 21;
        long j182 = j175 + j181;
        long j183 = j180 - (j181 << 21);
        long j184 = j182 >> 21;
        long j185 = j176 + j184;
        long j186 = j182 - (j184 << 21);
        long j187 = j185 >> 21;
        long j188 = j177 + j187;
        long j189 = j185 - (j187 << 21);
        long j190 = j188 >> 21;
        long j191 = j178 + j190;
        long j192 = j188 - (j190 << 21);
        long j193 = j191 >> 21;
        long j194 = j159 + j193;
        long j195 = j191 - (j193 << 21);
        long j196 = j194 >> 21;
        long j197 = j162 + j196;
        long j198 = j194 - (j196 << 21);
        long j199 = j197 >> 21;
        long j200 = j165 + j199;
        long j201 = j197 - (j199 << 21);
        long j202 = j200 >> 21;
        long j203 = j168 + j202;
        long j204 = j203 >> 21;
        long j205 = j171 + j204;
        long j206 = j203 - (j204 << 21);
        long j207 = j205 >> 21;
        long j208 = j173 + j207;
        long j209 = j205 - (j207 << 21);
        bArr[0] = (byte) (j174 - (j179 << 21));
        bArr[1] = (byte) (r1 >> 8);
        bArr[2] = (byte) ((r1 >> 16) | (j183 << 5));
        bArr[3] = (byte) (j183 >> 3);
        bArr[4] = (byte) (j183 >> 11);
        bArr[5] = (byte) ((j183 >> 19) | (j186 << 2));
        bArr[6] = (byte) (j186 >> 6);
        bArr[7] = (byte) ((j186 >> 14) | (j189 << 7));
        bArr[8] = (byte) (j189 >> 1);
        bArr[9] = (byte) (j189 >> 9);
        bArr[10] = (byte) ((j189 >> 17) | (j192 << 4));
        bArr[11] = (byte) (j192 >> 4);
        bArr[12] = (byte) (j192 >> 12);
        bArr[13] = (byte) ((j192 >> 20) | (j195 << 1));
        bArr[14] = (byte) (j195 >> 7);
        bArr[15] = (byte) ((j195 >> 15) | (j198 << 6));
        bArr[16] = (byte) (j198 >> 2);
        bArr[17] = (byte) (j198 >> 10);
        bArr[18] = (byte) ((j198 >> 18) | (j201 << 3));
        bArr[19] = (byte) (j201 >> 5);
        bArr[20] = (byte) (j201 >> 13);
        bArr[21] = (byte) (j200 - (j202 << 21));
        bArr[22] = (byte) (r6 >> 8);
        bArr[23] = (byte) ((r6 >> 16) | (j206 << 5));
        bArr[24] = (byte) (j206 >> 3);
        bArr[25] = (byte) (j206 >> 11);
        bArr[26] = (byte) ((j206 >> 19) | (j209 << 2));
        bArr[27] = (byte) (j209 >> 6);
        bArr[28] = (byte) ((j209 >> 14) | (j208 << 7));
        bArr[29] = (byte) (j208 >> 1);
        bArr[30] = (byte) (j208 >> 9);
        bArr[31] = (byte) (j208 >> 17);
    }

    private static XYZ scalarMultWithBase(byte[] bArr) {
        int i;
        byte[] bArr2 = new byte[64];
        int i2 = 0;
        while (true) {
            if (i2 >= 32) {
                break;
            }
            int i3 = i2 * 2;
            bArr2[i3] = (byte) (bArr[i2] & 15);
            bArr2[i3 + 1] = (byte) (((bArr[i2] & 255) >> 4) & 15);
            i2++;
        }
        int i4 = 0;
        int i5 = 0;
        while (i4 < 63) {
            byte b = (byte) (bArr2[i4] + i5);
            bArr2[i4] = b;
            int i6 = (b + 8) >> 4;
            bArr2[i4] = (byte) (b - (i6 << 4));
            i4++;
            i5 = i6;
        }
        bArr2[63] = (byte) (bArr2[63] + i5);
        PartialXYZT partialXYZT = new PartialXYZT(NEUTRAL);
        XYZT xyzt = new XYZT();
        for (i = 1; i < 64; i += 2) {
            CachedXYT cachedXYT = new CachedXYT(CACHED_NEUTRAL);
            select(cachedXYT, i / 2, bArr2[i]);
            add(partialXYZT, XYZT.fromPartialXYZT(xyzt, partialXYZT), cachedXYT);
        }
        XYZ xyz = new XYZ();
        doubleXYZ(partialXYZT, XYZ.fromPartialXYZT(xyz, partialXYZT));
        doubleXYZ(partialXYZT, XYZ.fromPartialXYZT(xyz, partialXYZT));
        doubleXYZ(partialXYZT, XYZ.fromPartialXYZT(xyz, partialXYZT));
        doubleXYZ(partialXYZT, XYZ.fromPartialXYZT(xyz, partialXYZT));
        for (int i7 = 0; i7 < 64; i7 += 2) {
            CachedXYT cachedXYT2 = new CachedXYT(CACHED_NEUTRAL);
            select(cachedXYT2, i7 / 2, bArr2[i7]);
            add(partialXYZT, XYZT.fromPartialXYZT(xyzt, partialXYZT), cachedXYT2);
        }
        XYZ xyz2 = new XYZ(partialXYZT);
        if (xyz2.isOnCurve()) {
            return xyz2;
        }
        throw new IllegalStateException("arithmetic error in scalar multiplication");
    }

    public static byte[] scalarMultWithBaseToBytes(byte[] bArr) {
        return scalarMultWithBase(bArr).toBytes();
    }

    private static void select(CachedXYT cachedXYT, int i, byte b) {
        int i2 = (b & 255) >> 7;
        int i3 = b - (((-i2) & b) << 1);
        CachedXYT[][] cachedXYTArr = Ed25519Constants.B_TABLE;
        cachedXYT.copyConditional(cachedXYTArr[i][0], eq(i3, 1));
        cachedXYT.copyConditional(cachedXYTArr[i][1], eq(i3, 2));
        cachedXYT.copyConditional(cachedXYTArr[i][2], eq(i3, 3));
        cachedXYT.copyConditional(cachedXYTArr[i][3], eq(i3, 4));
        cachedXYT.copyConditional(cachedXYTArr[i][4], eq(i3, 5));
        cachedXYT.copyConditional(cachedXYTArr[i][5], eq(i3, 6));
        cachedXYT.copyConditional(cachedXYTArr[i][6], eq(i3, 7));
        cachedXYT.copyConditional(cachedXYTArr[i][7], eq(i3, 8));
        long[] jArrCopyOf = Arrays.copyOf(cachedXYT.yMinusX, 10);
        long[] jArrCopyOf2 = Arrays.copyOf(cachedXYT.yPlusX, 10);
        long[] jArrCopyOf3 = Arrays.copyOf(cachedXYT.t2d, 10);
        neg(jArrCopyOf3, jArrCopyOf3);
        cachedXYT.copyConditional(new CachedXYT(jArrCopyOf, jArrCopyOf2, jArrCopyOf3), i2);
    }

    public static byte[] sign(byte[] bArr, byte[] bArr2, byte[] bArr3) throws GeneralSecurityException {
        byte[] bArrCopyOfRange = Arrays.copyOfRange(bArr, 0, bArr.length);
        MessageDigest engineFactory = EngineFactory.MESSAGE_DIGEST.getInstance("SHA-512");
        engineFactory.update(bArr3, 32, 32);
        engineFactory.update(bArrCopyOfRange);
        byte[] bArrDigest = engineFactory.digest();
        reduce(bArrDigest);
        byte[] bArrCopyOfRange2 = Arrays.copyOfRange(scalarMultWithBase(bArrDigest).toBytes(), 0, 32);
        engineFactory.reset();
        engineFactory.update(bArrCopyOfRange2);
        engineFactory.update(bArr2);
        engineFactory.update(bArrCopyOfRange);
        byte[] bArrDigest2 = engineFactory.digest();
        reduce(bArrDigest2);
        byte[] bArr4 = new byte[32];
        mulAdd(bArr4, bArrDigest2, bArr3, bArrDigest);
        return Bytes.concat(bArrCopyOfRange2, bArr4);
    }

    private static byte[] slide(byte[] bArr) {
        int i;
        byte[] bArr2 = new byte[256];
        for (int i2 = 0; i2 < 256; i2++) {
            bArr2[i2] = (byte) (1 & ((bArr[i2 >> 3] & 255) >> (i2 & 7)));
        }
        for (int i3 = 0; i3 < 256; i3++) {
            if (bArr2[i3] != 0) {
                for (int i4 = 1; i4 <= 6 && (i = i3 + i4) < 256; i4++) {
                    byte b = bArr2[i];
                    if (b != 0) {
                        byte b2 = bArr2[i3];
                        if ((b << i4) + b2 <= 15) {
                            bArr2[i3] = (byte) (b2 + (b << i4));
                            bArr2[i] = 0;
                        } else if (b2 - (b << i4) >= -15) {
                            bArr2[i3] = (byte) (b2 - (b << i4));
                            while (true) {
                                if (i >= 256) {
                                    break;
                                }
                                if (bArr2[i] == 0) {
                                    bArr2[i] = 1;
                                    break;
                                }
                                bArr2[i] = 0;
                                i++;
                            }
                        }
                    }
                }
            }
        }
        return bArr2;
    }

    private static void sub(PartialXYZT partialXYZT, XYZT xyzt, CachedXYT cachedXYT) {
        long[] jArr = new long[10];
        long[] jArr2 = partialXYZT.xyz.x;
        XYZ xyz = xyzt.xyz;
        Field25519.sum(jArr2, xyz.y, xyz.x);
        long[] jArr3 = partialXYZT.xyz.y;
        XYZ xyz2 = xyzt.xyz;
        Field25519.sub(jArr3, xyz2.y, xyz2.x);
        long[] jArr4 = partialXYZT.xyz.y;
        Field25519.mult(jArr4, jArr4, cachedXYT.yPlusX);
        XYZ xyz3 = partialXYZT.xyz;
        Field25519.mult(xyz3.z, xyz3.x, cachedXYT.yMinusX);
        Field25519.mult(partialXYZT.t, xyzt.t, cachedXYT.t2d);
        cachedXYT.multByZ(partialXYZT.xyz.x, xyzt.xyz.z);
        long[] jArr5 = partialXYZT.xyz.x;
        Field25519.sum(jArr, jArr5, jArr5);
        XYZ xyz4 = partialXYZT.xyz;
        Field25519.sub(xyz4.x, xyz4.z, xyz4.y);
        XYZ xyz5 = partialXYZT.xyz;
        long[] jArr6 = xyz5.y;
        Field25519.sum(jArr6, xyz5.z, jArr6);
        Field25519.sub(partialXYZT.xyz.z, jArr, partialXYZT.t);
        long[] jArr7 = partialXYZT.t;
        Field25519.sum(jArr7, jArr, jArr7);
    }

    public static boolean verify(byte[] bArr, byte[] bArr2, byte[] bArr3) throws GeneralSecurityException {
        if (bArr2.length != 64) {
            return false;
        }
        byte[] bArrCopyOfRange = Arrays.copyOfRange(bArr2, 32, 64);
        if (!isSmallerThanGroupOrder(bArrCopyOfRange)) {
            return false;
        }
        MessageDigest engineFactory = EngineFactory.MESSAGE_DIGEST.getInstance("SHA-512");
        engineFactory.update(bArr2, 0, 32);
        engineFactory.update(bArr3);
        engineFactory.update(bArr);
        byte[] bArrDigest = engineFactory.digest();
        reduce(bArrDigest);
        byte[] bytes = doubleScalarMultVarTime(bArrDigest, XYZT.fromBytesNegateVarTime(bArr3), bArrCopyOfRange).toBytes();
        for (int i = 0; i < 32; i++) {
            if (bytes[i] != bArr2[i]) {
                return false;
            }
        }
        return true;
    }
}
