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

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



SPARK Simplifier Pro Edition


procedure Skein.Skein_512_Process_Block




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

procedure_skein_512_process_block_1.
*** true .          /* all conclusions proved */


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

procedure_skein_512_process_block_2.
*** true .          /* all conclusions proved */


For path(s) from start to assertion of line 624:

procedure_skein_512_process_block_3.
H1:    fld_hash_bit_len(fld_h(ctx)) >= 1 .
H2:    fld_hash_bit_len(fld_h(ctx)) <= 2147483640 .
H3:    fld_byte_count(fld_h(ctx)) >= 0 .
H4:    fld_byte_count(fld_h(ctx)) <= 64 .
H5:    block__index__subtype__1__first = 0 .
H6:    starting_offset + (block_count - 1) * 64 + 63 <= 
          block__index__subtype__1__last .
H7:    starting_offset + 63 <= block__index__subtype__1__last .
H8:    block__index__subtype__1__last <= 2147483647 .
H9:    starting_offset <= 2147483584 .
H10:   for_all(i___2 : integer, 0 <= i___2 and i___2 <= 63 -> 0 <= element(
          fld_b(ctx), [i___2]) and element(fld_b(ctx), [i___2]) <= 255) .
H11:   for_all(i___1 : integer, 0 <= i___1 and i___1 <= 7 -> 0 <= element(fld_x(
          ctx), [i___1]) and element(fld_x(ctx), [i___1]) <= 
          18446744073709551615) .
H12:   fld_field_type(fld_tweak_words(fld_h(ctx))) >= 0 .
H13:   fld_field_type(fld_tweak_words(fld_h(ctx))) <= 63 .
H14:   fld_tree_level(fld_tweak_words(fld_h(ctx))) >= 0 .
H15:   fld_tree_level(fld_tweak_words(fld_h(ctx))) <= 127 .
H16:   fld_reserved(fld_tweak_words(fld_h(ctx))) >= 0 .
H17:   fld_reserved(fld_tweak_words(fld_h(ctx))) <= 65535 .
H18:   fld_byte_count_msb(fld_tweak_words(fld_h(ctx))) >= 0 .
H19:   fld_byte_count_msb(fld_tweak_words(fld_h(ctx))) <= 4294967295 .
H20:   fld_byte_count_lsb(fld_tweak_words(fld_h(ctx))) >= 0 .
H21:   fld_byte_count_lsb(fld_tweak_words(fld_h(ctx))) <= 18446744073709551615 .
H22:   for_all(i___1 : integer, block__index__subtype__1__first <= i___1 and 
          i___1 <= block__index__subtype__1__last -> 0 <= element(block, [i___1]
          ) and element(block, [i___1]) <= 255) .
H23:   starting_offset >= 0 .
H24:   block_count >= 1 .
H25:   block_count <= 33554431 .
H26:   byte_count_add >= 0 .
H27:   byte_count_add <= 2147483647 .
H28:   integer__size >= 0 .
H29:   natural__size >= 0 .
H30:   spark__unsigned__u6__size >= 0 .
H31:   spark__unsigned__u7__size >= 0 .
H32:   spark__unsigned__byte__size >= 0 .
H33:   spark__unsigned__u16__size >= 0 .
H34:   spark__unsigned__u32__size >= 0 .
H35:   spark__unsigned__u64__size >= 0 .
H36:   spark__crypto__i3__size >= 0 .
H37:   spark__crypto__i8__size >= 0 .
H38:   spark__crypto__i9__size >= 0 .
H39:   spark__crypto__word_count_t__size >= 0 .
H40:   hash_bit_length__size >= 0 .
H41:   initialized_hash_bit_length__size >= 0 .
H42:   skein_512_state_words_index__size >= 0 .
H43:   skein_512_block_bytes_count__size >= 0 .
H44:   skein_512_block_bytes_index__size >= 0 .
H45:   positive_block_512_count_t__size >= 0 .
H46:   skein_512_context__size >= 0 .
H47:   context_header__size >= 0 .
H48:   block__index__subtype__1__first <= block__index__subtype__1__last .
H49:   block__index__subtype__1__first >= 0 .
H50:   block__index__subtype__1__last >= 0 .
H51:   block__index__subtype__1__first <= 2147483647 .
       ->
C1:    1 < block_count -> starting_offset <= 2147483583 .


For path(s) from assertion of line 624 to assertion of line 624:

procedure_skein_512_process_block_4.
H1:    fld_hash_bit_len(fld_h(ctx)) = fld_hash_bit_len(fld_h(ctx~)) .
H2:    fld_byte_count(fld_h(ctx)) = fld_byte_count(fld_h(ctx~)) .
H3:    j >= 1 .
H4:    starting_offset + (j - 1) * 64 + 63 <= block__index__subtype__1__last .
H5:    starting_offset + (block_count - 1) * 64 + 63 <= 
          block__index__subtype__1__last .
