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

package org.bouncycastle.pqc.crypto.cmce;

import org.bouncycastle.util.Pack;

class Utils
{
    static void store_gf(final byte[] array, final int n, final short n2) {
        array[n + 0] = (byte)(n2 & 0xFF);
        array[n + 1] = (byte)(n2 >> 8);
    }
    
    static short load_gf(final byte[] array, final int n, final int n2) {
        return (short)(Pack.littleEndianToShort(array, n) & n2);
    }
    
    static int load4(final byte[] array, final int n) {
        return Pack.littleEndianToInt(array, n);
    }
    
    static void store8(final byte[] array, final int n, final long n2) {
        array[n + 0] = (byte)(n2 >> 0 & 0xFFL);
        array[n + 1] = (byte)(n2 >> 8 & 0xFFL);
        array[n + 2] = (byte)(n2 >> 16 & 0xFFL);
        array[n + 3] = (byte)(n2 >> 24 & 0xFFL);
        array[n + 4] = (byte)(n2 >> 32 & 0xFFL);
        array[n + 5] = (byte)(n2 >> 40 & 0xFFL);
        array[n + 6] = (byte)(n2 >> 48 & 0xFFL);
        array[n + 7] = (byte)(n2 >> 56 & 0xFFL);
    }
    
    static long load8(final byte[] array, final int n) {
        return Pack.littleEndianToLong(array, n);
    }
    
    static short bitrev(final short n, final int n2) {
        final short n3 = (short)((n & 0xFF) << 8 | (n & 0xFF00) >> 8);
        final short n4 = (short)((n3 & 0xF0F) << 4 | (n3 & 0xF0F0) >> 4);
        final short n5 = (short)((n4 & 0x3333) << 2 | (n4 & 0xCCCC) >> 2);
        final short n6 = (short)((n5 & 0x5555) << 1 | (n5 & 0xAAAA) >> 1);
        if (n2 == 12) {
            return (short)(n6 >> 4);
        }
        return (short)(n6 >> 3);
    }
}
