content: package im.actor.runtime.crypto.primitives.streebog;
  
  import im.actor.runtime.crypto.primitives.util.ByteStrings;
  
  // Disabling Bounds checks for speeding up calculations
  
  /*-[
  #define J2OBJC_DISABLE_ALL_CHECKS 1
  ]-*/
  
  /**
   * 512-bit variable
   */
  public class Int512 {
  
      private byte[] value;
  
      public Int512(byte[] value) {
          setBytes(value);
      }
  
      public Int512() {
          this.value = new byte[64];
      }
  
      public byte[] getBytes() {
          return value;
      }
  
      public void setBytes(byte[] value) {
          this.value = new byte[64];
          for (int i = 0; i < 64; i++) {
              this.value[i] = (byte) (value[i] & 0xFF);
          }
      }
  
      public byte getByte(int index) {
          return value[index];
      }
  
      public void setByte(int index, byte v) {
          value[index] = v;
      }
  
      public int getWord16(int index) {
          return (value[index * 2] & 0xFF) + (((value[index * 2 + 1] & 0xFF) << 8) & 0xFFFF);
      }
  
      public void setWord16(int index, int val) {
          value[index * 2] = (byte) (val & 0xFF);
          value[index * 2 + 1] = (byte) ((val & 0xFF) >> 8);
      }
  
      public long getWord64(int index) {
          return ByteStrings.bytesToLong(value, index * 8);
      }
  
      public void setWord64(int index, long val) {
          ByteStrings.write(value, index * 8, ByteStrings.longToBytes(val), 0, 8);
      }
  }
  