text: #ifndef _SB_CRYPT_H
  #define _SB_CRYPT_H
  
  #ifdef __cplusplus
  extern "C" {
  #endif
  
  typedef struct _GOACryptState
  {
      unsigned char cards[256];  // A permutation of 0-255.
      unsigned char rotor;       // Index that rotates smoothly
      unsigned char ratchet;     // Index that moves erratically
      unsigned char avalanche;   // Index heavily data dependent
      unsigned char last_plain;  // Last plain text byte
      unsigned char last_cipher; // Last cipher text byte
  } GOACryptState;
  
  void GOACryptInit(GOACryptState* state, unsigned char* key, unsigned char keysize);
  void GOAHashInit(GOACryptState* state);
  unsigned char GOAEncryptByte(GOACryptState* state, unsigned char b);                    // Encrypt byte
  void GOAEncrypt(GOACryptState* state, unsigned char* bp, int len);                      // Encrypt byte array
  unsigned char GOADecryptByte(GOACryptState* state, unsigned char b);                    // Decrypt byte.
  void GOADecrypt(GOACryptState* state, unsigned char* bp, int len);                      // decrypt byte array
  void GOAHashFinal(GOACryptState* state, unsigned char* hash, unsigned char hashlength); // Hash length (16-32)
  
  #ifdef __cplusplus
  }
  #endif
  
  #endif
  