// 
// Decompiled by Procyon v0.6.0
// 

package org.bouncycastle.crypto.modes.gcm;

public class BasicGCMExponentiator implements GCMExponentiator
{
    private long[] x;
    
    @Override
    public void init(final byte[] array) {
        this.x = GCMUtil.asLongs(array);
    }
    
    @Override
    public void exponentiateX(long n, final byte[] array) {
        final long[] oneAsLongs = GCMUtil.oneAsLongs();
        if (n > 0L) {
            final long[] array2 = new long[2];
            GCMUtil.copy(this.x, array2);
            do {
                if ((n & 0x1L) != 0x0L) {
                    GCMUtil.multiply(oneAsLongs, array2);
                }
                GCMUtil.square(array2, array2);
                n >>>= 1;
            } while (n > 0L);
        }
        GCMUtil.asBytes(oneAsLongs, array);
    }
}
