           *******************************************************
                       Semantic Analysis of SPARK Text
                             Examiner Pro Edition

           *******************************************************


           procedure Skein.Skein_512_Process_Block.Update_Context




For path(s) from start to run-time check associated with statement of line 608:

procedure_update_context_1.
H1:    true .
H2:    for_all(i___2: integer, ((i___2 >= 
           skein_512_block_bytes_index__first) and (i___2 <= 
           skein_512_block_bytes_index__last)) -> ((element(fld_b(
           ctx), [i___2]) >= spark__unsigned__byte__first) and (element(
           fld_b(ctx), [i___2]) <= spark__unsigned__byte__last))) .
H3:    for_all(i___1: integer, ((i___1 >= 
           skein_512_state_words_index__first) and (i___1 <= 
           skein_512_state_words_index__last)) -> ((element(fld_x(
           ctx), [i___1]) >= spark__unsigned__u64__first) and (element(
           fld_x(ctx), [i___1]) <= spark__unsigned__u64__last))) .
H4:    fld_byte_count(fld_h(ctx)) >= natural__first .
H5:    fld_byte_count(fld_h(ctx)) <= natural__last .
H6:    fld_hash_bit_len(fld_h(ctx)) >= hash_bit_length__first .
H7:    fld_hash_bit_len(fld_h(ctx)) <= hash_bit_length__last .
H8:    true .
H9:    true .
H10:   fld_field_type(fld_tweak_words(fld_h(ctx))) >= 
           spark__unsigned__u6__first .
H11:   fld_field_type(fld_tweak_words(fld_h(ctx))) <= 
           spark__unsigned__u6__last .
H12:   true .
H13:   fld_tree_level(fld_tweak_words(fld_h(ctx))) >= 
           spark__unsigned__u7__first .
H14:   fld_tree_level(fld_tweak_words(fld_h(ctx))) <= 
           spark__unsigned__u7__last .
H15:   fld_reserved(fld_tweak_words(fld_h(ctx))) >= 
           spark__unsigned__u16__first .
H16:   fld_reserved(fld_tweak_words(fld_h(ctx))) <= 
           spark__unsigned__u16__last .
H17:   fld_byte_count_msb(fld_tweak_words(fld_h(ctx))) >= 
           spark__unsigned__u32__first .
H18:   fld_byte_count_msb(fld_tweak_words(fld_h(ctx))) <= 
           spark__unsigned__u32__last .
H19:   fld_byte_count_lsb(fld_tweak_words(fld_h(ctx))) >= 
           spark__unsigned__u64__first .
H20:   fld_byte_count_lsb(fld_tweak_words(fld_h(ctx))) <= 
           spark__unsigned__u64__last .
H21:   for_all(i___1: integer, ((i___1 >= spark__crypto__i8__first) and (
           i___1 <= spark__crypto__i8__last)) -> ((element(
           w, [i___1]) >= spark__unsigned__u64__first) and (element(
           w, [i___1]) <= spark__unsigned__u64__last))) .
H22:   for_all(i___1: integer, ((i___1 >= spark__crypto__i8__first) and (
           i___1 <= spark__crypto__i8__last)) -> ((element(
           x, [i___1]) >= spark__unsigned__u64__first) and (element(
           x, [i___1]) <= spark__unsigned__u64__last))) .
        ->
C1:    bit__xor(element(x, [7]), element(w, [7])) >= 
           spark__unsigned__u64__first .
C2:    bit__xor(element(x, [7]), element(w, [7])) <= 
           spark__unsigned__u64__last .
C3:    7 >= spark__crypto__i8__first .
C4:    7 <= spark__crypto__i8__last .
C5:    7 >= spark__crypto__i8__first .
C6:    7 <= spark__crypto__i8__last .
C7:    bit__xor(element(x, [6]), element(w, [6])) >= 
           spark__unsigned__u64__first .
C8:    bit__xor(element(x, [6]), element(w, [6])) <= 
           spark__unsigned__u64__last .
C9:    6 >= spark__crypto__i8__first .
C10:   6 <= spark__crypto__i8__last .
C11:   6 >= spark__crypto__i8__first .
C12:   6 <= spark__crypto__i8__last .
C13:   bit__xor(element(x, [5]), element(w, [5])) >= 
           spark__unsigned__u64__first .
C14:   bit__xor(element(x, [5]), element(w, [5])) <= 
           spark__unsigned__u64__last .
C15:   5 >= spark__crypto__i8__first .
C16:   5 <= spark__crypto__i8__last .
C17:   5 >= spark__crypto__i8__first .
C18:   5 <= spark__crypto__i8__last .
C19:   bit__xor(element(x, [4]), element(w, [4])) >= 
           spark__unsigned__u64__first .
C20:   bit__xor(element(x, [4]), element(w, [4])) <= 
           spark__unsigned__u64__last .