H6:    block__index__subtype__1__last <= 2147483647 .
H7:    starting_offset + (j - 1) * 64 <= 2147483583 .
H8:    for_all(i___2 : integer, 0 <= i___2 and i___2 <= 63 -> 0 <= element(
          fld_b(ctx), [i___2]) and element(fld_b(ctx), [i___2]) <= 255) .
H9:    for_all(i___1 : integer, 0 <= i___1 and i___1 <= 7 -> 0 <= element(fld_x(
          ctx), [i___1]) and element(fld_x(ctx), [i___1]) <= 
          18446744073709551615) .
H10:   fld_byte_count(fld_h(ctx)) >= 0 .
H11:   fld_hash_bit_len(fld_h(ctx)) <= 2147483640 .
H12:   fld_field_type(fld_tweak_words(fld_h(ctx))) >= 0 .
H13:   fld_field_type(fld_tweak_words(fld_h(ctx))) <= 63 .
H14:   fld_tree_level(fld_tweak_words(fld_h(ctx))) >= 0 .
H15:   fld_tree_level(fld_tweak_words(fld_h(ctx))) <= 127 .
H16:   fld_reserved(fld_tweak_words(fld_h(ctx))) >= 0 .
H17:   fld_reserved(fld_tweak_words(fld_h(ctx))) <= 65535 .
H18:   fld_byte_count_msb(fld_tweak_words(fld_h(ctx))) >= 0 .
H19:   fld_byte_count_msb(fld_tweak_words(fld_h(ctx))) <= 4294967295 .
H20:   fld_byte_count_lsb(fld_tweak_words(fld_h(ctx))) >= 0 .
H21:   fld_byte_count_lsb(fld_tweak_words(fld_h(ctx))) <= 18446744073709551615 .
H22:   for_all(i___1 : integer, block__index__subtype__1__first <= i___1 and 
          i___1 <= block__index__subtype__1__last -> 0 <= element(block, [i___1]
          ) and element(block, [i___1]) <= 255) .
H23:   starting_offset >= 0 .
H24:   block_count <= 33554431 .
H25:   byte_count_add >= 0 .
H26:   byte_count_add <= 2147483647 .
H27:   fld_hash_bit_len(fld_h(ctx~)) >= 1 .
H28:   fld_hash_bit_len(fld_h(ctx~)) <= 2147483640 .
H29:   fld_byte_count(fld_h(ctx~)) >= 0 .
H30:   fld_byte_count(fld_h(ctx~)) <= 64 .
H31:   block__index__subtype__1__first = 0 .
H32:   starting_offset + 63 <= block__index__subtype__1__last .
H33:   starting_offset <= 2147483584 .
H34:   (fld_byte_count_lsb(fld_tweak_words(fld_h(ctx))) + byte_count_add) mod 
          18446744073709551616 >= 0 .
H35:   (fld_byte_count_lsb(fld_tweak_words(fld_h(ctx))) + byte_count_add) mod 
          18446744073709551616 <= 18446744073709551615 .
H36:   for_all(i___1 : integer, 0 <= i___1 and i___1 <= 8 -> 0 <= element(
          ks__1, [i___1]) and element(ks__1, [i___1]) <= 18446744073709551615) .
H37:   for_all(i___1 : integer, 0 <= i___1 and i___1 <= 2 -> 0 <= element(
          ts__2, [i___1]) and element(ts__2, [i___1]) <= 18446744073709551615) .
H38:   starting_offset + (j - 1) * 64 >= 0 .
H39:   starting_offset + (j - 1) * 64 + 63 >= block__index__subtype__1__first .
H40:   for_all(i_ : integer, 0 <= i_ and i_ <= 7 -> 0 <= element(w__3, [i_]) 
          and element(w__3, [i_]) <= 18446744073709551615) .
H41:   for_all(i___1 : integer, 0 <= i___1 and i___1 <= 7 -> 0 <= element(w__3, 
          [i___1]) and element(w__3, [i___1]) <= 18446744073709551615) .
H42:   for_all(i___1 : integer, 0 <= i___1 and i___1 <= 7 -> 0 <= element(x__4, 
          [i___1]) and element(x__4, [i___1]) <= 18446744073709551615) .
H43:   for_all(i___1 : integer, 0 <= i___1 and i___1 <= 7 -> 0 <= element(x__5, 
          [i___1]) and element(x__5, [i___1]) <= 18446744073709551615) .
