           {*******************************************************}
                               {FDL Declarations}
                             {Examiner Pro Edition}

           {*******************************************************}


           {procedure Skein.Skein_512_Process_Block.Update_Context}


title procedure update_context;

  function round__(real) : integer;
  type natural = integer;
  type interfaces__unsigned_8 = integer;
  type interfaces__unsigned_16 = integer;
  type interfaces__unsigned_32 = integer;
  type interfaces__unsigned_64 = integer;
  type spark__unsigned__u6 = integer;
  type spark__unsigned__u7 = integer;
  type spark__unsigned__byte = integer;
  type spark__unsigned__u16 = integer;
  type spark__unsigned__u32 = integer;
  type spark__unsigned__u64 = integer;
  type spark__crypto__i8 = integer;
  type spark__crypto__word_count_t = integer;
  type hash_bit_length = integer;
  type skein_512_state_words_index = integer;
  type skein_512_block_bytes_index = integer;
  type spark__crypto__byte_seq = array [natural] of 
     spark__unsigned__byte;
  type spark__crypto__u64_seq = array [
     spark__crypto__word_count_t] of spark__unsigned__u64;
  type tweak_value = record
        byte_count_lsb : spark__unsigned__u64;
        byte_count_msb : spark__unsigned__u32;
        reserved : spark__unsigned__u16;
        tree_level : spark__unsigned__u7;
        bit_pad : boolean;
        field_type : spark__unsigned__u6;
        first_block : boolean;
        final_block : boolean
     end;
  type context_header = record
        tweak_words : tweak_value;
        hash_bit_len : hash_bit_length;
        byte_count : natural
     end;
  type skein_512_context = record
        h : context_header;
        x : spark__crypto__u64_seq;
        b : spark__crypto__byte_seq
     end;
  const skein_512_block_bytes_index__base__first : integer = pending; 
  const skein_512_block_bytes_index__base__last : integer = pending; 
  const skein_512_state_words_index__base__first : integer = pending; 
  const skein_512_state_words_index__base__last : integer = pending; 
  const hash_bit_length__base__first : integer = pending; 
  const hash_bit_length__base__last : integer = pending; 
  const spark__crypto__word_count_t__base__first : integer = pending; 
  const spark__crypto__word_count_t__base__last : integer = pending; 
  const spark__crypto__i8__base__first : integer = pending; 
  const spark__crypto__i8__base__last : integer = pending; 
  const spark__unsigned__u64__base__first : 
     interfaces__unsigned_64 = pending; 
  const spark__unsigned__u64__base__last : 
     interfaces__unsigned_64 = pending; 
  const spark__unsigned__u32__base__first : 
     interfaces__unsigned_32 = pending; 
  const spark__unsigned__u32__base__last : 
     interfaces__unsigned_32 = pending; 
  const spark__unsigned__u16__base__first : 
     interfaces__unsigned_16 = pending; 
  const spark__unsigned__u16__base__last : 
     interfaces__unsigned_16 = pending; 
  const spark__unsigned__byte__base__first : 
     interfaces__unsigned_8 = pending; 
  const spark__unsigned__byte__base__last : 
     interfaces__unsigned_8 = pending; 
  const spark__unsigned__u7__base__first : spark__unsigned__u7 = pending; 
  const spark__unsigned__u7__base__last : spark__unsigned__u7 = pending; 
  const spark__unsigned__u6__base__first : spark__unsigned__u6 = pending; 
  const spark__unsigned__u6__base__last : spark__unsigned__u6 = pending; 
  const interfaces__unsigned_64__base__first : 
     interfaces__unsigned_64 = pending; 
  const interfaces__unsigned_64__base__last : 
     interfaces__unsigned_64 = pending; 
  const interfaces__unsigned_32__base__first : 
     interfaces__unsigned_32 = pending; 
  const interfaces__unsigned_32__base__last : 
     interfaces__unsigned_32 = pending; 
  const interfaces__unsigned_16__base__first : 
     interfaces__unsigned_16 = pending; 
  const interfaces__unsigned_16__base__last : 
     interfaces__unsigned_16 = pending; 
  const interfaces__unsigned_8__base__first : 
     interfaces__unsigned_8 = pending; 
  const interfaces__unsigned_8__base__last : 
     interfaces__unsigned_8 = pending; 
  const natural__base__first : integer = pending; 
  const natural__base__last : integer = pending; 
  const integer__base__first : integer = pending; 
  const integer__base__last : integer = pending; 
  const context_header__size : integer = pending; 
  const tweak_value__size : integer = pending; 
  const skein_512_context__size : integer = pending; 
  const skein_512_block_bytes_index__first : integer = pending; 
  const skein_512_block_bytes_index__last : integer = pending; 
  const skein_512_block_bytes_index__size : integer = pending; 
  const skein_512_state_words_index__first : integer = pending; 
  const skein_512_state_words_index__last : integer = pending; 
  const skein_512_state_words_index__size : integer = pending; 
  const hash_bit_length__first : integer = pending; 
  const hash_bit_length__last : integer = pending; 
  const hash_bit_length__size : integer = pending; 
  const spark__crypto__word_count_t__first : integer = pending; 
  const spark__crypto__word_count_t__last : integer = pending; 
  const spark__crypto__word_count_t__size : integer = pending; 
  const spark__crypto__i8__first : integer = pending; 
  const spark__crypto__i8__last : integer = pending; 
  const spark__crypto__i8__size : integer = pending; 
  const spark__unsigned__u64__first : interfaces__unsigned_64 = pending; 
  const spark__unsigned__u64__last : interfaces__unsigned_64 = pending; 
  const spark__unsigned__u64__modulus : integer = pending; 
  const spark__unsigned__u64__size : integer = pending; 
  const spark__unsigned__u32__first : interfaces__unsigned_32 = pending; 
  const spark__unsigned__u32__last : interfaces__unsigned_32 = pending; 
  const spark__unsigned__u32__modulus : integer = pending; 
  const spark__unsigned__u32__size : integer = pending; 
  const spark__unsigned__u16__first : interfaces__unsigned_16 = pending; 
  const spark__unsigned__u16__last : interfaces__unsigned_16 = pending; 
  const spark__unsigned__u16__modulus : integer = pending; 
  const spark__unsigned__u16__size : integer = pending; 
  const spark__unsigned__byte__first : interfaces__unsigned_8 = pending; 
  const spark__unsigned__byte__last : interfaces__unsigned_8 = pending; 
  const spark__unsigned__byte__modulus : integer = pending; 
  const spark__unsigned__byte__size : integer = pending; 
  const spark__unsigned__u7__first : spark__unsigned__u7 = pending; 
  const spark__unsigned__u7__last : spark__unsigned__u7 = pending; 
  const spark__unsigned__u7__modulus : integer = pending; 
  const spark__unsigned__u7__size : integer = pending; 
  const spark__unsigned__u6__first : spark__unsigned__u6 = pending; 
  const spark__unsigned__u6__last : spark__unsigned__u6 = pending; 
  const spark__unsigned__u6__modulus : integer = pending; 
  const spark__unsigned__u6__size : integer = pending; 
  const interfaces__unsigned_64__first : interfaces__unsigned_64 = pending; 
  const interfaces__unsigned_64__last : interfaces__unsigned_64 = pending; 
  const interfaces__unsigned_64__modulus : integer = pending; 
  const interfaces__unsigned_64__size : integer = pending; 
  const interfaces__unsigned_32__first : interfaces__unsigned_32 = pending; 
  const interfaces__unsigned_32__last : interfaces__unsigned_32 = pending; 
  const interfaces__unsigned_32__modulus : integer = pending; 
  const interfaces__unsigned_32__size : integer = pending; 
  const interfaces__unsigned_16__first : interfaces__unsigned_16 = pending; 
  const interfaces__unsigned_16__last : interfaces__unsigned_16 = pending; 
  const interfaces__unsigned_16__modulus : integer = pending; 
  const interfaces__unsigned_16__size : integer = pending; 
  const interfaces__unsigned_8__first : interfaces__unsigned_8 = pending; 
  const interfaces__unsigned_8__last : interfaces__unsigned_8 = pending; 
  const interfaces__unsigned_8__modulus : integer = pending; 
  const interfaces__unsigned_8__size : integer = pending; 
  const natural__first : integer = pending; 
  const natural__last : integer = pending; 
  const natural__size : integer = pending; 
  const integer__first : integer = pending; 
  const integer__last : integer = pending; 
  const integer__size : integer = pending; 
  var ctx : skein_512_context;
  var x : spark__crypto__u64_seq;
  var w : spark__crypto__u64_seq;

end;