C21:   4 >= spark__crypto__i8__first .
C22:   4 <= spark__crypto__i8__last .
C23:   4 >= spark__crypto__i8__first .
C24:   4 <= spark__crypto__i8__last .
C25:   bit__xor(element(x, [3]), element(w, [3])) >= 
           spark__unsigned__u64__first .
C26:   bit__xor(element(x, [3]), element(w, [3])) <= 
           spark__unsigned__u64__last .
C27:   3 >= spark__crypto__i8__first .
C28:   3 <= spark__crypto__i8__last .
C29:   3 >= spark__crypto__i8__first .
C30:   3 <= spark__crypto__i8__last .
C31:   bit__xor(element(x, [2]), element(w, [2])) >= 
           spark__unsigned__u64__first .
C32:   bit__xor(element(x, [2]), element(w, [2])) <= 
           spark__unsigned__u64__last .
C33:   2 >= spark__crypto__i8__first .
C34:   2 <= spark__crypto__i8__last .
C35:   2 >= spark__crypto__i8__first .
C36:   2 <= spark__crypto__i8__last .
C37:   bit__xor(element(x, [1]), element(w, [1])) >= 
           spark__unsigned__u64__first .
C38:   bit__xor(element(x, [1]), element(w, [1])) <= 
           spark__unsigned__u64__last .
C39:   1 >= spark__crypto__i8__first .
C40:   1 <= spark__crypto__i8__last .
C41:   1 >= spark__crypto__i8__first .
C42:   1 <= spark__crypto__i8__last .
C43:   bit__xor(element(x, [0]), element(w, [0])) >= 
           spark__unsigned__u64__first .
C44:   bit__xor(element(x, [0]), element(w, [0])) <= 
           spark__unsigned__u64__last .
C45:   0 >= spark__crypto__i8__first .
C46:   0 <= spark__crypto__i8__last .
C47:   0 >= spark__crypto__i8__first .
C48:   0 <= spark__crypto__i8__last .
 

For path(s) from start to finish:

procedure_update_context_2.
H1:    true .
H2:    for_all(i___2: integer, ((i___2 >= 
           skein_512_block_bytes_index__first) and (i___2 <= 
           skein_512_block_bytes_index__last)) -> ((element(fld_b(
           ctx), [i___2]) >= spark__unsigned__byte__first) and (element(
           fld_b(ctx), [i___2]) <= spark__unsigned__byte__last))) .
H3:    for_all(i___1: integer, ((i___1 >= 
           skein_512_state_words_index__first) and (i___1 <= 
           skein_512_state_words_index__last)) -> ((element(fld_x(
           ctx), [i___1]) >= spark__unsigned__u64__first) and (element(
           fld_x(ctx), [i___1]) <= spark__unsigned__u64__last))) .
H4:    fld_byte_count(fld_h(ctx)) >= natural__first .
H5:    fld_byte_count(fld_h(ctx)) <= natural__last .
H6:    fld_hash_bit_len(fld_h(ctx)) >= hash_bit_length__first .
H7:    fld_hash_bit_len(fld_h(ctx)) <= hash_bit_length__last .
H8:    true .
H9:    true .
H10:   fld_field_type(fld_tweak_words(fld_h(ctx))) >= 
           spark__unsigned__u6__first .
H11:   fld_field_type(fld_tweak_words(fld_h(ctx))) <= 
           spark__unsigned__u6__last .
H12:   true .
H13:   fld_tree_level(fld_tweak_words(fld_h(ctx))) >= 
           spark__unsigned__u7__first .
H14:   fld_tree_level(fld_tweak_words(fld_h(ctx))) <= 
           spark__unsigned__u7__last .
H15:   fld_reserved(fld_tweak_words(fld_h(ctx))) >= 
           spark__unsigned__u16__first .
H16:   fld_reserved(fld_tweak_words(fld_h(ctx))) <= 
           spark__unsigned__u16__last .
H17:   fld_byte_count_msb(fld_tweak_words(fld_h(ctx))) >= 
           spark__unsigned__u32__first .
H18:   fld_byte_count_msb(fld_tweak_words(fld_h(ctx))) <= 
           spark__unsigned__u32__last .
H19:   fld_byte_count_lsb(fld_tweak_words(fld_h(ctx))) >= 
           spark__unsigned__u64__first .
H20:   fld_byte_count_lsb(fld_tweak_words(fld_h(ctx))) <= 
           spark__unsigned__u64__last .
H21:   for_all(i___1: integer, ((i___1 >= spark__crypto__i8__first) and (
           i___1 <= spark__crypto__i8__last)) -> ((element(
           w, [i___1]) >= spark__unsigned__u64__first) and (element(
           w, [i___1]) <= spark__unsigned__u64__last))) .
H22:   for_all(i___1: integer, ((i___1 >= spark__crypto__i8__first) and (
           i___1 <= spark__crypto__i8__last)) -> ((element(
           x, [i___1]) >= spark__unsigned__u64__first) and (element(
           x, [i___1]) <= spark__unsigned__u64__last))) .