H44:   fld_hash_bit_len(fld_h(ctx__6)) = fld_hash_bit_len(fld_h(ctx)) .
H45:   fld_byte_count(fld_h(ctx__6)) = fld_byte_count(fld_h(ctx)) .
H46:   for_all(i___2 : integer, 0 <= i___2 and i___2 <= 63 -> 0 <= element(
          fld_b(ctx__6), [i___2]) and element(fld_b(ctx__6), [i___2]) <= 255) .
H47:   for_all(i___1 : integer, 0 <= i___1 and i___1 <= 7 -> 0 <= element(fld_x(
          ctx__6), [i___1]) and element(fld_x(ctx__6), [i___1]) <= 
          18446744073709551615) .
H48:   fld_byte_count(fld_h(ctx)) >= 0 .
H49:   fld_byte_count(fld_h(ctx)) <= 2147483647 .
H50:   fld_hash_bit_len(fld_h(ctx)) >= 0 .
H51:   fld_hash_bit_len(fld_h(ctx)) <= 2147483640 .
H52:   fld_field_type(fld_tweak_words(fld_h(ctx__6))) >= 0 .
H53:   fld_field_type(fld_tweak_words(fld_h(ctx__6))) <= 63 .
H54:   fld_tree_level(fld_tweak_words(fld_h(ctx__6))) >= 0 .
H55:   fld_tree_level(fld_tweak_words(fld_h(ctx__6))) <= 127 .
H56:   fld_reserved(fld_tweak_words(fld_h(ctx__6))) >= 0 .
H57:   fld_reserved(fld_tweak_words(fld_h(ctx__6))) <= 65535 .
H58:   fld_byte_count_msb(fld_tweak_words(fld_h(ctx__6))) >= 0 .
H59:   fld_byte_count_msb(fld_tweak_words(fld_h(ctx__6))) <= 4294967295 .
H60:   fld_byte_count_lsb(fld_tweak_words(fld_h(ctx__6))) >= 0 .
H61:   fld_byte_count_lsb(fld_tweak_words(fld_h(ctx__6))) <= 
          18446744073709551615 .
H62:   j < block_count .
H63:   j <= 33554430 .
H64:   starting_offset + (j - 1) * 64 <= 2147483583 .
H65:   integer__size >= 0 .
H66:   natural__size >= 0 .
H67:   spark__unsigned__u6__size >= 0 .
H68:   spark__unsigned__u7__size >= 0 .
H69:   spark__unsigned__byte__size >= 0 .
H70:   spark__unsigned__u16__size >= 0 .
H71:   spark__unsigned__u32__size >= 0 .
H72:   spark__unsigned__u64__size >= 0 .
H73:   spark__crypto__i3__size >= 0 .
H74:   spark__crypto__i8__size >= 0 .
H75:   spark__crypto__i9__size >= 0 .
H76:   spark__crypto__word_count_t__size >= 0 .
H77:   hash_bit_length__size >= 0 .
H78:   initialized_hash_bit_length__size >= 0 .
H79:   skein_512_state_words_index__size >= 0 .
H80:   skein_512_block_bytes_count__size >= 0 .
H81:   skein_512_block_bytes_index__size >= 0 .
H82:   positive_block_512_count_t__size >= 0 .
H83:   skein_512_context__size >= 0 .
H84:   context_header__size >= 0 .
H85:   block__index__subtype__1__first <= block__index__subtype__1__last .
H86:   block__index__subtype__1__first >= 0 .
H87:   block__index__subtype__1__last >= 0 .
H88:   block__index__subtype__1__first <= 2147483647 .
       ->
C1:    starting_offset + (j - 1) * 64 + 127 <= block__index__subtype__1__last .
C2:    starting_offset + (j - 1) * 64 <= 2147483527 .
C3:    j + 1 < block_count -> starting_offset + (j - 1) * 64 <= 2147483519 .


For path(s) from assertion of line 624 to run-time check associated with 
          statement of line 637:

procedure_skein_512_process_block_5.
*** true .          /* all conclusions proved */


For path(s) from assertion of line 624 to precondition check associated with 
          statement of line 643:

procedure_skein_512_process_block_6.
*** true .          /* all conclusions proved */


For path(s) from assertion of line 624 to check associated with statement of 
          line 647:

procedure_skein_512_process_block_7.
*** true .          /* all conclusions proved */


For path(s) from assertion of line 624 to run-time check associated with 
          statement of line 661:

procedure_skein_512_process_block_8.
*** true .          /* all conclusions proved */


For path(s) from assertion of line 624 to run-time check associated with 
          statement of line 662:

procedure_skein_512_process_block_9.
*** true .          /* all conclusions proved */


For path(s) from assertion of line 624 to finish:

procedure_skein_512_process_block_10.
*** true .          /* all conclusions proved */


