diff options
Diffstat (limited to 'gdb/cheri-compressed-cap/test/sail_compression_128m.c')
-rw-r--r-- | gdb/cheri-compressed-cap/test/sail_compression_128m.c | 2922 |
1 files changed, 2922 insertions, 0 deletions
diff --git a/gdb/cheri-compressed-cap/test/sail_compression_128m.c b/gdb/cheri-compressed-cap/test/sail_compression_128m.c new file mode 100644 index 00000000000..2906bef001e --- /dev/null +++ b/gdb/cheri-compressed-cap/test/sail_compression_128m.c @@ -0,0 +1,2922 @@ +#include "elf.h" +#include "rts.h" +#include "sail.h" + +static void sailgen_zzz3zzz3__id(sail_int* rop, sail_int); + +static void sailgen_zzz3zzz3__id(sail_int* zcbz30, sail_int zx) { + __label__ end_function_1, end_block_exception_2, end_function_131; + + COPY(sail_int)((*(&zcbz30)), zx); +end_function_1:; + goto end_function_131; +end_block_exception_2:; + goto end_function_131; +end_function_131:; +} + +static void sailgen_zzz3zzz3Zeros(lbits* rop, sail_int); + +static void sailgen_zzz3zzz3Zeros(lbits* zcbz31, sail_int zn) { + __label__ end_function_4, end_block_exception_5, end_function_130; + + zeros((*(&zcbz31)), zn); +end_function_4:; + goto end_function_130; +end_block_exception_5:; + goto end_function_130; +end_function_130:; +} + +static fbits sailgen_Bit(uint64_t); + +static fbits sailgen_Bit(uint64_t zb) { + __label__ end_function_7, end_block_exception_8; + + fbits zcbz32; + { + sail_int zgsz31; + CREATE(sail_int)(&zgsz31); + CONVERT_OF(sail_int, mach_int)(&zgsz31, INT64_C(0)); + lbits zgsz30; + CREATE(lbits)(&zgsz30); + CONVERT_OF(lbits, fbits)(&zgsz30, zb, UINT64_C(1), true); + zcbz32 = bitvector_access(zgsz30, zgsz31); + KILL(sail_int)(&zgsz31); + KILL(lbits)(&zgsz30); + } +end_function_7:; + return zcbz32; +end_block_exception_8:; + + return UINT64_C(0); +} + +static void sailgen_Slice_int(lbits* rop, sail_int, sail_int, sail_int); + +static void sailgen_Slice_int(lbits* zcbz33, sail_int zi, sail_int zl, sail_int zn) { + __label__ end_function_10, end_block_exception_11, end_function_129; + + get_slice_int((*(&zcbz33)), zn, zi, zl); +end_function_10:; + goto end_function_129; +end_block_exception_11:; + goto end_function_129; +end_function_129:; +} + +static int64_t zCAP_FLAGS_LO_BIT; +static void create_letbind_0(void) { + + int64_t zgsz32; + zgsz32 = INT64_C(56); + zCAP_FLAGS_LO_BIT = zgsz32; + +let_end_12:; +} +static void kill_letbind_0(void) {} + +static int64_t zCAP_VALUE_HI_BIT; +static void create_letbind_1(void) { + + int64_t zgsz33; + zgsz33 = INT64_C(63); + zCAP_VALUE_HI_BIT = zgsz33; + +let_end_13:; +} +static void kill_letbind_1(void) {} + +static int64_t zCAP_VALUE_LO_BIT; +static void create_letbind_2(void) { + + int64_t zgsz34; + zgsz34 = INT64_C(0); + zCAP_VALUE_LO_BIT = zgsz34; + +let_end_14:; +} +static void kill_letbind_2(void) {} + +static int64_t zCAP_VALUE_NUM_BITS; +static void create_letbind_3(void) { + + int64_t zgsz38; + int64_t zgaz30; + { + sail_int zgsz35; + CREATE(sail_int)(&zgsz35); + CONVERT_OF(sail_int, mach_int)(&zgsz35, zCAP_VALUE_HI_BIT); + sail_int zgsz36; + CREATE(sail_int)(&zgsz36); + CONVERT_OF(sail_int, mach_int)(&zgsz36, zCAP_VALUE_LO_BIT); + sail_int zgsz37; + CREATE(sail_int)(&zgsz37); + sub_int(&zgsz37, zgsz35, zgsz36); + zgaz30 = CONVERT_OF(mach_int, sail_int)(zgsz37); + KILL(sail_int)(&zgsz37); + KILL(sail_int)(&zgsz36); + KILL(sail_int)(&zgsz35); + } + { + sail_int zgsz39; + CREATE(sail_int)(&zgsz39); + CONVERT_OF(sail_int, mach_int)(&zgsz39, zgaz30); + sail_int zgsz310; + CREATE(sail_int)(&zgsz310); + CONVERT_OF(sail_int, mach_int)(&zgsz310, INT64_C(1)); + sail_int zgsz311; + CREATE(sail_int)(&zgsz311); + add_int(&zgsz311, zgsz39, zgsz310); + zgsz38 = CONVERT_OF(mach_int, sail_int)(zgsz311); + KILL(sail_int)(&zgsz311); + KILL(sail_int)(&zgsz310); + KILL(sail_int)(&zgsz39); + } + + zCAP_VALUE_NUM_BITS = zgsz38; + +let_end_15:; +} +static void kill_letbind_3(void) {} + +static int64_t zCAP_BASE_HI_BIT; +static void create_letbind_4(void) { + + int64_t zgsz312; + zgsz312 = INT64_C(79); + zCAP_BASE_HI_BIT = zgsz312; + +let_end_16:; +} +static void kill_letbind_4(void) {} + +static int64_t zCAP_BASE_LO_BIT; +static void create_letbind_5(void) { + + int64_t zgsz313; + zgsz313 = INT64_C(64); + zCAP_BASE_LO_BIT = zgsz313; + +let_end_17:; +} +static void kill_letbind_5(void) {} + +static int64_t zCAP_MW; +static void create_letbind_6(void) { + + int64_t zgsz317; + int64_t zgaz31; + { + sail_int zgsz314; + CREATE(sail_int)(&zgsz314); + CONVERT_OF(sail_int, mach_int)(&zgsz314, zCAP_BASE_HI_BIT); + sail_int zgsz315; + CREATE(sail_int)(&zgsz315); + CONVERT_OF(sail_int, mach_int)(&zgsz315, zCAP_BASE_LO_BIT); + sail_int zgsz316; + CREATE(sail_int)(&zgsz316); + sub_int(&zgsz316, zgsz314, zgsz315); + zgaz31 = CONVERT_OF(mach_int, sail_int)(zgsz316); + KILL(sail_int)(&zgsz316); + KILL(sail_int)(&zgsz315); + KILL(sail_int)(&zgsz314); + } + { + sail_int zgsz318; + CREATE(sail_int)(&zgsz318); + CONVERT_OF(sail_int, mach_int)(&zgsz318, zgaz31); + sail_int zgsz319; + CREATE(sail_int)(&zgsz319); + CONVERT_OF(sail_int, mach_int)(&zgsz319, INT64_C(1)); + sail_int zgsz320; + CREATE(sail_int)(&zgsz320); + add_int(&zgsz320, zgsz318, zgsz319); + zgsz317 = CONVERT_OF(mach_int, sail_int)(zgsz320); + KILL(sail_int)(&zgsz320); + KILL(sail_int)(&zgsz319); + KILL(sail_int)(&zgsz318); + } + + zCAP_MW = zgsz317; + +let_end_18:; +} +static void kill_letbind_6(void) {} + +static int64_t zCAP_BASE_EXP_HI_BIT; +static void create_letbind_7(void) { + + int64_t zgsz321; + zgsz321 = INT64_C(66); + zCAP_BASE_EXP_HI_BIT = zgsz321; + +let_end_19:; +} +static void kill_letbind_7(void) {} + +static int64_t zCAP_LIMIT_EXP_HI_BIT; +static void create_letbind_8(void) { + + int64_t zgsz322; + zgsz322 = INT64_C(82); + zCAP_LIMIT_EXP_HI_BIT = zgsz322; + +let_end_20:; +} +static void kill_letbind_8(void) {} + +static int64_t zCAP_LIMIT_LO_BIT; +static void create_letbind_9(void) { + + int64_t zgsz323; + zgsz323 = INT64_C(80); + zCAP_LIMIT_LO_BIT = zgsz323; + +let_end_21:; +} +static void kill_letbind_9(void) {} + +static int64_t zCAP_IE_BIT; +static void create_letbind_10(void) { + + int64_t zgsz324; + zgsz324 = INT64_C(94); + zCAP_IE_BIT = zgsz324; + +let_end_22:; +} +static void kill_letbind_10(void) {} + +static bool sailgen_CapIsInternalExponent(lbits); + +static bool sailgen_CapIsInternalExponent(lbits zc) { + __label__ cleanup_25, end_cleanup_26, end_function_24, end_block_exception_27; + + bool zcbz34; + bool zgaz34; + { + uint64_t zgaz33; + { + fbits zgaz32; + { + sail_int zgsz325; + CREATE(sail_int)(&zgsz325); + CONVERT_OF(sail_int, mach_int)(&zgsz325, zCAP_IE_BIT); + zgaz32 = bitvector_access(zc, zgsz325); + KILL(sail_int)(&zgsz325); + } + uint64_t zgsz326; + zgsz326 = UINT64_C(0b0); + zgsz326 = update_fbits(zgsz326, INT64_C(0), zgaz32); + zgaz33 = zgsz326; + } + { + lbits zgsz328; + CREATE(lbits)(&zgsz328); + CONVERT_OF(lbits, fbits)(&zgsz328, UINT64_C(0b0), UINT64_C(1), true); + lbits zgsz327; + CREATE(lbits)(&zgsz327); + CONVERT_OF(lbits, fbits)(&zgsz327, zgaz33, UINT64_C(1), true); + zgaz34 = eq_bits(zgsz327, zgsz328); + KILL(lbits)(&zgsz328); + KILL(lbits)(&zgsz327); + } + } + zcbz34 = zgaz34; + goto cleanup_25; + /* unreachable after return */ + + goto end_cleanup_26; +cleanup_25:; + + goto end_function_24; +end_cleanup_26:; +end_function_24:; + return zcbz34; +end_block_exception_27:; + + return false; +} + +static int64_t sailgen_CapGetExponent(lbits); + +static int64_t sailgen_CapGetExponent(lbits zc) { + __label__ end_function_29, end_block_exception_34; + + int64_t zcbz35; + bool zgaz35; + zgaz35 = sailgen_CapIsInternalExponent(zc); + if (zgaz35) { + __label__ cleanup_32, end_cleanup_33; + + uint64_t znexp; + { + uint64_t zgaz38; + { + sail_int zgsz329; + CREATE(sail_int)(&zgsz329); + CONVERT_OF(sail_int, mach_int)(&zgsz329, zCAP_LIMIT_EXP_HI_BIT); + sail_int zgsz330; + CREATE(sail_int)(&zgsz330); + CONVERT_OF(sail_int, mach_int)(&zgsz330, zCAP_LIMIT_LO_BIT); + lbits zgsz331; + CREATE(lbits)(&zgsz331); + vector_subrange_lbits(&zgsz331, zc, zgsz329, zgsz330); + zgaz38 = CONVERT_OF(fbits, lbits)(zgsz331, true); + KILL(lbits)(&zgsz331); + KILL(sail_int)(&zgsz330); + KILL(sail_int)(&zgsz329); + } + uint64_t zgaz39; + { + sail_int zgsz332; + CREATE(sail_int)(&zgsz332); + CONVERT_OF(sail_int, mach_int)(&zgsz332, zCAP_BASE_EXP_HI_BIT); + sail_int zgsz333; + CREATE(sail_int)(&zgsz333); + CONVERT_OF(sail_int, mach_int)(&zgsz333, zCAP_BASE_LO_BIT); + lbits zgsz334; + CREATE(lbits)(&zgsz334); + vector_subrange_lbits(&zgsz334, zc, zgsz332, zgsz333); + zgaz39 = CONVERT_OF(fbits, lbits)(zgsz334, true); + KILL(lbits)(&zgsz334); + KILL(sail_int)(&zgsz333); + KILL(sail_int)(&zgsz332); + } + { + lbits zgsz335; + CREATE(lbits)(&zgsz335); + CONVERT_OF(lbits, fbits)(&zgsz335, zgaz38, UINT64_C(3), true); + lbits zgsz336; + CREATE(lbits)(&zgsz336); + CONVERT_OF(lbits, fbits)(&zgsz336, zgaz39, UINT64_C(3), true); + lbits zgsz337; + CREATE(lbits)(&zgsz337); + append(&zgsz337, zgsz335, zgsz336); + znexp = CONVERT_OF(fbits, lbits)(zgsz337, true); + KILL(lbits)(&zgsz337); + KILL(lbits)(&zgsz336); + KILL(lbits)(&zgsz335); + } + } + int64_t zgaz37; + { + uint64_t zgaz36; + { + lbits zgsz338; + CREATE(lbits)(&zgsz338); + CONVERT_OF(lbits, fbits)(&zgsz338, znexp, UINT64_C(6), true); + lbits zgsz339; + CREATE(lbits)(&zgsz339); + not_bits(&zgsz339, zgsz338); + zgaz36 = CONVERT_OF(fbits, lbits)(zgsz339, true); + KILL(lbits)(&zgsz339); + KILL(lbits)(&zgsz338); + } + zgaz37 = ((mach_int)zgaz36); + } + zcbz35 = zgaz37; + goto cleanup_32; + /* unreachable after return */ + + goto end_cleanup_33; + cleanup_32:; + + goto end_function_29; + end_cleanup_33:; + } else { + __label__ cleanup_30, end_cleanup_31; + + zcbz35 = INT64_C(0); + goto cleanup_30; + /* unreachable after return */ + goto end_cleanup_31; + cleanup_30:; + + goto end_function_29; + end_cleanup_31:; + } + +end_function_29:; + return zcbz35; +end_block_exception_34:; + + return INT64_C(0xdeadc0de); +} + +static uint64_t sailgen_CapGetValue(lbits); + +static uint64_t sailgen_CapGetValue(lbits zc) { + __label__ cleanup_37, end_cleanup_38, end_function_36, end_block_exception_39; + + uint64_t zcbz36; + uint64_t zgaz310; + { + sail_int zgsz340; + CREATE(sail_int)(&zgsz340); + CONVERT_OF(sail_int, mach_int)(&zgsz340, zCAP_VALUE_HI_BIT); + sail_int zgsz341; + CREATE(sail_int)(&zgsz341); + CONVERT_OF(sail_int, mach_int)(&zgsz341, zCAP_VALUE_LO_BIT); + lbits zgsz342; + CREATE(lbits)(&zgsz342); + vector_subrange_lbits(&zgsz342, zc, zgsz340, zgsz341); + zgaz310 = CONVERT_OF(fbits, lbits)(zgsz342, true); + KILL(lbits)(&zgsz342); + KILL(sail_int)(&zgsz341); + KILL(sail_int)(&zgsz340); + } + zcbz36 = zgaz310; + goto cleanup_37; + /* unreachable after return */ + + goto end_cleanup_38; +cleanup_37:; + + goto end_function_36; +end_cleanup_38:; +end_function_36:; + return zcbz36; +end_block_exception_39:; + + return UINT64_C(0xdeadc0de); +} + +static int64_t zCAP_BOUND_NUM_BITS; +static void create_letbind_11(void) { + + int64_t zgsz343; + { + sail_int zgsz344; + CREATE(sail_int)(&zgsz344); + CONVERT_OF(sail_int, mach_int)(&zgsz344, zCAP_VALUE_NUM_BITS); + sail_int zgsz345; + CREATE(sail_int)(&zgsz345); + CONVERT_OF(sail_int, mach_int)(&zgsz345, INT64_C(1)); + sail_int zgsz346; + CREATE(sail_int)(&zgsz346); + add_int(&zgsz346, zgsz344, zgsz345); + zgsz343 = CONVERT_OF(mach_int, sail_int)(zgsz346); + KILL(sail_int)(&zgsz346); + KILL(sail_int)(&zgsz345); + KILL(sail_int)(&zgsz344); + } + zCAP_BOUND_NUM_BITS = zgsz343; + +let_end_40:; +} +static void kill_letbind_11(void) {} + +static lbits zCAP_BOUND_MAX; +static void create_letbind_12(void) { + CREATE(lbits)(&zCAP_BOUND_MAX); + + lbits zgsz349; + CREATE(lbits)(&zgsz349); + sail_int zgaz311; + CREATE(sail_int)(&zgaz311); + { + sail_int zgsz348; + CREATE(sail_int)(&zgsz348); + CONVERT_OF(sail_int, mach_int)(&zgsz348, zCAP_VALUE_NUM_BITS); + sail_int zgsz347; + CREATE(sail_int)(&zgsz347); + CONVERT_OF(sail_int, mach_int)(&zgsz347, INT64_C(1)); + shl_int(&zgaz311, zgsz347, zgsz348); + KILL(sail_int)(&zgsz348); + KILL(sail_int)(&zgsz347); + } + { + sail_int zgsz351; + CREATE(sail_int)(&zgsz351); + CONVERT_OF(sail_int, mach_int)(&zgsz351, zCAP_BOUND_NUM_BITS); + sail_int zgsz350; + CREATE(sail_int)(&zgsz350); + CONVERT_OF(sail_int, mach_int)(&zgsz350, INT64_C(0)); + sailgen_Slice_int(&zgsz349, zgaz311, zgsz350, zgsz351); + KILL(sail_int)(&zgsz351); + KILL(sail_int)(&zgsz350); + } + KILL(sail_int)(&zgaz311); + COPY(lbits)(&zCAP_BOUND_MAX, zgsz349); + KILL(lbits)(&zgsz349); +let_end_41:; +} +static void kill_letbind_12(void) { KILL(lbits)(&zCAP_BOUND_MAX); } + +static lbits zCAP_BOUND_MIN; +static void create_letbind_13(void) { + CREATE(lbits)(&zCAP_BOUND_MIN); + + lbits zgsz352; + CREATE(lbits)(&zgsz352); + int64_t zgaz312; + zgaz312 = ((mach_int)UINT64_C(0x0)); + { + sail_int zgsz355; + CREATE(sail_int)(&zgsz355); + CONVERT_OF(sail_int, mach_int)(&zgsz355, zCAP_BOUND_NUM_BITS); + sail_int zgsz354; + CREATE(sail_int)(&zgsz354); + CONVERT_OF(sail_int, mach_int)(&zgsz354, INT64_C(0)); + sail_int zgsz353; + CREATE(sail_int)(&zgsz353); + CONVERT_OF(sail_int, mach_int)(&zgsz353, zgaz312); + sailgen_Slice_int(&zgsz352, zgsz353, zgsz354, zgsz355); + KILL(sail_int)(&zgsz355); + KILL(sail_int)(&zgsz354); + KILL(sail_int)(&zgsz353); + } + + COPY(lbits)(&zCAP_BOUND_MIN, zgsz352); + KILL(lbits)(&zgsz352); +let_end_42:; +} +static void kill_letbind_13(void) { KILL(lbits)(&zCAP_BOUND_MIN); } + +static int64_t zCAP_MAX_ENCODEABLE_EXPONENT; +static void create_letbind_14(void) { + + int64_t zgsz356; + zgsz356 = INT64_C(63); + zCAP_MAX_ENCODEABLE_EXPONENT = zgsz356; + +let_end_43:; +} +static void kill_letbind_14(void) {} + +static int64_t zCAP_MAX_EXPONENT; +static void create_letbind_15(void) { + + int64_t zgsz360; + int64_t zgaz313; + { + sail_int zgsz357; + CREATE(sail_int)(&zgsz357); + CONVERT_OF(sail_int, mach_int)(&zgsz357, zCAP_VALUE_NUM_BITS); + sail_int zgsz358; + CREATE(sail_int)(&zgsz358); + CONVERT_OF(sail_int, mach_int)(&zgsz358, zCAP_MW); + sail_int zgsz359; + CREATE(sail_int)(&zgsz359); + sub_int(&zgsz359, zgsz357, zgsz358); + zgaz313 = CONVERT_OF(mach_int, sail_int)(zgsz359); + KILL(sail_int)(&zgsz359); + KILL(sail_int)(&zgsz358); + KILL(sail_int)(&zgsz357); + } + { + sail_int zgsz361; + CREATE(sail_int)(&zgsz361); + CONVERT_OF(sail_int, mach_int)(&zgsz361, zgaz313); + sail_int zgsz362; + CREATE(sail_int)(&zgsz362); + CONVERT_OF(sail_int, mach_int)(&zgsz362, INT64_C(2)); + sail_int zgsz363; + CREATE(sail_int)(&zgsz363); + add_int(&zgsz363, zgsz361, zgsz362); + zgsz360 = CONVERT_OF(mach_int, sail_int)(zgsz363); + KILL(sail_int)(&zgsz363); + KILL(sail_int)(&zgsz362); + KILL(sail_int)(&zgsz361); + } + + zCAP_MAX_EXPONENT = zgsz360; + +let_end_44:; +} +static void kill_letbind_15(void) {} + +static uint64_t sailgen_CapBoundsAddress(uint64_t); + +static uint64_t sailgen_CapBoundsAddress(uint64_t zaddress) { + __label__ cleanup_47, end_cleanup_48, end_function_46, end_block_exception_49; + + uint64_t zcbz37; + uint64_t zgaz316; + { + uint64_t zgaz315; + { + int64_t zgaz314; + { + sail_int zgsz364; + CREATE(sail_int)(&zgsz364); + CONVERT_OF(sail_int, mach_int)(&zgsz364, zCAP_FLAGS_LO_BIT); + sail_int zgsz365; + CREATE(sail_int)(&zgsz365); + CONVERT_OF(sail_int, mach_int)(&zgsz365, INT64_C(1)); + sail_int zgsz366; + CREATE(sail_int)(&zgsz366); + sub_int(&zgsz366, zgsz364, zgsz365); + zgaz314 = CONVERT_OF(mach_int, sail_int)(zgsz366); + KILL(sail_int)(&zgsz366); + KILL(sail_int)(&zgsz365); + KILL(sail_int)(&zgsz364); + } + { + lbits zgsz367; + CREATE(lbits)(&zgsz367); + CONVERT_OF(lbits, fbits)(&zgsz367, zaddress, UINT64_C(64), true); + sail_int zgsz368; + CREATE(sail_int)(&zgsz368); + CONVERT_OF(sail_int, mach_int)(&zgsz368, zgaz314); + sail_int zgsz369; + CREATE(sail_int)(&zgsz369); + CONVERT_OF(sail_int, mach_int)(&zgsz369, INT64_C(0)); + lbits zgsz370; + CREATE(lbits)(&zgsz370); + vector_subrange_lbits(&zgsz370, zgsz367, zgsz368, zgsz369); + zgaz315 = CONVERT_OF(fbits, lbits)(zgsz370, true); + KILL(lbits)(&zgsz370); + KILL(sail_int)(&zgsz369); + KILL(sail_int)(&zgsz368); + KILL(lbits)(&zgsz367); + } + } + { + lbits zgsz371; + CREATE(lbits)(&zgsz371); + CONVERT_OF(lbits, fbits)(&zgsz371, zgaz315, UINT64_C(56), true); + sail_int zgsz372; + CREATE(sail_int)(&zgsz372); + CONVERT_OF(sail_int, mach_int)(&zgsz372, zCAP_VALUE_NUM_BITS); + lbits zgsz373; + CREATE(lbits)(&zgsz373); + sign_extend(&zgsz373, zgsz371, zgsz372); + zgaz316 = CONVERT_OF(fbits, lbits)(zgsz373, true); + KILL(lbits)(&zgsz373); + KILL(sail_int)(&zgsz372); + KILL(lbits)(&zgsz371); + } + } + zcbz37 = zgaz316; + goto cleanup_47; + /* unreachable after return */ + + goto end_cleanup_48; +cleanup_47:; + + goto end_function_46; +end_cleanup_48:; +end_function_46:; + return zcbz37; +end_block_exception_49:; + + return UINT64_C(0xdeadc0de); +} + +static int64_t zCAP_BASE_MANTISSA_LO_BIT; +static void create_letbind_16(void) { + + int64_t zgsz374; + zgsz374 = INT64_C(67); + zCAP_BASE_MANTISSA_LO_BIT = zgsz374; + +let_end_50:; +} +static void kill_letbind_16(void) {} + +static uint64_t sailgen_CapGetBottom(lbits); + +static uint64_t sailgen_CapGetBottom(lbits zc) { + __label__ end_function_52, end_block_exception_57; + + uint64_t zcbz38; + bool zgaz317; + zgaz317 = sailgen_CapIsInternalExponent(zc); + if (zgaz317) { + __label__ cleanup_55, end_cleanup_56; + + uint64_t zgaz319; + { + uint64_t zgaz318; + { + sail_int zgsz378; + CREATE(sail_int)(&zgsz378); + CONVERT_OF(sail_int, mach_int)(&zgsz378, zCAP_BASE_HI_BIT); + sail_int zgsz379; + CREATE(sail_int)(&zgsz379); + CONVERT_OF(sail_int, mach_int)(&zgsz379, zCAP_BASE_MANTISSA_LO_BIT); + lbits zgsz380; + CREATE(lbits)(&zgsz380); + vector_subrange_lbits(&zgsz380, zc, zgsz378, zgsz379); + zgaz318 = CONVERT_OF(fbits, lbits)(zgsz380, true); + KILL(lbits)(&zgsz380); + KILL(sail_int)(&zgsz379); + KILL(sail_int)(&zgsz378); + } + { + lbits zgsz381; + CREATE(lbits)(&zgsz381); + CONVERT_OF(lbits, fbits)(&zgsz381, zgaz318, UINT64_C(13), true); + lbits zgsz382; + CREATE(lbits)(&zgsz382); + CONVERT_OF(lbits, fbits)(&zgsz382, UINT64_C(0b000), UINT64_C(3), true); + lbits zgsz383; + CREATE(lbits)(&zgsz383); + append(&zgsz383, zgsz381, zgsz382); + zgaz319 = CONVERT_OF(fbits, lbits)(zgsz383, true); + KILL(lbits)(&zgsz383); + KILL(lbits)(&zgsz382); + KILL(lbits)(&zgsz381); + } + } + zcbz38 = zgaz319; + goto cleanup_55; + /* unreachable after return */ + + goto end_cleanup_56; + cleanup_55:; + + goto end_function_52; + end_cleanup_56:; + } else { + __label__ cleanup_53, end_cleanup_54; + + uint64_t zgaz320; + { + sail_int zgsz375; + CREATE(sail_int)(&zgsz375); + CONVERT_OF(sail_int, mach_int)(&zgsz375, zCAP_BASE_HI_BIT); + sail_int zgsz376; + CREATE(sail_int)(&zgsz376); + CONVERT_OF(sail_int, mach_int)(&zgsz376, zCAP_BASE_LO_BIT); + lbits zgsz377; + CREATE(lbits)(&zgsz377); + vector_subrange_lbits(&zgsz377, zc, zgsz375, zgsz376); + zgaz320 = CONVERT_OF(fbits, lbits)(zgsz377, true); + KILL(lbits)(&zgsz377); + KILL(sail_int)(&zgsz376); + KILL(sail_int)(&zgsz375); + } + zcbz38 = zgaz320; + goto cleanup_53; + /* unreachable after return */ + + goto end_cleanup_54; + cleanup_53:; + + goto end_function_52; + end_cleanup_54:; + } + +end_function_52:; + return zcbz38; +end_block_exception_57:; + + return UINT64_C(0xdeadc0de); +} + +static int64_t zCAP_LIMIT_HI_BIT; +static void create_letbind_17(void) { + + int64_t zgsz384; + zgsz384 = INT64_C(93); + zCAP_LIMIT_HI_BIT = zgsz384; + +let_end_58:; +} +static void kill_letbind_17(void) {} + +static int64_t zCAP_LIMIT_MANTISSA_LO_BIT; +static void create_letbind_18(void) { + + int64_t zgsz385; + zgsz385 = INT64_C(83); + zCAP_LIMIT_MANTISSA_LO_BIT = zgsz385; + +let_end_59:; +} +static void kill_letbind_18(void) {} + +static bool sailgen_zzz3zzz3CapUnsignedLessThan(lbits, lbits); + +static bool sailgen_zzzz7NzzJzzK3z3CapUnsignedLessThan(uint64_t, uint64_t); + +static bool sailgen_zzz3zzz3CapUnsignedLessThan(lbits za, lbits zb) { + __label__ cleanup_62, end_cleanup_63, end_function_61, end_block_exception_64; + + bool zcbz39; + bool zgaz323; + { + sail_int zgaz321; + CREATE(sail_int)(&zgaz321); + sail_unsigned(&zgaz321, za); + sail_int zgaz322; + CREATE(sail_int)(&zgaz322); + sail_unsigned(&zgaz322, zb); + zgaz323 = lt(zgaz321, zgaz322); + KILL(sail_int)(&zgaz322); + KILL(sail_int)(&zgaz321); + } + zcbz39 = zgaz323; + goto cleanup_62; + /* unreachable after return */ + + goto end_cleanup_63; +cleanup_62:; + + goto end_function_61; +end_cleanup_63:; +end_function_61:; + return zcbz39; +end_block_exception_64:; + + return false; +} + +static bool sailgen_zzzz7NzzJzzK3z3CapUnsignedLessThan(uint64_t za, uint64_t zb) { + __label__ cleanup_67, end_cleanup_68, end_function_66, end_block_exception_69; + + bool zcbz310; + bool zgaz326; + { + int64_t zgaz324; + zgaz324 = ((mach_int)za); + int64_t zgaz325; + zgaz325 = ((mach_int)zb); + { + sail_int zgsz387; + CREATE(sail_int)(&zgsz387); + CONVERT_OF(sail_int, mach_int)(&zgsz387, zgaz325); + sail_int zgsz386; + CREATE(sail_int)(&zgsz386); + CONVERT_OF(sail_int, mach_int)(&zgsz386, zgaz324); + zgaz326 = lt(zgsz386, zgsz387); + KILL(sail_int)(&zgsz387); + KILL(sail_int)(&zgsz386); + } + } + zcbz310 = zgaz326; + goto cleanup_67; + /* unreachable after return */ + + goto end_cleanup_68; +cleanup_67:; + + goto end_function_66; +end_cleanup_68:; +end_function_66:; + return zcbz310; +end_block_exception_69:; + + return false; +} + +static uint64_t sailgen_CapGetTop(lbits); + +static uint64_t sailgen_CapGetTop(lbits zc) { + __label__ cleanup_72, end_cleanup_73, end_function_71, end_block_exception_74; + + uint64_t zcbz311; + uint64_t zlmsb; + zlmsb = UINT64_C(0b00); + uint64_t zlcarry; + zlcarry = UINT64_C(0b00); + uint64_t zb; + zb = sailgen_CapGetBottom(zc); + uint64_t zt; + { + int64_t zgaz344; + { + int64_t zgaz343; + { + sail_int zgsz388; + CREATE(sail_int)(&zgsz388); + CONVERT_OF(sail_int, mach_int)(&zgsz388, INT64_C(79)); + sail_int zgsz389; + CREATE(sail_int)(&zgsz389); + CONVERT_OF(sail_int, mach_int)(&zgsz389, INT64_C(64)); + sail_int zgsz390; + CREATE(sail_int)(&zgsz390); + sub_int(&zgsz390, zgsz388, zgsz389); + zgaz343 = CONVERT_OF(mach_int, sail_int)(zgsz390); + KILL(sail_int)(&zgsz390); + KILL(sail_int)(&zgsz389); + KILL(sail_int)(&zgsz388); + } + { + sail_int zgsz391; + CREATE(sail_int)(&zgsz391); + CONVERT_OF(sail_int, mach_int)(&zgsz391, zgaz343); + sail_int zgsz392; + CREATE(sail_int)(&zgsz392); + CONVERT_OF(sail_int, mach_int)(&zgsz392, INT64_C(1)); + sail_int zgsz393; + CREATE(sail_int)(&zgsz393); + add_int(&zgsz393, zgsz391, zgsz392); + zgaz344 = CONVERT_OF(mach_int, sail_int)(zgsz393); + KILL(sail_int)(&zgsz393); + KILL(sail_int)(&zgsz392); + KILL(sail_int)(&zgsz391); + } + } + { + sail_int zgsz394; + CREATE(sail_int)(&zgsz394); + CONVERT_OF(sail_int, mach_int)(&zgsz394, zgaz344); + lbits zgsz395; + CREATE(lbits)(&zgsz395); + UNDEFINED(lbits)(&zgsz395, zgsz394); + zt = CONVERT_OF(fbits, lbits)(zgsz395, true); + KILL(lbits)(&zgsz395); + KILL(sail_int)(&zgsz394); + } + } + { + bool zgaz327; + zgaz327 = sailgen_CapIsInternalExponent(zc); + unit zgsz3141; + if (zgaz327) { + { + zlmsb = UINT64_C(0b01); + unit zgsz3148; + zgsz3148 = UNIT; + } + uint64_t zgaz329; + { + uint64_t zgaz328; + { + sail_int zgsz3149; + CREATE(sail_int)(&zgsz3149); + CONVERT_OF(sail_int, mach_int)(&zgsz3149, zCAP_LIMIT_HI_BIT); + sail_int zgsz3150; + CREATE(sail_int)(&zgsz3150); + CONVERT_OF(sail_int, mach_int)(&zgsz3150, zCAP_LIMIT_MANTISSA_LO_BIT); + lbits zgsz3151; + CREATE(lbits)(&zgsz3151); + vector_subrange_lbits(&zgsz3151, zc, zgsz3149, zgsz3150); + zgaz328 = CONVERT_OF(fbits, lbits)(zgsz3151, true); + KILL(lbits)(&zgsz3151); + KILL(sail_int)(&zgsz3150); + KILL(sail_int)(&zgsz3149); + } + { + lbits zgsz3152; + CREATE(lbits)(&zgsz3152); + CONVERT_OF(lbits, fbits)(&zgsz3152, UINT64_C(0b00), UINT64_C(2), true); + lbits zgsz3153; + CREATE(lbits)(&zgsz3153); + CONVERT_OF(lbits, fbits)(&zgsz3153, zgaz328, UINT64_C(11), true); + lbits zgsz3154; + CREATE(lbits)(&zgsz3154); + append(&zgsz3154, zgsz3152, zgsz3153); + zgaz329 = CONVERT_OF(fbits, lbits)(zgsz3154, true); + KILL(lbits)(&zgsz3154); + KILL(lbits)(&zgsz3153); + KILL(lbits)(&zgsz3152); + } + } + { + lbits zgsz3155; + CREATE(lbits)(&zgsz3155); + CONVERT_OF(lbits, fbits)(&zgsz3155, zgaz329, UINT64_C(13), true); + lbits zgsz3156; + CREATE(lbits)(&zgsz3156); + CONVERT_OF(lbits, fbits)(&zgsz3156, UINT64_C(0b000), UINT64_C(3), true); + lbits zgsz3157; + CREATE(lbits)(&zgsz3157); + append(&zgsz3157, zgsz3155, zgsz3156); + zt = CONVERT_OF(fbits, lbits)(zgsz3157, true); + KILL(lbits)(&zgsz3157); + KILL(lbits)(&zgsz3156); + KILL(lbits)(&zgsz3155); + } + zgsz3141 = UNIT; + + } else { + uint64_t zgaz330; + { + sail_int zgsz3142; + CREATE(sail_int)(&zgsz3142); + CONVERT_OF(sail_int, mach_int)(&zgsz3142, zCAP_LIMIT_HI_BIT); + sail_int zgsz3143; + CREATE(sail_int)(&zgsz3143); + CONVERT_OF(sail_int, mach_int)(&zgsz3143, zCAP_LIMIT_LO_BIT); + lbits zgsz3144; + CREATE(lbits)(&zgsz3144); + vector_subrange_lbits(&zgsz3144, zc, zgsz3142, zgsz3143); + zgaz330 = CONVERT_OF(fbits, lbits)(zgsz3144, true); + KILL(lbits)(&zgsz3144); + KILL(sail_int)(&zgsz3143); + KILL(sail_int)(&zgsz3142); + } + { + lbits zgsz3145; + CREATE(lbits)(&zgsz3145); + CONVERT_OF(lbits, fbits)(&zgsz3145, UINT64_C(0b00), UINT64_C(2), true); + lbits zgsz3146; + CREATE(lbits)(&zgsz3146); + CONVERT_OF(lbits, fbits)(&zgsz3146, zgaz330, UINT64_C(14), true); + lbits zgsz3147; + CREATE(lbits)(&zgsz3147); + append(&zgsz3147, zgsz3145, zgsz3146); + zt = CONVERT_OF(fbits, lbits)(zgsz3147, true); + KILL(lbits)(&zgsz3147); + KILL(lbits)(&zgsz3146); + KILL(lbits)(&zgsz3145); + } + zgsz3141 = UNIT; + } + } + { + bool zgaz335; + { + uint64_t zgaz333; + { + int64_t zgaz331; + { + sail_int zgsz396; + CREATE(sail_int)(&zgsz396); + CONVERT_OF(sail_int, mach_int)(&zgsz396, zCAP_MW); + sail_int zgsz397; + CREATE(sail_int)(&zgsz397); + CONVERT_OF(sail_int, mach_int)(&zgsz397, INT64_C(3)); + sail_int zgsz398; + CREATE(sail_int)(&zgsz398); + sub_int(&zgsz398, zgsz396, zgsz397); + zgaz331 = CONVERT_OF(mach_int, sail_int)(zgsz398); + KILL(sail_int)(&zgsz398); + KILL(sail_int)(&zgsz397); + KILL(sail_int)(&zgsz396); + } + { + lbits zgsz399; + CREATE(lbits)(&zgsz399); + CONVERT_OF(lbits, fbits)(&zgsz399, zt, UINT64_C(16), true); + sail_int zgsz3100; + CREATE(sail_int)(&zgsz3100); + CONVERT_OF(sail_int, mach_int)(&zgsz3100, zgaz331); + sail_int zgsz3101; + CREATE(sail_int)(&zgsz3101); + CONVERT_OF(sail_int, mach_int)(&zgsz3101, INT64_C(0)); + lbits zgsz3102; + CREATE(lbits)(&zgsz3102); + vector_subrange_lbits(&zgsz3102, zgsz399, zgsz3100, zgsz3101); + zgaz333 = CONVERT_OF(fbits, lbits)(zgsz3102, true); + KILL(lbits)(&zgsz3102); + KILL(sail_int)(&zgsz3101); + KILL(sail_int)(&zgsz3100); + KILL(lbits)(&zgsz399); + } + } + uint64_t zgaz334; + { + int64_t zgaz332; + { + sail_int zgsz3103; + CREATE(sail_int)(&zgsz3103); + CONVERT_OF(sail_int, mach_int)(&zgsz3103, zCAP_MW); + sail_int zgsz3104; + CREATE(sail_int)(&zgsz3104); + CONVERT_OF(sail_int, mach_int)(&zgsz3104, INT64_C(3)); + sail_int zgsz3105; + CREATE(sail_int)(&zgsz3105); + sub_int(&zgsz3105, zgsz3103, zgsz3104); + zgaz332 = CONVERT_OF(mach_int, sail_int)(zgsz3105); + KILL(sail_int)(&zgsz3105); + KILL(sail_int)(&zgsz3104); + KILL(sail_int)(&zgsz3103); + } + { + lbits zgsz3106; + CREATE(lbits)(&zgsz3106); + CONVERT_OF(lbits, fbits)(&zgsz3106, zb, UINT64_C(16), true); + sail_int zgsz3107; + CREATE(sail_int)(&zgsz3107); + CONVERT_OF(sail_int, mach_int)(&zgsz3107, zgaz332); + sail_int zgsz3108; + CREATE(sail_int)(&zgsz3108); + CONVERT_OF(sail_int, mach_int)(&zgsz3108, INT64_C(0)); + lbits zgsz3109; + CREATE(lbits)(&zgsz3109); + vector_subrange_lbits(&zgsz3109, zgsz3106, zgsz3107, zgsz3108); + zgaz334 = CONVERT_OF(fbits, lbits)(zgsz3109, true); + KILL(lbits)(&zgsz3109); + KILL(sail_int)(&zgsz3108); + KILL(sail_int)(&zgsz3107); + KILL(lbits)(&zgsz3106); + } + } + { + lbits zgsz3111; + CREATE(lbits)(&zgsz3111); + CONVERT_OF(lbits, fbits)(&zgsz3111, zgaz334, UINT64_C(14), true); + lbits zgsz3110; + CREATE(lbits)(&zgsz3110); + CONVERT_OF(lbits, fbits)(&zgsz3110, zgaz333, UINT64_C(14), true); + zgaz335 = sailgen_zzz3zzz3CapUnsignedLessThan(zgsz3110, zgsz3111); + KILL(lbits)(&zgsz3111); + KILL(lbits)(&zgsz3110); + } + } + unit zgsz3140; + if (zgaz335) { + zlcarry = UINT64_C(0b01); + zgsz3140 = UNIT; + } else { + zgsz3140 = UNIT; + } + } + { + int64_t zgaz340; + { + sail_int zgsz3112; + CREATE(sail_int)(&zgsz3112); + CONVERT_OF(sail_int, mach_int)(&zgsz3112, zCAP_MW); + sail_int zgsz3113; + CREATE(sail_int)(&zgsz3113); + CONVERT_OF(sail_int, mach_int)(&zgsz3113, INT64_C(1)); + sail_int zgsz3114; + CREATE(sail_int)(&zgsz3114); + sub_int(&zgsz3114, zgsz3112, zgsz3113); + zgaz340 = CONVERT_OF(mach_int, sail_int)(zgsz3114); + KILL(sail_int)(&zgsz3114); + KILL(sail_int)(&zgsz3113); + KILL(sail_int)(&zgsz3112); + } + int64_t zgaz341; + { + sail_int zgsz3115; + CREATE(sail_int)(&zgsz3115); + CONVERT_OF(sail_int, mach_int)(&zgsz3115, zCAP_MW); + sail_int zgsz3116; + CREATE(sail_int)(&zgsz3116); + CONVERT_OF(sail_int, mach_int)(&zgsz3116, INT64_C(2)); + sail_int zgsz3117; + CREATE(sail_int)(&zgsz3117); + sub_int(&zgsz3117, zgsz3115, zgsz3116); + zgaz341 = CONVERT_OF(mach_int, sail_int)(zgsz3117); + KILL(sail_int)(&zgsz3117); + KILL(sail_int)(&zgsz3116); + KILL(sail_int)(&zgsz3115); + } + uint64_t zgaz342; + { + uint64_t zgaz339; + { + uint64_t zgaz338; + { + int64_t zgaz336; + { + sail_int zgsz3118; + CREATE(sail_int)(&zgsz3118); + CONVERT_OF(sail_int, mach_int)(&zgsz3118, zCAP_MW); + sail_int zgsz3119; + CREATE(sail_int)(&zgsz3119); + CONVERT_OF(sail_int, mach_int)(&zgsz3119, INT64_C(1)); + sail_int zgsz3120; + CREATE(sail_int)(&zgsz3120); + sub_int(&zgsz3120, zgsz3118, zgsz3119); + zgaz336 = CONVERT_OF(mach_int, sail_int)(zgsz3120); + KILL(sail_int)(&zgsz3120); + KILL(sail_int)(&zgsz3119); + KILL(sail_int)(&zgsz3118); + } + int64_t zgaz337; + { + sail_int zgsz3121; + CREATE(sail_int)(&zgsz3121); + CONVERT_OF(sail_int, mach_int)(&zgsz3121, zCAP_MW); + sail_int zgsz3122; + CREATE(sail_int)(&zgsz3122); + CONVERT_OF(sail_int, mach_int)(&zgsz3122, INT64_C(2)); + sail_int zgsz3123; + CREATE(sail_int)(&zgsz3123); + sub_int(&zgsz3123, zgsz3121, zgsz3122); + zgaz337 = CONVERT_OF(mach_int, sail_int)(zgsz3123); + KILL(sail_int)(&zgsz3123); + KILL(sail_int)(&zgsz3122); + KILL(sail_int)(&zgsz3121); + } + { + lbits zgsz3124; + CREATE(lbits)(&zgsz3124); + CONVERT_OF(lbits, fbits)(&zgsz3124, zb, UINT64_C(16), true); + sail_int zgsz3125; + CREATE(sail_int)(&zgsz3125); + CONVERT_OF(sail_int, mach_int)(&zgsz3125, zgaz336); + sail_int zgsz3126; + CREATE(sail_int)(&zgsz3126); + CONVERT_OF(sail_int, mach_int)(&zgsz3126, zgaz337); + lbits zgsz3127; + CREATE(lbits)(&zgsz3127); + vector_subrange_lbits(&zgsz3127, zgsz3124, zgsz3125, zgsz3126); + zgaz338 = CONVERT_OF(fbits, lbits)(zgsz3127, true); + KILL(lbits)(&zgsz3127); + KILL(sail_int)(&zgsz3126); + KILL(sail_int)(&zgsz3125); + KILL(lbits)(&zgsz3124); + } + } + { + lbits zgsz3128; + CREATE(lbits)(&zgsz3128); + CONVERT_OF(lbits, fbits)(&zgsz3128, zgaz338, UINT64_C(2), true); + lbits zgsz3129; + CREATE(lbits)(&zgsz3129); + CONVERT_OF(lbits, fbits)(&zgsz3129, zlmsb, UINT64_C(2), true); + lbits zgsz3130; + CREATE(lbits)(&zgsz3130); + add_bits(&zgsz3130, zgsz3128, zgsz3129); + zgaz339 = CONVERT_OF(fbits, lbits)(zgsz3130, true); + KILL(lbits)(&zgsz3130); + KILL(lbits)(&zgsz3129); + KILL(lbits)(&zgsz3128); + } + } + { + lbits zgsz3131; + CREATE(lbits)(&zgsz3131); + CONVERT_OF(lbits, fbits)(&zgsz3131, zgaz339, UINT64_C(2), true); + lbits zgsz3132; + CREATE(lbits)(&zgsz3132); + CONVERT_OF(lbits, fbits)(&zgsz3132, zlcarry, UINT64_C(2), true); + lbits zgsz3133; + CREATE(lbits)(&zgsz3133); + add_bits(&zgsz3133, zgsz3131, zgsz3132); + zgaz342 = CONVERT_OF(fbits, lbits)(zgsz3133, true); + KILL(lbits)(&zgsz3133); + KILL(lbits)(&zgsz3132); + KILL(lbits)(&zgsz3131); + } + } + { + lbits zgsz3134; + CREATE(lbits)(&zgsz3134); + CONVERT_OF(lbits, fbits)(&zgsz3134, zt, UINT64_C(16), true); + sail_int zgsz3135; + CREATE(sail_int)(&zgsz3135); + CONVERT_OF(sail_int, mach_int)(&zgsz3135, zgaz340); + sail_int zgsz3136; + CREATE(sail_int)(&zgsz3136); + CONVERT_OF(sail_int, mach_int)(&zgsz3136, zgaz341); + lbits zgsz3137; + CREATE(lbits)(&zgsz3137); + CONVERT_OF(lbits, fbits)(&zgsz3137, zgaz342, UINT64_C(2), true); + lbits zgsz3138; + CREATE(lbits)(&zgsz3138); + vector_update_subrange_lbits(&zgsz3138, zgsz3134, zgsz3135, zgsz3136, zgsz3137); + zt = CONVERT_OF(fbits, lbits)(zgsz3138, true); + KILL(lbits)(&zgsz3138); + KILL(lbits)(&zgsz3137); + KILL(sail_int)(&zgsz3136); + KILL(sail_int)(&zgsz3135); + KILL(lbits)(&zgsz3134); + } + unit zgsz3139; + zgsz3139 = UNIT; + } + zcbz311 = zt; + goto cleanup_72; + /* unreachable after return */ + + goto end_cleanup_73; +cleanup_72:; + + goto end_function_71; +end_cleanup_73:; +end_function_71:; + return zcbz311; +end_block_exception_74:; + + return UINT64_C(0xdeadc0de); +} + +static bool sailgen_CapIsExponentOutOfRange(lbits); + +static bool sailgen_CapIsExponentOutOfRange(lbits zc) { + __label__ case_77, finish_match_76, end_function_78, end_block_exception_81; + + bool zcbz312; + int64_t zgaz345; + zgaz345 = sailgen_CapGetExponent(zc); + bool zgsz3158; + { + __label__ cleanup_79, end_cleanup_80; + + int64_t zexp; + zexp = zgaz345; + bool zgaz347; + { + bool zgaz346; + { + sail_int zgsz3160; + CREATE(sail_int)(&zgsz3160); + CONVERT_OF(sail_int, mach_int)(&zgsz3160, zCAP_MAX_EXPONENT); + sail_int zgsz3159; + CREATE(sail_int)(&zgsz3159); + CONVERT_OF(sail_int, mach_int)(&zgsz3159, zexp); + zgaz346 = gt(zgsz3159, zgsz3160); + KILL(sail_int)(&zgsz3160); + KILL(sail_int)(&zgsz3159); + } + bool zgsz3161; + if (zgaz346) { + { + sail_int zgsz3163; + CREATE(sail_int)(&zgsz3163); + CONVERT_OF(sail_int, mach_int)(&zgsz3163, zCAP_MAX_ENCODEABLE_EXPONENT); + sail_int zgsz3162; + CREATE(sail_int)(&zgsz3162); + CONVERT_OF(sail_int, mach_int)(&zgsz3162, zexp); + zgsz3161 = lt(zgsz3162, zgsz3163); + KILL(sail_int)(&zgsz3163); + KILL(sail_int)(&zgsz3162); + } + } else { + zgsz3161 = false; + } + zgaz347 = zgsz3161; + } + zcbz312 = zgaz347; + goto cleanup_79; + /* unreachable after return */ + + goto finish_match_76; + goto end_cleanup_80; + cleanup_79:; + + goto end_function_78; + end_cleanup_80:; + } +case_77:; + sail_match_failure("CapIsExponentOutOfRange"); +finish_match_76:; + zcbz312 = zgsz3158; + +end_function_78:; + return zcbz312; +end_block_exception_81:; + + return false; +} + +static bool sailgen_zzzz7NzzJzzK2z3CapUnsignedGreaterThan(uint64_t, uint64_t); + +static bool sailgen_zzzz7NzzJzzK2z3CapUnsignedGreaterThan(uint64_t za, uint64_t zb) { + __label__ cleanup_84, end_cleanup_85, end_function_83, end_block_exception_86; + + bool zcbz313; + bool zgaz350; + { + int64_t zgaz348; + zgaz348 = ((mach_int)za); + int64_t zgaz349; + zgaz349 = ((mach_int)zb); + { + sail_int zgsz3166; + CREATE(sail_int)(&zgsz3166); + CONVERT_OF(sail_int, mach_int)(&zgsz3166, zgaz349); + sail_int zgsz3165; + CREATE(sail_int)(&zgsz3165); + CONVERT_OF(sail_int, mach_int)(&zgsz3165, zgaz348); + zgaz350 = gt(zgsz3165, zgsz3166); + KILL(sail_int)(&zgsz3166); + KILL(sail_int)(&zgsz3165); + } + } + zcbz313 = zgaz350; + goto cleanup_84; + /* unreachable after return */ + + goto end_cleanup_85; +cleanup_84:; + + goto end_function_83; +end_cleanup_85:; +end_function_83:; + return zcbz313; +end_block_exception_86:; + + return false; +} + +// struct tuple_(%bv, %bv, %bool) +struct ztuple_z8z5bvzCz0z5bvzCz0z5boolz9 { + lbits ztup0; + lbits ztup1; + bool ztup2; +}; + +static void COPY(ztuple_z8z5bvzCz0z5bvzCz0z5boolz9)(struct ztuple_z8z5bvzCz0z5bvzCz0z5boolz9* rop, + const struct ztuple_z8z5bvzCz0z5bvzCz0z5boolz9 op) { + COPY(lbits)(&rop->ztup0, op.ztup0); + COPY(lbits)(&rop->ztup1, op.ztup1); + rop->ztup2 = op.ztup2; +} + +static void CREATE(ztuple_z8z5bvzCz0z5bvzCz0z5boolz9)(struct ztuple_z8z5bvzCz0z5bvzCz0z5boolz9* op) { + CREATE(lbits)(&op->ztup0); + CREATE(lbits)(&op->ztup1); +} + +static void RECREATE(ztuple_z8z5bvzCz0z5bvzCz0z5boolz9)(struct ztuple_z8z5bvzCz0z5bvzCz0z5boolz9* op) { + RECREATE(lbits)(&op->ztup0); + RECREATE(lbits)(&op->ztup1); +} + +static void KILL(ztuple_z8z5bvzCz0z5bvzCz0z5boolz9)(struct ztuple_z8z5bvzCz0z5bvzCz0z5boolz9* op) { + KILL(lbits)(&op->ztup0); + KILL(lbits)(&op->ztup1); +} + +static bool EQUAL(ztuple_z8z5bvzCz0z5bvzCz0z5boolz9)(struct ztuple_z8z5bvzCz0z5bvzCz0z5boolz9 op1, + struct ztuple_z8z5bvzCz0z5bvzCz0z5boolz9 op2) { + return EQUAL(lbits)(op1.ztup0, op2.ztup0) && EQUAL(lbits)(op1.ztup1, op2.ztup1) && + EQUAL(bool)(op1.ztup2, op2.ztup2); +} + +static void sailgen_CapGetBounds(struct ztuple_z8z5bvzCz0z5bvzCz0z5boolz9* rop, lbits); + +static void sailgen_CapGetBounds(struct ztuple_z8z5bvzCz0z5bvzCz0z5boolz9* zcbz314, lbits zc) { + __label__ case_89, finish_match_88, end_function_100, end_block_exception_107, end_function_128; + + int64_t zgaz351; + zgaz351 = sailgen_CapGetExponent(zc); + struct ztuple_z8z5bvzCz0z5bvzCz0z5boolz9 zgsz3167; + CREATE(ztuple_z8z5bvzCz0z5bvzCz0z5boolz9)(&zgsz3167); + { + __label__ case_91, finish_match_90; + + int64_t zexp; + zexp = zgaz351; + { + bool zgaz352; + { + sail_int zgsz3169; + CREATE(sail_int)(&zgsz3169); + CONVERT_OF(sail_int, mach_int)(&zgsz3169, zCAP_MAX_ENCODEABLE_EXPONENT); + sail_int zgsz3168; + CREATE(sail_int)(&zgsz3168); + CONVERT_OF(sail_int, mach_int)(&zgsz3168, zexp); + zgaz352 = eq_int(zgsz3168, zgsz3169); + KILL(sail_int)(&zgsz3169); + KILL(sail_int)(&zgsz3168); + } + unit zgsz3176; + if (zgaz352) { + __label__ cleanup_105, end_cleanup_106; + + struct ztuple_z8z5bvzCz0z5bvzCz0z5boolz9 zgsz3177; + CREATE(ztuple_z8z5bvzCz0z5bvzCz0z5boolz9)(&zgsz3177); + COPY(lbits)(&((&zgsz3177)->ztup0), zCAP_BOUND_MIN); + COPY(lbits)(&((&zgsz3177)->ztup1), zCAP_BOUND_MAX); + zgsz3177.ztup2 = true; + COPY(ztuple_z8z5bvzCz0z5bvzCz0z5boolz9)((*(&zcbz314)), zgsz3177); + goto cleanup_105; + /* unreachable after return */ + goto end_cleanup_106; + cleanup_105:; + + KILL(ztuple_z8z5bvzCz0z5bvzCz0z5boolz9)(&zgsz3167); + + KILL(ztuple_z8z5bvzCz0z5bvzCz0z5boolz9)(&zgsz3177); + goto end_function_100; + end_cleanup_106:; + } else { + zgsz3176 = UNIT; + } + } + { + bool zgaz354; + { + bool zgaz353; + { + sail_int zgsz3171; + CREATE(sail_int)(&zgsz3171); + CONVERT_OF(sail_int, mach_int)(&zgsz3171, zCAP_MAX_ENCODEABLE_EXPONENT); + sail_int zgsz3170; + CREATE(sail_int)(&zgsz3170); + CONVERT_OF(sail_int, mach_int)(&zgsz3170, zexp); + zgaz353 = eq_int(zgsz3170, zgsz3171); + KILL(sail_int)(&zgsz3171); + KILL(sail_int)(&zgsz3170); + } + zgaz354 = not(zgaz353); + } + unit zgsz3175; + zgsz3175 = sail_assert(zgaz354, "v8_base.sail 1714:4 - 1716:5"); + } + { + bool zgaz355; + zgaz355 = sailgen_CapIsExponentOutOfRange(zc); + unit zgsz3173; + if (zgaz355) { + __label__ cleanup_103, end_cleanup_104; + + struct ztuple_z8z5bvzCz0z5bvzCz0z5boolz9 zgsz3174; + CREATE(ztuple_z8z5bvzCz0z5bvzCz0z5boolz9)(&zgsz3174); + COPY(lbits)(&((&zgsz3174)->ztup0), zCAP_BOUND_MIN); + COPY(lbits)(&((&zgsz3174)->ztup1), zCAP_BOUND_MAX); + zgsz3174.ztup2 = false; + COPY(ztuple_z8z5bvzCz0z5bvzCz0z5boolz9)((*(&zcbz314)), zgsz3174); + goto cleanup_103; + /* unreachable after return */ + goto end_cleanup_104; + cleanup_103:; + + KILL(ztuple_z8z5bvzCz0z5bvzCz0z5boolz9)(&zgsz3167); + + KILL(ztuple_z8z5bvzCz0z5bvzCz0z5boolz9)(&zgsz3174); + goto end_function_100; + end_cleanup_104:; + } else { + zgsz3173 = UNIT; + } + } + { + bool zgaz357; + { + bool zgaz356; + zgaz356 = sailgen_CapIsExponentOutOfRange(zc); + zgaz357 = not(zgaz356); + } + unit zgsz3172; + zgsz3172 = sail_assert(zgaz357, "v8_base.sail 1717:4 - 1719:5"); + } + lbits zbase; + CREATE(lbits)(&zbase); + { + sail_int zgsz3178; + CREATE(sail_int)(&zgsz3178); + CONVERT_OF(sail_int, mach_int)(&zgsz3178, INT64_C(66)); + UNDEFINED(lbits)(&zbase, zgsz3178); + KILL(sail_int)(&zgsz3178); + } + lbits zlimit; + CREATE(lbits)(&zlimit); + { + sail_int zgsz3179; + CREATE(sail_int)(&zgsz3179); + CONVERT_OF(sail_int, mach_int)(&zgsz3179, INT64_C(66)); + UNDEFINED(lbits)(&zlimit, zgsz3179); + KILL(sail_int)(&zgsz3179); + } + uint64_t zbottom; + zbottom = sailgen_CapGetBottom(zc); + uint64_t ztop; + ztop = sailgen_CapGetTop(zc); + { + sbits zgaz358; + { + sail_int zgsz3180; + CREATE(sail_int)(&zgsz3180); + CONVERT_OF(sail_int, mach_int)(&zgsz3180, zexp); + lbits zgsz3181; + CREATE(lbits)(&zgsz3181); + sailgen_zzz3zzz3Zeros(&zgsz3181, zgsz3180); + zgaz358 = CONVERT_OF(sbits, lbits)(zgsz3181, true); + KILL(lbits)(&zgsz3181); + KILL(sail_int)(&zgsz3180); + } + { + lbits zgsz3185; + CREATE(lbits)(&zgsz3185); + CONVERT_OF(lbits, sbits)(&zgsz3185, zgaz358, true); + sail_int zgsz3184; + CREATE(sail_int)(&zgsz3184); + CONVERT_OF(sail_int, mach_int)(&zgsz3184, INT64_C(0)); + sail_int zgsz3183; + CREATE(sail_int)(&zgsz3183); + CONVERT_OF(sail_int, mach_int)(&zgsz3183, zexp); + sail_int zgsz3182; + CREATE(sail_int)(&zgsz3182); + CONVERT_OF(sail_int, mach_int)(&zgsz3182, INT64_C(66)); + set_slice(&zbase, zgsz3182, zgsz3183, zbase, zgsz3184, zgsz3185); + KILL(lbits)(&zgsz3185); + KILL(sail_int)(&zgsz3184); + KILL(sail_int)(&zgsz3183); + KILL(sail_int)(&zgsz3182); + } + unit zgsz3229; + zgsz3229 = UNIT; + } + { + sbits zgaz359; + { + sail_int zgsz3186; + CREATE(sail_int)(&zgsz3186); + CONVERT_OF(sail_int, mach_int)(&zgsz3186, zexp); + lbits zgsz3187; + CREATE(lbits)(&zgsz3187); + sailgen_zzz3zzz3Zeros(&zgsz3187, zgsz3186); + zgaz359 = CONVERT_OF(sbits, lbits)(zgsz3187, true); + KILL(lbits)(&zgsz3187); + KILL(sail_int)(&zgsz3186); + } + { + lbits zgsz3191; + CREATE(lbits)(&zgsz3191); + CONVERT_OF(lbits, sbits)(&zgsz3191, zgaz359, true); + sail_int zgsz3190; + CREATE(sail_int)(&zgsz3190); + CONVERT_OF(sail_int, mach_int)(&zgsz3190, INT64_C(0)); + sail_int zgsz3189; + CREATE(sail_int)(&zgsz3189); + CONVERT_OF(sail_int, mach_int)(&zgsz3189, zexp); + sail_int zgsz3188; + CREATE(sail_int)(&zgsz3188); + CONVERT_OF(sail_int, mach_int)(&zgsz3188, INT64_C(66)); + set_slice(&zlimit, zgsz3188, zgsz3189, zlimit, zgsz3190, zgsz3191); + KILL(lbits)(&zgsz3191); + KILL(sail_int)(&zgsz3190); + KILL(sail_int)(&zgsz3189); + KILL(sail_int)(&zgsz3188); + } + unit zgsz3228; + zgsz3228 = UNIT; + } + { + bool zgaz365; + { + bool zgaz364; + { + int64_t zgaz360; + { + sail_int zgsz3192; + CREATE(sail_int)(&zgsz3192); + CONVERT_OF(sail_int, mach_int)(&zgsz3192, zexp); + sail_int zgsz3193; + CREATE(sail_int)(&zgsz3193); + sailgen_zzz3zzz3__id(&zgsz3193, zgsz3192); + zgaz360 = CONVERT_OF(mach_int, sail_int)(zgsz3193); + KILL(sail_int)(&zgsz3193); + KILL(sail_int)(&zgsz3192); + } + { + sail_int zgsz3195; + CREATE(sail_int)(&zgsz3195); + CONVERT_OF(sail_int, mach_int)(&zgsz3195, zgaz360); + sail_int zgsz3194; + CREATE(sail_int)(&zgsz3194); + CONVERT_OF(sail_int, mach_int)(&zgsz3194, INT64_C(0)); + zgaz364 = lteq(zgsz3194, zgsz3195); + KILL(sail_int)(&zgsz3195); + KILL(sail_int)(&zgsz3194); + } + } + bool zgsz3204; + if (zgaz364) { + int64_t zgaz363; + { + int64_t zgaz362; + { + int64_t zgaz361; + { + sail_int zgsz3196; + CREATE(sail_int)(&zgsz3196); + CONVERT_OF(sail_int, mach_int)(&zgsz3196, zexp); + sail_int zgsz3197; + CREATE(sail_int)(&zgsz3197); + sailgen_zzz3zzz3__id(&zgsz3197, zgsz3196); + zgaz361 = CONVERT_OF(mach_int, sail_int)(zgsz3197); + KILL(sail_int)(&zgsz3197); + KILL(sail_int)(&zgsz3196); + } + { + sail_int zgsz3198; + CREATE(sail_int)(&zgsz3198); + CONVERT_OF(sail_int, mach_int)(&zgsz3198, zgaz361); + sail_int zgsz3199; + CREATE(sail_int)(&zgsz3199); + CONVERT_OF(sail_int, mach_int)(&zgsz3199, INT64_C(16)); + sail_int zgsz3200; + CREATE(sail_int)(&zgsz3200); + add_int(&zgsz3200, zgsz3198, zgsz3199); + zgaz362 = CONVERT_OF(mach_int, sail_int)(zgsz3200); + KILL(sail_int)(&zgsz3200); + KILL(sail_int)(&zgsz3199); + KILL(sail_int)(&zgsz3198); + } + } + { + sail_int zgsz3201; + CREATE(sail_int)(&zgsz3201); + CONVERT_OF(sail_int, mach_int)(&zgsz3201, zgaz362); + sail_int zgsz3202; + CREATE(sail_int)(&zgsz3202); + CONVERT_OF(sail_int, mach_int)(&zgsz3202, INT64_C(1)); + sail_int zgsz3203; + CREATE(sail_int)(&zgsz3203); + sub_int(&zgsz3203, zgsz3201, zgsz3202); + zgaz363 = CONVERT_OF(mach_int, sail_int)(zgsz3203); + KILL(sail_int)(&zgsz3203); + KILL(sail_int)(&zgsz3202); + KILL(sail_int)(&zgsz3201); + } + } + { + sail_int zgsz3206; + CREATE(sail_int)(&zgsz3206); + CONVERT_OF(sail_int, mach_int)(&zgsz3206, INT64_C(66)); + sail_int zgsz3205; + CREATE(sail_int)(&zgsz3205); + CONVERT_OF(sail_int, mach_int)(&zgsz3205, zgaz363); + zgsz3204 = lt(zgsz3205, zgsz3206); + KILL(sail_int)(&zgsz3206); + KILL(sail_int)(&zgsz3205); + } + + } else { + zgsz3204 = false; + } + zgaz365 = zgsz3204; + } + unit zgsz3227; + zgsz3227 = sail_assert(zgaz365, "v8_base.sail 1726:57 - 1726:58"); + } + { + int64_t zgaz367; + { + int64_t zgaz366; + { + sail_int zgsz3207; + CREATE(sail_int)(&zgsz3207); + CONVERT_OF(sail_int, mach_int)(&zgsz3207, zexp); + sail_int zgsz3208; + CREATE(sail_int)(&zgsz3208); + CONVERT_OF(sail_int, mach_int)(&zgsz3208, zCAP_MW); + sail_int zgsz3209; + CREATE(sail_int)(&zgsz3209); + add_int(&zgsz3209, zgsz3207, zgsz3208); + zgaz366 = CONVERT_OF(mach_int, sail_int)(zgsz3209); + KILL(sail_int)(&zgsz3209); + KILL(sail_int)(&zgsz3208); + KILL(sail_int)(&zgsz3207); + } + { + sail_int zgsz3210; + CREATE(sail_int)(&zgsz3210); + CONVERT_OF(sail_int, mach_int)(&zgsz3210, zgaz366); + sail_int zgsz3211; + CREATE(sail_int)(&zgsz3211); + CONVERT_OF(sail_int, mach_int)(&zgsz3211, INT64_C(1)); + sail_int zgsz3212; + CREATE(sail_int)(&zgsz3212); + sub_int(&zgsz3212, zgsz3210, zgsz3211); + zgaz367 = CONVERT_OF(mach_int, sail_int)(zgsz3212); + KILL(sail_int)(&zgsz3212); + KILL(sail_int)(&zgsz3211); + KILL(sail_int)(&zgsz3210); + } + } + { + lbits zgsz3215; + CREATE(lbits)(&zgsz3215); + CONVERT_OF(lbits, fbits)(&zgsz3215, zbottom, UINT64_C(16), true); + sail_int zgsz3214; + CREATE(sail_int)(&zgsz3214); + CONVERT_OF(sail_int, mach_int)(&zgsz3214, zexp); + sail_int zgsz3213; + CREATE(sail_int)(&zgsz3213); + CONVERT_OF(sail_int, mach_int)(&zgsz3213, zgaz367); + vector_update_subrange_lbits(&zbase, zbase, zgsz3213, zgsz3214, zgsz3215); + KILL(lbits)(&zgsz3215); + KILL(sail_int)(&zgsz3214); + KILL(sail_int)(&zgsz3213); + } + unit zgsz3226; + zgsz3226 = UNIT; + } + { + int64_t zgaz369; + { + int64_t zgaz368; + { + sail_int zgsz3216; + CREATE(sail_int)(&zgsz3216); + CONVERT_OF(sail_int, mach_int)(&zgsz3216, zexp); + sail_int zgsz3217; + CREATE(sail_int)(&zgsz3217); + CONVERT_OF(sail_int, mach_int)(&zgsz3217, zCAP_MW); + sail_int zgsz3218; + CREATE(sail_int)(&zgsz3218); + add_int(&zgsz3218, zgsz3216, zgsz3217); + zgaz368 = CONVERT_OF(mach_int, sail_int)(zgsz3218); + KILL(sail_int)(&zgsz3218); + KILL(sail_int)(&zgsz3217); + KILL(sail_int)(&zgsz3216); + } + { + sail_int zgsz3219; + CREATE(sail_int)(&zgsz3219); + CONVERT_OF(sail_int, mach_int)(&zgsz3219, zgaz368); + sail_int zgsz3220; + CREATE(sail_int)(&zgsz3220); + CONVERT_OF(sail_int, mach_int)(&zgsz3220, INT64_C(1)); + sail_int zgsz3221; + CREATE(sail_int)(&zgsz3221); + sub_int(&zgsz3221, zgsz3219, zgsz3220); + zgaz369 = CONVERT_OF(mach_int, sail_int)(zgsz3221); + KILL(sail_int)(&zgsz3221); + KILL(sail_int)(&zgsz3220); + KILL(sail_int)(&zgsz3219); + } + } + { + lbits zgsz3224; + CREATE(lbits)(&zgsz3224); + CONVERT_OF(lbits, fbits)(&zgsz3224, ztop, UINT64_C(16), true); + sail_int zgsz3223; + CREATE(sail_int)(&zgsz3223); + CONVERT_OF(sail_int, mach_int)(&zgsz3223, zexp); + sail_int zgsz3222; + CREATE(sail_int)(&zgsz3222); + CONVERT_OF(sail_int, mach_int)(&zgsz3222, zgaz369); + vector_update_subrange_lbits(&zlimit, zlimit, zgsz3222, zgsz3223, zgsz3224); + KILL(lbits)(&zgsz3224); + KILL(sail_int)(&zgsz3223); + KILL(sail_int)(&zgsz3222); + } + unit zgsz3225; + zgsz3225 = UNIT; + } + lbits za; + CREATE(lbits)(&za); + { + uint64_t zgaz3106; + { + uint64_t zgaz3105; + zgaz3105 = sailgen_CapGetValue(zc); + zgaz3106 = sailgen_CapBoundsAddress(zgaz3105); + } + { + lbits zgsz3231; + CREATE(lbits)(&zgsz3231); + CONVERT_OF(lbits, fbits)(&zgsz3231, zgaz3106, UINT64_C(64), true); + lbits zgsz3230; + CREATE(lbits)(&zgsz3230); + CONVERT_OF(lbits, fbits)(&zgsz3230, UINT64_C(0b00), UINT64_C(2), true); + append(&za, zgsz3230, zgsz3231); + KILL(lbits)(&zgsz3231); + KILL(lbits)(&zgsz3230); + } + } + uint64_t zA3; + { + int64_t zgaz3103; + { + int64_t zgaz3101; + { + sail_int zgsz3232; + CREATE(sail_int)(&zgsz3232); + CONVERT_OF(sail_int, mach_int)(&zgsz3232, zexp); + sail_int zgsz3233; + CREATE(sail_int)(&zgsz3233); + CONVERT_OF(sail_int, mach_int)(&zgsz3233, zCAP_MW); + sail_int zgsz3234; + CREATE(sail_int)(&zgsz3234); + add_int(&zgsz3234, zgsz3232, zgsz3233); + zgaz3101 = CONVERT_OF(mach_int, sail_int)(zgsz3234); + KILL(sail_int)(&zgsz3234); + KILL(sail_int)(&zgsz3233); + KILL(sail_int)(&zgsz3232); + } + { + sail_int zgsz3235; + CREATE(sail_int)(&zgsz3235); + CONVERT_OF(sail_int, mach_int)(&zgsz3235, zgaz3101); + sail_int zgsz3236; + CREATE(sail_int)(&zgsz3236); + CONVERT_OF(sail_int, mach_int)(&zgsz3236, INT64_C(1)); + sail_int zgsz3237; + CREATE(sail_int)(&zgsz3237); + sub_int(&zgsz3237, zgsz3235, zgsz3236); + zgaz3103 = CONVERT_OF(mach_int, sail_int)(zgsz3237); + KILL(sail_int)(&zgsz3237); + KILL(sail_int)(&zgsz3236); + KILL(sail_int)(&zgsz3235); + } + } + int64_t zgaz3104; + { + int64_t zgaz3102; + { + sail_int zgsz3238; + CREATE(sail_int)(&zgsz3238); + CONVERT_OF(sail_int, mach_int)(&zgsz3238, zexp); + sail_int zgsz3239; + CREATE(sail_int)(&zgsz3239); + CONVERT_OF(sail_int, mach_int)(&zgsz3239, zCAP_MW); + sail_int zgsz3240; + CREATE(sail_int)(&zgsz3240); + add_int(&zgsz3240, zgsz3238, zgsz3239); + zgaz3102 = CONVERT_OF(mach_int, sail_int)(zgsz3240); + KILL(sail_int)(&zgsz3240); + KILL(sail_int)(&zgsz3239); + KILL(sail_int)(&zgsz3238); + } + { + sail_int zgsz3241; + CREATE(sail_int)(&zgsz3241); + CONVERT_OF(sail_int, mach_int)(&zgsz3241, zgaz3102); + sail_int zgsz3242; + CREATE(sail_int)(&zgsz3242); + CONVERT_OF(sail_int, mach_int)(&zgsz3242, INT64_C(3)); + sail_int zgsz3243; + CREATE(sail_int)(&zgsz3243); + sub_int(&zgsz3243, zgsz3241, zgsz3242); + zgaz3104 = CONVERT_OF(mach_int, sail_int)(zgsz3243); + KILL(sail_int)(&zgsz3243); + KILL(sail_int)(&zgsz3242); + KILL(sail_int)(&zgsz3241); + } + } + { + sail_int zgsz3244; + CREATE(sail_int)(&zgsz3244); + CONVERT_OF(sail_int, mach_int)(&zgsz3244, zgaz3103); + sail_int zgsz3245; + CREATE(sail_int)(&zgsz3245); + CONVERT_OF(sail_int, mach_int)(&zgsz3245, zgaz3104); + lbits zgsz3246; + CREATE(lbits)(&zgsz3246); + vector_subrange_lbits(&zgsz3246, za, zgsz3244, zgsz3245); + zA3 = CONVERT_OF(fbits, lbits)(zgsz3246, true); + KILL(lbits)(&zgsz3246); + KILL(sail_int)(&zgsz3245); + KILL(sail_int)(&zgsz3244); + } + } + uint64_t zB3; + { + int64_t zgaz399; + { + sail_int zgsz3247; + CREATE(sail_int)(&zgsz3247); + CONVERT_OF(sail_int, mach_int)(&zgsz3247, zCAP_MW); + sail_int zgsz3248; + CREATE(sail_int)(&zgsz3248); + CONVERT_OF(sail_int, mach_int)(&zgsz3248, INT64_C(1)); + sail_int zgsz3249; + CREATE(sail_int)(&zgsz3249); + sub_int(&zgsz3249, zgsz3247, zgsz3248); + zgaz399 = CONVERT_OF(mach_int, sail_int)(zgsz3249); + KILL(sail_int)(&zgsz3249); + KILL(sail_int)(&zgsz3248); + KILL(sail_int)(&zgsz3247); + } + int64_t zgaz3100; + { + sail_int zgsz3250; + CREATE(sail_int)(&zgsz3250); + CONVERT_OF(sail_int, mach_int)(&zgsz3250, zCAP_MW); + sail_int zgsz3251; + CREATE(sail_int)(&zgsz3251); + CONVERT_OF(sail_int, mach_int)(&zgsz3251, INT64_C(3)); + sail_int zgsz3252; + CREATE(sail_int)(&zgsz3252); + sub_int(&zgsz3252, zgsz3250, zgsz3251); + zgaz3100 = CONVERT_OF(mach_int, sail_int)(zgsz3252); + KILL(sail_int)(&zgsz3252); + KILL(sail_int)(&zgsz3251); + KILL(sail_int)(&zgsz3250); + } + { + lbits zgsz3253; + CREATE(lbits)(&zgsz3253); + CONVERT_OF(lbits, fbits)(&zgsz3253, zbottom, UINT64_C(16), true); + sail_int zgsz3254; + CREATE(sail_int)(&zgsz3254); + CONVERT_OF(sail_int, mach_int)(&zgsz3254, zgaz399); + sail_int zgsz3255; + CREATE(sail_int)(&zgsz3255); + CONVERT_OF(sail_int, mach_int)(&zgsz3255, zgaz3100); + lbits zgsz3256; + CREATE(lbits)(&zgsz3256); + vector_subrange_lbits(&zgsz3256, zgsz3253, zgsz3254, zgsz3255); + zB3 = CONVERT_OF(fbits, lbits)(zgsz3256, true); + KILL(lbits)(&zgsz3256); + KILL(sail_int)(&zgsz3255); + KILL(sail_int)(&zgsz3254); + KILL(lbits)(&zgsz3253); + } + } + uint64_t zT3; + { + int64_t zgaz397; + { + sail_int zgsz3257; + CREATE(sail_int)(&zgsz3257); + CONVERT_OF(sail_int, mach_int)(&zgsz3257, zCAP_MW); + sail_int zgsz3258; + CREATE(sail_int)(&zgsz3258); + CONVERT_OF(sail_int, mach_int)(&zgsz3258, INT64_C(1)); + sail_int zgsz3259; + CREATE(sail_int)(&zgsz3259); + sub_int(&zgsz3259, zgsz3257, zgsz3258); + zgaz397 = CONVERT_OF(mach_int, sail_int)(zgsz3259); + KILL(sail_int)(&zgsz3259); + KILL(sail_int)(&zgsz3258); + KILL(sail_int)(&zgsz3257); + } + int64_t zgaz398; + { + sail_int zgsz3260; + CREATE(sail_int)(&zgsz3260); + CONVERT_OF(sail_int, mach_int)(&zgsz3260, zCAP_MW); + sail_int zgsz3261; + CREATE(sail_int)(&zgsz3261); + CONVERT_OF(sail_int, mach_int)(&zgsz3261, INT64_C(3)); + sail_int zgsz3262; + CREATE(sail_int)(&zgsz3262); + sub_int(&zgsz3262, zgsz3260, zgsz3261); + zgaz398 = CONVERT_OF(mach_int, sail_int)(zgsz3262); + KILL(sail_int)(&zgsz3262); + KILL(sail_int)(&zgsz3261); + KILL(sail_int)(&zgsz3260); + } + { + lbits zgsz3263; + CREATE(lbits)(&zgsz3263); + CONVERT_OF(lbits, fbits)(&zgsz3263, ztop, UINT64_C(16), true); + sail_int zgsz3264; + CREATE(sail_int)(&zgsz3264); + CONVERT_OF(sail_int, mach_int)(&zgsz3264, zgaz397); + sail_int zgsz3265; + CREATE(sail_int)(&zgsz3265); + CONVERT_OF(sail_int, mach_int)(&zgsz3265, zgaz398); + lbits zgsz3266; + CREATE(lbits)(&zgsz3266); + vector_subrange_lbits(&zgsz3266, zgsz3263, zgsz3264, zgsz3265); + zT3 = CONVERT_OF(fbits, lbits)(zgsz3266, true); + KILL(lbits)(&zgsz3266); + KILL(sail_int)(&zgsz3265); + KILL(sail_int)(&zgsz3264); + KILL(lbits)(&zgsz3263); + } + } + uint64_t zR3; + { + lbits zgsz3267; + CREATE(lbits)(&zgsz3267); + CONVERT_OF(lbits, fbits)(&zgsz3267, zB3, UINT64_C(3), true); + lbits zgsz3268; + CREATE(lbits)(&zgsz3268); + CONVERT_OF(lbits, fbits)(&zgsz3268, UINT64_C(0b001), UINT64_C(3), true); + lbits zgsz3269; + CREATE(lbits)(&zgsz3269); + sub_bits(&zgsz3269, zgsz3267, zgsz3268); + zR3 = CONVERT_OF(fbits, lbits)(zgsz3269, true); + KILL(lbits)(&zgsz3269); + KILL(lbits)(&zgsz3268); + KILL(lbits)(&zgsz3267); + } + int64_t zaHi; + zaHi = INT64_C(0); + { + bool zgaz370; + zgaz370 = sailgen_zzzz7NzzJzzK3z3CapUnsignedLessThan(zA3, zR3); + unit zgsz3270; + if (zgaz370) { + zaHi = INT64_C(1); + zgsz3270 = UNIT; + } else { + zaHi = INT64_C(0); + zgsz3270 = UNIT; + } + } + struct ztuple_z8z5bvzCz0z5bvzCz0z5boolz9 zgsz3271; + CREATE(ztuple_z8z5bvzCz0z5bvzCz0z5boolz9)(&zgsz3271); + { + __label__ case_93, finish_match_92; + + int64_t zaHishadowz30; + zaHishadowz30 = zaHi; + int64_t zbHi; + zbHi = INT64_C(0); + { + bool zgaz371; + zgaz371 = sailgen_zzzz7NzzJzzK3z3CapUnsignedLessThan(zB3, zR3); + unit zgsz3272; + if (zgaz371) { + zbHi = INT64_C(1); + zgsz3272 = UNIT; + } else { + zbHi = INT64_C(0); + zgsz3272 = UNIT; + } + } + struct ztuple_z8z5bvzCz0z5bvzCz0z5boolz9 zgsz3273; + CREATE(ztuple_z8z5bvzCz0z5bvzCz0z5boolz9)(&zgsz3273); + { + __label__ case_95, finish_match_94; + + int64_t zbHishadowz31; + zbHishadowz31 = zbHi; + int64_t ztHi; + ztHi = INT64_C(0); + { + bool zgaz372; + zgaz372 = sailgen_zzzz7NzzJzzK3z3CapUnsignedLessThan(zT3, zR3); + unit zgsz3274; + if (zgaz372) { + ztHi = INT64_C(1); + zgsz3274 = UNIT; + } else { + ztHi = INT64_C(0); + zgsz3274 = UNIT; + } + } + struct ztuple_z8z5bvzCz0z5bvzCz0z5boolz9 zgsz3275; + CREATE(ztuple_z8z5bvzCz0z5bvzCz0z5boolz9)(&zgsz3275); + { + __label__ case_97, finish_match_96; + + int64_t ztHishadowz32; + ztHishadowz32 = ztHi; + int64_t zgaz373; + { + sail_int zgsz3276; + CREATE(sail_int)(&zgsz3276); + CONVERT_OF(sail_int, mach_int)(&zgsz3276, zbHishadowz31); + sail_int zgsz3277; + CREATE(sail_int)(&zgsz3277); + CONVERT_OF(sail_int, mach_int)(&zgsz3277, zaHishadowz30); + sail_int zgsz3278; + CREATE(sail_int)(&zgsz3278); + sub_int(&zgsz3278, zgsz3276, zgsz3277); + zgaz373 = CONVERT_OF(mach_int, sail_int)(zgsz3278); + KILL(sail_int)(&zgsz3278); + KILL(sail_int)(&zgsz3277); + KILL(sail_int)(&zgsz3276); + } + struct ztuple_z8z5bvzCz0z5bvzCz0z5boolz9 zgsz3279; + CREATE(ztuple_z8z5bvzCz0z5bvzCz0z5boolz9)(&zgsz3279); + { + __label__ case_99, finish_match_98; + + int64_t zcorrection_base; + zcorrection_base = zgaz373; + int64_t zgaz374; + { + sail_int zgsz3280; + CREATE(sail_int)(&zgsz3280); + CONVERT_OF(sail_int, mach_int)(&zgsz3280, ztHishadowz32); + sail_int zgsz3281; + CREATE(sail_int)(&zgsz3281); + CONVERT_OF(sail_int, mach_int)(&zgsz3281, zaHishadowz30); + sail_int zgsz3282; + CREATE(sail_int)(&zgsz3282); + sub_int(&zgsz3282, zgsz3280, zgsz3281); + zgaz374 = CONVERT_OF(mach_int, sail_int)(zgsz3282); + KILL(sail_int)(&zgsz3282); + KILL(sail_int)(&zgsz3281); + KILL(sail_int)(&zgsz3280); + } + struct ztuple_z8z5bvzCz0z5bvzCz0z5boolz9 zgsz3283; + CREATE(ztuple_z8z5bvzCz0z5bvzCz0z5boolz9)(&zgsz3283); + { + __label__ cleanup_101, end_cleanup_102; + + int64_t zcorrection_limit; + zcorrection_limit = zgaz374; + { + bool zgaz377; + { + int64_t zgaz375; + { + sail_int zgsz3284; + CREATE(sail_int)(&zgsz3284); + CONVERT_OF(sail_int, mach_int)(&zgsz3284, zexp); + sail_int zgsz3285; + CREATE(sail_int)(&zgsz3285); + CONVERT_OF(sail_int, mach_int)(&zgsz3285, zCAP_MW); + sail_int zgsz3286; + CREATE(sail_int)(&zgsz3286); + add_int(&zgsz3286, zgsz3284, zgsz3285); + zgaz375 = CONVERT_OF(mach_int, sail_int)(zgsz3286); + KILL(sail_int)(&zgsz3286); + KILL(sail_int)(&zgsz3285); + KILL(sail_int)(&zgsz3284); + } + int64_t zgaz376; + { + sail_int zgsz3287; + CREATE(sail_int)(&zgsz3287); + CONVERT_OF(sail_int, mach_int)(&zgsz3287, zCAP_MAX_EXPONENT); + sail_int zgsz3288; + CREATE(sail_int)(&zgsz3288); + CONVERT_OF(sail_int, mach_int)(&zgsz3288, zCAP_MW); + sail_int zgsz3289; + CREATE(sail_int)(&zgsz3289); + add_int(&zgsz3289, zgsz3287, zgsz3288); + zgaz376 = CONVERT_OF(mach_int, sail_int)(zgsz3289); + KILL(sail_int)(&zgsz3289); + KILL(sail_int)(&zgsz3288); + KILL(sail_int)(&zgsz3287); + } + { + sail_int zgsz3291; + CREATE(sail_int)(&zgsz3291); + CONVERT_OF(sail_int, mach_int)(&zgsz3291, zgaz376); + sail_int zgsz3290; + CREATE(sail_int)(&zgsz3290); + CONVERT_OF(sail_int, mach_int)(&zgsz3290, zgaz375); + zgaz377 = lt(zgsz3290, zgsz3291); + KILL(sail_int)(&zgsz3291); + KILL(sail_int)(&zgsz3290); + } + } + unit zgsz3292; + if (zgaz377) { + sbits zatop; + { + int64_t zgaz382; + { + sail_int zgsz3293; + CREATE(sail_int)(&zgsz3293); + CONVERT_OF(sail_int, mach_int)(&zgsz3293, zexp); + sail_int zgsz3294; + CREATE(sail_int)(&zgsz3294); + CONVERT_OF(sail_int, mach_int)(&zgsz3294, zCAP_MW); + sail_int zgsz3295; + CREATE(sail_int)(&zgsz3295); + add_int(&zgsz3295, zgsz3293, zgsz3294); + zgaz382 = CONVERT_OF(mach_int, sail_int)(zgsz3295); + KILL(sail_int)(&zgsz3295); + KILL(sail_int)(&zgsz3294); + KILL(sail_int)(&zgsz3293); + } + { + sail_int zgsz3296; + CREATE(sail_int)(&zgsz3296); + CONVERT_OF(sail_int, mach_int)(&zgsz3296, INT64_C(65)); + sail_int zgsz3297; + CREATE(sail_int)(&zgsz3297); + CONVERT_OF(sail_int, mach_int)(&zgsz3297, zgaz382); + lbits zgsz3298; + CREATE(lbits)(&zgsz3298); + vector_subrange_lbits(&zgsz3298, za, zgsz3296, zgsz3297); + zatop = CONVERT_OF(sbits, lbits)(zgsz3298, true); + KILL(lbits)(&zgsz3298); + KILL(sail_int)(&zgsz3297); + KILL(sail_int)(&zgsz3296); + } + } + { + int64_t zgaz378; + { + sail_int zgsz3299; + CREATE(sail_int)(&zgsz3299); + CONVERT_OF(sail_int, mach_int)(&zgsz3299, zexp); + sail_int zgsz3300; + CREATE(sail_int)(&zgsz3300); + CONVERT_OF(sail_int, mach_int)(&zgsz3300, zCAP_MW); + sail_int zgsz3301; + CREATE(sail_int)(&zgsz3301); + add_int(&zgsz3301, zgsz3299, zgsz3300); + zgaz378 = CONVERT_OF(mach_int, sail_int)(zgsz3301); + KILL(sail_int)(&zgsz3301); + KILL(sail_int)(&zgsz3300); + KILL(sail_int)(&zgsz3299); + } + sbits zgaz379; + { + lbits zgsz3302; + CREATE(lbits)(&zgsz3302); + CONVERT_OF(lbits, sbits)(&zgsz3302, zatop, true); + sail_int zgsz3303; + CREATE(sail_int)(&zgsz3303); + CONVERT_OF(sail_int, mach_int)(&zgsz3303, zcorrection_base); + lbits zgsz3304; + CREATE(lbits)(&zgsz3304); + add_bits_int(&zgsz3304, zgsz3302, zgsz3303); + zgaz379 = CONVERT_OF(sbits, lbits)(zgsz3304, true); + KILL(lbits)(&zgsz3304); + KILL(sail_int)(&zgsz3303); + KILL(lbits)(&zgsz3302); + } + { + lbits zgsz3307; + CREATE(lbits)(&zgsz3307); + CONVERT_OF(lbits, sbits)(&zgsz3307, zgaz379, true); + sail_int zgsz3306; + CREATE(sail_int)(&zgsz3306); + CONVERT_OF(sail_int, mach_int)(&zgsz3306, zgaz378); + sail_int zgsz3305; + CREATE(sail_int)(&zgsz3305); + CONVERT_OF(sail_int, mach_int)(&zgsz3305, INT64_C(65)); + vector_update_subrange_lbits(&zbase, zbase, zgsz3305, zgsz3306, zgsz3307); + KILL(lbits)(&zgsz3307); + KILL(sail_int)(&zgsz3306); + KILL(sail_int)(&zgsz3305); + } + unit zgsz3308; + zgsz3308 = UNIT; + } + int64_t zgaz380; + { + sail_int zgsz3309; + CREATE(sail_int)(&zgsz3309); + CONVERT_OF(sail_int, mach_int)(&zgsz3309, zexp); + sail_int zgsz3310; + CREATE(sail_int)(&zgsz3310); + CONVERT_OF(sail_int, mach_int)(&zgsz3310, zCAP_MW); + sail_int zgsz3311; + CREATE(sail_int)(&zgsz3311); + add_int(&zgsz3311, zgsz3309, zgsz3310); + zgaz380 = CONVERT_OF(mach_int, sail_int)(zgsz3311); + KILL(sail_int)(&zgsz3311); + KILL(sail_int)(&zgsz3310); + KILL(sail_int)(&zgsz3309); + } + sbits zgaz381; + { + lbits zgsz3312; + CREATE(lbits)(&zgsz3312); + CONVERT_OF(lbits, sbits)(&zgsz3312, zatop, true); + sail_int zgsz3313; + CREATE(sail_int)(&zgsz3313); + CONVERT_OF(sail_int, mach_int)(&zgsz3313, zcorrection_limit); + lbits zgsz3314; + CREATE(lbits)(&zgsz3314); + add_bits_int(&zgsz3314, zgsz3312, zgsz3313); + zgaz381 = CONVERT_OF(sbits, lbits)(zgsz3314, true); + KILL(lbits)(&zgsz3314); + KILL(sail_int)(&zgsz3313); + KILL(lbits)(&zgsz3312); + } + { + lbits zgsz3317; + CREATE(lbits)(&zgsz3317); + CONVERT_OF(lbits, sbits)(&zgsz3317, zgaz381, true); + sail_int zgsz3316; + CREATE(sail_int)(&zgsz3316); + CONVERT_OF(sail_int, mach_int)(&zgsz3316, zgaz380); + sail_int zgsz3315; + CREATE(sail_int)(&zgsz3315); + CONVERT_OF(sail_int, mach_int)(&zgsz3315, INT64_C(65)); + vector_update_subrange_lbits(&zlimit, zlimit, zgsz3315, zgsz3316, zgsz3317); + KILL(lbits)(&zgsz3317); + KILL(sail_int)(&zgsz3316); + KILL(sail_int)(&zgsz3315); + } + zgsz3292 = UNIT; + + } else { + zgsz3292 = UNIT; + } + } + uint64_t zl2; + { + sail_int zgsz3318; + CREATE(sail_int)(&zgsz3318); + CONVERT_OF(sail_int, mach_int)(&zgsz3318, INT64_C(64)); + sail_int zgsz3319; + CREATE(sail_int)(&zgsz3319); + CONVERT_OF(sail_int, mach_int)(&zgsz3319, INT64_C(63)); + lbits zgsz3320; + CREATE(lbits)(&zgsz3320); + vector_subrange_lbits(&zgsz3320, zlimit, zgsz3318, zgsz3319); + zl2 = CONVERT_OF(fbits, lbits)(zgsz3320, true); + KILL(lbits)(&zgsz3320); + KILL(sail_int)(&zgsz3319); + KILL(sail_int)(&zgsz3318); + } + uint64_t zb2; + { + uint64_t zgaz396; + { + fbits zgaz395; + { + sail_int zgsz3321; + CREATE(sail_int)(&zgsz3321); + CONVERT_OF(sail_int, mach_int)(&zgsz3321, INT64_C(63)); + zgaz395 = bitvector_access(zbase, zgsz3321); + KILL(sail_int)(&zgsz3321); + } + uint64_t zgsz3322; + zgsz3322 = UINT64_C(0b0); + zgsz3322 = update_fbits(zgsz3322, INT64_C(0), zgaz395); + zgaz396 = zgsz3322; + } + { + lbits zgsz3323; + CREATE(lbits)(&zgsz3323); + CONVERT_OF(lbits, fbits)(&zgsz3323, UINT64_C(0b0), UINT64_C(1), true); + lbits zgsz3324; + CREATE(lbits)(&zgsz3324); + CONVERT_OF(lbits, fbits)(&zgsz3324, zgaz396, UINT64_C(1), true); + lbits zgsz3325; + CREATE(lbits)(&zgsz3325); + append(&zgsz3325, zgsz3323, zgsz3324); + zb2 = CONVERT_OF(fbits, lbits)(zgsz3325, true); + KILL(lbits)(&zgsz3325); + KILL(lbits)(&zgsz3324); + KILL(lbits)(&zgsz3323); + } + } + { + bool zgaz386; + { + bool zgaz385; + { + int64_t zgaz383; + { + sail_int zgsz3326; + CREATE(sail_int)(&zgsz3326); + CONVERT_OF(sail_int, mach_int)(&zgsz3326, zCAP_MAX_EXPONENT); + sail_int zgsz3327; + CREATE(sail_int)(&zgsz3327); + CONVERT_OF(sail_int, mach_int)(&zgsz3327, INT64_C(1)); + sail_int zgsz3328; + CREATE(sail_int)(&zgsz3328); + sub_int(&zgsz3328, zgsz3326, zgsz3327); + zgaz383 = CONVERT_OF(mach_int, sail_int)(zgsz3328); + KILL(sail_int)(&zgsz3328); + KILL(sail_int)(&zgsz3327); + KILL(sail_int)(&zgsz3326); + } + { + sail_int zgsz3330; + CREATE(sail_int)(&zgsz3330); + CONVERT_OF(sail_int, mach_int)(&zgsz3330, zgaz383); + sail_int zgsz3329; + CREATE(sail_int)(&zgsz3329); + CONVERT_OF(sail_int, mach_int)(&zgsz3329, zexp); + zgaz385 = lt(zgsz3329, zgsz3330); + KILL(sail_int)(&zgsz3330); + KILL(sail_int)(&zgsz3329); + } + } + bool zgsz3334; + if (zgaz385) { + uint64_t zgaz384; + { + lbits zgsz3331; + CREATE(lbits)(&zgsz3331); + CONVERT_OF(lbits, fbits)(&zgsz3331, zl2, UINT64_C(2), true); + lbits zgsz3332; + CREATE(lbits)(&zgsz3332); + CONVERT_OF(lbits, fbits)(&zgsz3332, zb2, UINT64_C(2), true); + lbits zgsz3333; + CREATE(lbits)(&zgsz3333); + sub_bits(&zgsz3333, zgsz3331, zgsz3332); + zgaz384 = CONVERT_OF(fbits, lbits)(zgsz3333, true); + KILL(lbits)(&zgsz3333); + KILL(lbits)(&zgsz3332); + KILL(lbits)(&zgsz3331); + } + zgsz3334 = + sailgen_zzzz7NzzJzzK2z3CapUnsignedGreaterThan(zgaz384, UINT64_C(0b01)); + + } else { + zgsz3334 = false; + } + zgaz386 = zgsz3334; + } + unit zgsz3335; + if (zgaz386) { + fbits zgaz390; + { + uint64_t zgaz389; + { + uint64_t zgaz388; + { + fbits zgaz387; + { + sail_int zgsz3336; + CREATE(sail_int)(&zgsz3336); + CONVERT_OF(sail_int, mach_int)(&zgsz3336, INT64_C(64)); + zgaz387 = bitvector_access(zlimit, zgsz3336); + KILL(sail_int)(&zgsz3336); + } + uint64_t zgsz3337; + zgsz3337 = UINT64_C(0b0); + zgsz3337 = update_fbits(zgsz3337, INT64_C(0), zgaz387); + zgaz388 = zgsz3337; + } + { + lbits zgsz3338; + CREATE(lbits)(&zgsz3338); + CONVERT_OF(lbits, fbits)(&zgsz3338, zgaz388, UINT64_C(1), true); + lbits zgsz3339; + CREATE(lbits)(&zgsz3339); + not_bits(&zgsz3339, zgsz3338); + zgaz389 = CONVERT_OF(fbits, lbits)(zgsz3339, true); + KILL(lbits)(&zgsz3339); + KILL(lbits)(&zgsz3338); + } + } + zgaz390 = sailgen_Bit(zgaz389); + } + { + sail_int zgsz3340; + CREATE(sail_int)(&zgsz3340); + CONVERT_OF(sail_int, mach_int)(&zgsz3340, INT64_C(64)); + update_lbits(&zlimit, zlimit, zgsz3340, zgaz390); + KILL(sail_int)(&zgsz3340); + } + zgsz3335 = UNIT; + + } else { + zgsz3335 = UNIT; + } + } + struct ztuple_z8z5bvzCz0z5bvzCz0z5boolz9 zgaz394; + CREATE(ztuple_z8z5bvzCz0z5bvzCz0z5boolz9)(&zgaz394); + { + lbits zgaz392; + CREATE(lbits)(&zgaz392); + { + uint64_t zgaz391; + { + sail_int zgsz3341; + CREATE(sail_int)(&zgsz3341); + CONVERT_OF(sail_int, mach_int)(&zgsz3341, INT64_C(63)); + sail_int zgsz3342; + CREATE(sail_int)(&zgsz3342); + CONVERT_OF(sail_int, mach_int)(&zgsz3342, INT64_C(0)); + lbits zgsz3343; + CREATE(lbits)(&zgsz3343); + vector_subrange_lbits(&zgsz3343, zbase, zgsz3341, zgsz3342); + zgaz391 = CONVERT_OF(fbits, lbits)(zgsz3343, true); + KILL(lbits)(&zgsz3343); + KILL(sail_int)(&zgsz3342); + KILL(sail_int)(&zgsz3341); + } + { + lbits zgsz3345; + CREATE(lbits)(&zgsz3345); + CONVERT_OF(lbits, fbits)(&zgsz3345, zgaz391, UINT64_C(64), true); + lbits zgsz3344; + CREATE(lbits)(&zgsz3344); + CONVERT_OF(lbits, fbits)(&zgsz3344, UINT64_C(0b0), UINT64_C(1), true); + append(&zgaz392, zgsz3344, zgsz3345); + KILL(lbits)(&zgsz3345); + KILL(lbits)(&zgsz3344); + } + } + lbits zgaz393; + CREATE(lbits)(&zgaz393); + { + sail_int zgsz3347; + CREATE(sail_int)(&zgsz3347); + CONVERT_OF(sail_int, mach_int)(&zgsz3347, INT64_C(0)); + sail_int zgsz3346; + CREATE(sail_int)(&zgsz3346); + CONVERT_OF(sail_int, mach_int)(&zgsz3346, INT64_C(64)); + vector_subrange_lbits(&zgaz393, zlimit, zgsz3346, zgsz3347); + KILL(sail_int)(&zgsz3347); + KILL(sail_int)(&zgsz3346); + } + struct ztuple_z8z5bvzCz0z5bvzCz0z5boolz9 zgsz3348; + CREATE(ztuple_z8z5bvzCz0z5bvzCz0z5boolz9)(&zgsz3348); + COPY(lbits)(&((&zgsz3348)->ztup0), zgaz392); + COPY(lbits)(&((&zgsz3348)->ztup1), zgaz393); + zgsz3348.ztup2 = true; + COPY(ztuple_z8z5bvzCz0z5bvzCz0z5boolz9)(&zgaz394, zgsz3348); + KILL(ztuple_z8z5bvzCz0z5bvzCz0z5boolz9)(&zgsz3348); + KILL(lbits)(&zgaz393); + KILL(lbits)(&zgaz392); + } + COPY(ztuple_z8z5bvzCz0z5bvzCz0z5boolz9)((*(&zcbz314)), zgaz394); + goto cleanup_101; + /* unreachable after return */ + KILL(ztuple_z8z5bvzCz0z5bvzCz0z5boolz9)(&zgaz394); + + goto finish_match_98; + goto end_cleanup_102; + cleanup_101:; + + KILL(ztuple_z8z5bvzCz0z5bvzCz0z5boolz9)(&zgsz3167); + + KILL(lbits)(&zbase); + KILL(lbits)(&zlimit); + + KILL(lbits)(&za); + + KILL(ztuple_z8z5bvzCz0z5bvzCz0z5boolz9)(&zgsz3271); + + KILL(ztuple_z8z5bvzCz0z5bvzCz0z5boolz9)(&zgsz3273); + + KILL(ztuple_z8z5bvzCz0z5bvzCz0z5boolz9)(&zgsz3275); + + KILL(ztuple_z8z5bvzCz0z5bvzCz0z5boolz9)(&zgsz3279); + + KILL(ztuple_z8z5bvzCz0z5bvzCz0z5boolz9)(&zgsz3283); + + KILL(ztuple_z8z5bvzCz0z5bvzCz0z5boolz9)(&zgaz394); + goto end_function_100; + end_cleanup_102:; + } + case_99:; + sail_match_failure("CapGetBounds"); + finish_match_98:; + COPY(ztuple_z8z5bvzCz0z5bvzCz0z5boolz9)(&zgsz3279, zgsz3283); + KILL(ztuple_z8z5bvzCz0z5bvzCz0z5boolz9)(&zgsz3283); + + goto finish_match_96; + } + case_97:; + sail_match_failure("CapGetBounds"); + finish_match_96:; + COPY(ztuple_z8z5bvzCz0z5bvzCz0z5boolz9)(&zgsz3275, zgsz3279); + KILL(ztuple_z8z5bvzCz0z5bvzCz0z5boolz9)(&zgsz3279); + + goto finish_match_94; + } + case_95:; + sail_match_failure("CapGetBounds"); + finish_match_94:; + COPY(ztuple_z8z5bvzCz0z5bvzCz0z5boolz9)(&zgsz3273, zgsz3275); + KILL(ztuple_z8z5bvzCz0z5bvzCz0z5boolz9)(&zgsz3275); + + goto finish_match_92; + } + case_93:; + sail_match_failure("CapGetBounds"); + finish_match_92:; + COPY(ztuple_z8z5bvzCz0z5bvzCz0z5boolz9)(&zgsz3271, zgsz3273); + KILL(ztuple_z8z5bvzCz0z5bvzCz0z5boolz9)(&zgsz3273); + + goto finish_match_90; + } + case_91:; + sail_match_failure("CapGetBounds"); + finish_match_90:; + COPY(ztuple_z8z5bvzCz0z5bvzCz0z5boolz9)(&zgsz3167, zgsz3271); + KILL(ztuple_z8z5bvzCz0z5bvzCz0z5boolz9)(&zgsz3271); + + KILL(lbits)(&za); + + KILL(lbits)(&zlimit); + KILL(lbits)(&zbase); + + goto finish_match_88; + } +case_89:; + sail_match_failure("CapGetBounds"); +finish_match_88:; + COPY(ztuple_z8z5bvzCz0z5bvzCz0z5boolz9)((*(&zcbz314)), zgsz3167); + KILL(ztuple_z8z5bvzCz0z5bvzCz0z5boolz9)(&zgsz3167); + +end_function_100:; + goto end_function_128; +end_block_exception_107:; + goto end_function_128; +end_function_128:; +} + +static int64_t zCAP_TAG_BIT; +static void create_letbind_19(void) { + + int64_t zgsz3355; + zgsz3355 = INT64_C(128); + zCAP_TAG_BIT = zgsz3355; + +let_end_108:; +} +static void kill_letbind_19(void) {} + +static int64_t zCAP_OTYPE_HI_BIT; +static void create_letbind_20(void) { + + int64_t zgsz3356; + zgsz3356 = INT64_C(109); + zCAP_OTYPE_HI_BIT = zgsz3356; + +let_end_109:; +} +static void kill_letbind_20(void) {} + +static int64_t zCAP_OTYPE_LO_BIT; +static void create_letbind_21(void) { + + int64_t zgsz3357; + zgsz3357 = INT64_C(95); + zCAP_OTYPE_LO_BIT = zgsz3357; + +let_end_110:; +} +static void kill_letbind_21(void) {} + +static uint64_t sailgen_CapGetObjectType(lbits); + +static uint64_t sailgen_CapGetObjectType(lbits zc) { + __label__ cleanup_113, end_cleanup_114, end_function_112, end_block_exception_115; + + uint64_t zcbz315; + uint64_t zgaz3108; + { + uint64_t zgaz3107; + { + sail_int zgsz3358; + CREATE(sail_int)(&zgsz3358); + CONVERT_OF(sail_int, mach_int)(&zgsz3358, zCAP_OTYPE_HI_BIT); + sail_int zgsz3359; + CREATE(sail_int)(&zgsz3359); + CONVERT_OF(sail_int, mach_int)(&zgsz3359, zCAP_OTYPE_LO_BIT); + lbits zgsz3360; + CREATE(lbits)(&zgsz3360); + vector_subrange_lbits(&zgsz3360, zc, zgsz3358, zgsz3359); + zgaz3107 = CONVERT_OF(fbits, lbits)(zgsz3360, true); + KILL(lbits)(&zgsz3360); + KILL(sail_int)(&zgsz3359); + KILL(sail_int)(&zgsz3358); + } + { + lbits zgsz3361; + CREATE(lbits)(&zgsz3361); + CONVERT_OF(lbits, fbits)(&zgsz3361, zgaz3107, UINT64_C(15), true); + sail_int zgsz3362; + CREATE(sail_int)(&zgsz3362); + CONVERT_OF(sail_int, mach_int)(&zgsz3362, zCAP_VALUE_NUM_BITS); + lbits zgsz3363; + CREATE(lbits)(&zgsz3363); + zero_extend(&zgsz3363, zgsz3361, zgsz3362); + zgaz3108 = CONVERT_OF(fbits, lbits)(zgsz3363, true); + KILL(lbits)(&zgsz3363); + KILL(sail_int)(&zgsz3362); + KILL(lbits)(&zgsz3361); + } + } + zcbz315 = zgaz3108; + goto cleanup_113; + /* unreachable after return */ + + goto end_cleanup_114; +cleanup_113:; + + goto end_function_112; +end_cleanup_114:; +end_function_112:; + return zcbz315; +end_block_exception_115:; + + return UINT64_C(0xdeadc0de); +} + +static int64_t zCAP_PERMS_HI_BIT; +static void create_letbind_22(void) { + + int64_t zgsz3364; + zgsz3364 = INT64_C(127); + zCAP_PERMS_HI_BIT = zgsz3364; + +let_end_116:; +} +static void kill_letbind_22(void) {} + +static int64_t zCAP_PERMS_LO_BIT; +static void create_letbind_23(void) { + + int64_t zgsz3365; + zgsz3365 = INT64_C(110); + zCAP_PERMS_LO_BIT = zgsz3365; + +let_end_117:; +} +static void kill_letbind_23(void) {} + +static uint64_t sailgen_CapGetPermissions(lbits); + +static uint64_t sailgen_CapGetPermissions(lbits zc) { + __label__ cleanup_120, end_cleanup_121, end_function_119, end_block_exception_122; + + uint64_t zcbz316; + uint64_t zgaz3109; + { + sail_int zgsz3366; + CREATE(sail_int)(&zgsz3366); + CONVERT_OF(sail_int, mach_int)(&zgsz3366, zCAP_PERMS_HI_BIT); + sail_int zgsz3367; + CREATE(sail_int)(&zgsz3367); + CONVERT_OF(sail_int, mach_int)(&zgsz3367, zCAP_PERMS_LO_BIT); + lbits zgsz3368; + CREATE(lbits)(&zgsz3368); + vector_subrange_lbits(&zgsz3368, zc, zgsz3366, zgsz3367); + zgaz3109 = CONVERT_OF(fbits, lbits)(zgsz3368, true); + KILL(lbits)(&zgsz3368); + KILL(sail_int)(&zgsz3367); + KILL(sail_int)(&zgsz3366); + } + zcbz316 = zgaz3109; + goto cleanup_120; + /* unreachable after return */ + + goto end_cleanup_121; +cleanup_120:; + + goto end_function_119; +end_cleanup_121:; +end_function_119:; + return zcbz316; +end_block_exception_122:; + + return UINT64_C(0xdeadc0de); +} + +static uint64_t sailgen_CapGetTag(lbits); + +static uint64_t sailgen_CapGetTag(lbits zc) { + __label__ cleanup_125, end_cleanup_126, end_function_124, end_block_exception_127; + + uint64_t zcbz317; + uint64_t zgaz3112; + { + uint64_t zgaz3111; + { + fbits zgaz3110; + { + sail_int zgsz3369; + CREATE(sail_int)(&zgsz3369); + CONVERT_OF(sail_int, mach_int)(&zgsz3369, zCAP_TAG_BIT); + zgaz3110 = bitvector_access(zc, zgsz3369); + KILL(sail_int)(&zgsz3369); + } + uint64_t zgsz3370; + zgsz3370 = UINT64_C(0b0); + zgsz3370 = update_fbits(zgsz3370, INT64_C(0), zgaz3110); + zgaz3111 = zgsz3370; + } + { + lbits zgsz3371; + CREATE(lbits)(&zgsz3371); + CONVERT_OF(lbits, fbits)(&zgsz3371, zgaz3111, UINT64_C(1), true); + sail_int zgsz3372; + CREATE(sail_int)(&zgsz3372); + CONVERT_OF(sail_int, mach_int)(&zgsz3372, INT64_C(64)); + lbits zgsz3373; + CREATE(lbits)(&zgsz3373); + zero_extend(&zgsz3373, zgsz3371, zgsz3372); + zgaz3112 = CONVERT_OF(fbits, lbits)(zgsz3373, true); + KILL(lbits)(&zgsz3373); + KILL(sail_int)(&zgsz3372); + KILL(lbits)(&zgsz3371); + } + } + zcbz317 = zgaz3112; + goto cleanup_125; + /* unreachable after return */ + + goto end_cleanup_126; +cleanup_125:; + + goto end_function_124; +end_cleanup_126:; +end_function_124:; + return zcbz317; +end_block_exception_127:; + + return UINT64_C(0xdeadc0de); +} + +static void model_init(void) { + setup_rts(); + create_letbind_0(); + create_letbind_1(); + create_letbind_2(); + create_letbind_3(); + create_letbind_4(); + create_letbind_5(); + create_letbind_6(); + create_letbind_7(); + create_letbind_8(); + create_letbind_9(); + create_letbind_10(); + create_letbind_11(); + create_letbind_12(); + create_letbind_13(); + create_letbind_14(); + create_letbind_15(); + create_letbind_16(); + create_letbind_17(); + create_letbind_18(); + create_letbind_19(); + create_letbind_20(); + create_letbind_21(); + create_letbind_22(); + create_letbind_23(); +} + +static void model_fini(void) { + kill_letbind_23(); + kill_letbind_22(); + kill_letbind_21(); + kill_letbind_20(); + kill_letbind_19(); + kill_letbind_18(); + kill_letbind_17(); + kill_letbind_16(); + kill_letbind_15(); + kill_letbind_14(); + kill_letbind_13(); + kill_letbind_12(); + kill_letbind_11(); + kill_letbind_10(); + kill_letbind_9(); + kill_letbind_8(); + kill_letbind_7(); + kill_letbind_6(); + kill_letbind_5(); + kill_letbind_4(); + kill_letbind_3(); + kill_letbind_2(); + kill_letbind_1(); + kill_letbind_0(); + cleanup_rts(); +} |