H23:   bit__xor(element(x, [7]), element(w, [7])) >= 
           spark__unsigned__u64__first .
H24:   bit__xor(element(x, [7]), element(w, [7])) <= 
           spark__unsigned__u64__last .
H25:   7 >= spark__crypto__i8__first .
H26:   7 <= spark__crypto__i8__last .
H27:   7 >= spark__crypto__i8__first .
H28:   7 <= spark__crypto__i8__last .
H29:   bit__xor(element(x, [6]), element(w, [6])) >= 
           spark__unsigned__u64__first .
H30:   bit__xor(element(x, [6]), element(w, [6])) <= 
           spark__unsigned__u64__last .
H31:   6 >= spark__crypto__i8__first .
H32:   6 <= spark__crypto__i8__last .
H33:   6 >= spark__crypto__i8__first .
H34:   6 <= spark__crypto__i8__last .
H35:   bit__xor(element(x, [5]), element(w, [5])) >= 
           spark__unsigned__u64__first .
H36:   bit__xor(element(x, [5]), element(w, [5])) <= 
           spark__unsigned__u64__last .
H37:   5 >= spark__crypto__i8__first .
H38:   5 <= spark__crypto__i8__last .
H39:   5 >= spark__crypto__i8__first .
H40:   5 <= spark__crypto__i8__last .
H41:   bit__xor(element(x, [4]), element(w, [4])) >= 
           spark__unsigned__u64__first .
H42:   bit__xor(element(x, [4]), element(w, [4])) <= 
           spark__unsigned__u64__last .
H43:   4 >= spark__crypto__i8__first .
H44:   4 <= spark__crypto__i8__last .
H45:   4 >= spark__crypto__i8__first .
H46:   4 <= spark__crypto__i8__last .
H47:   bit__xor(element(x, [3]), element(w, [3])) >= 
           spark__unsigned__u64__first .
H48:   bit__xor(element(x, [3]), element(w, [3])) <= 
           spark__unsigned__u64__last .
H49:   3 >= spark__crypto__i8__first .
H50:   3 <= spark__crypto__i8__last .
H51:   3 >= spark__crypto__i8__first .
H52:   3 <= spark__crypto__i8__last .
H53:   bit__xor(element(x, [2]), element(w, [2])) >= 
           spark__unsigned__u64__first .
H54:   bit__xor(element(x, [2]), element(w, [2])) <= 
           spark__unsigned__u64__last .
H55:   2 >= spark__crypto__i8__first .
H56:   2 <= spark__crypto__i8__last .
H57:   2 >= spark__crypto__i8__first .
H58:   2 <= spark__crypto__i8__last .
H59:   bit__xor(element(x, [1]), element(w, [1])) >= 
           spark__unsigned__u64__first .
H60:   bit__xor(element(x, [1]), element(w, [1])) <= 
           spark__unsigned__u64__last .
H61:   1 >= spark__crypto__i8__first .
H62:   1 <= spark__crypto__i8__last .
H63:   1 >= spark__crypto__i8__first .
H64:   1 <= spark__crypto__i8__last .
H65:   bit__xor(element(x, [0]), element(w, [0])) >= 
           spark__unsigned__u64__first .
H66:   bit__xor(element(x, [0]), element(w, [0])) <= 
           spark__unsigned__u64__last .
H67:   0 >= spark__crypto__i8__first .
H68:   0 <= spark__crypto__i8__last .
H69:   0 >= spark__crypto__i8__first .
H70:   0 <= spark__crypto__i8__last .
        ->
C1:    fld_hash_bit_len(fld_h(upf_x(ctx, 
           mk__spark__crypto__u64_seq([0] := bit__xor(element(
           x, [0]), element(w, [0])), [1] := bit__xor(element(
           x, [1]), element(w, [1])), [2] := bit__xor(element(
           x, [2]), element(w, [2])), [3] := bit__xor(element(
           x, [3]), element(w, [3])), [4] := bit__xor(element(
           x, [4]), element(w, [4])), [5] := bit__xor(element(
           x, [5]), element(w, [5])), [6] := bit__xor(element(
           x, [6]), element(w, [6])), [7] := bit__xor(element(
           x, [7]), element(w, [7])))))) = fld_hash_bit_len(fld_h(
           ctx)) .
C2:    fld_byte_count(fld_h(upf_x(ctx, 
           mk__spark__crypto__u64_seq([0] := bit__xor(element(
           x, [0]), element(w, [0])), [1] := bit__xor(element(
           x, [1]), element(w, [1])), [2] := bit__xor(element(
           x, [2]), element(w, [2])), [3] := bit__xor(element(
           x, [3]), element(w, [3])), [4] := bit__xor(element(
           x, [4]), element(w, [4])), [5] := bit__xor(element(
           x, [5]), element(w, [5])), [6] := bit__xor(element(
           x, [6]), element(w, [6])), [7] := bit__xor(element(
           x, [7]), element(w, [7])))))) = fld_byte_count(fld_h(
           ctx)) .
 

