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

package com.hypixel.hytale.common.util;

import javax.annotation.Nonnull;

public class BitUtil
{
    public static void setNibble(@Nonnull final byte[] data, final int idx, byte b) {
        final int fieldIdx = idx >> 1;
        byte val = data[fieldIdx];
        b &= 0xF;
        final int i = idx & 0x1;
        b <<= (byte)((i ^ 0x1) << 2);
        val &= (byte)(15 << (i << 2));
        val |= b;
        data[fieldIdx] = val;
    }
    
    public static byte getNibble(@Nonnull final byte[] data, final int idx) {
        final int fieldIdx = idx >> 1;
        byte val = data[fieldIdx];
        final int i = idx & 0x1;
        val >>= (byte)((i ^ 0x1) << 2);
        val &= 0xF;
        return val;
    }
    
    public static byte getAndSetNibble(@Nonnull final byte[] data, final int idx, byte b) {
        final int fieldIdx = idx >> 1;
        byte val = data[fieldIdx];
        final int i = idx & 0x1;
        byte oldVal = val;
        oldVal >>= (byte)((i ^ 0x1) << 2);
        oldVal &= 0xF;
        b &= 0xF;
        b <<= (byte)((i ^ 0x1) << 2);
        val &= (byte)(15 << (i << 2));
        val |= b;
        data[fieldIdx] = val;
        return oldVal;
    }
}
